Akamai의 관점에서 들여다본 Polyfill 공격
편집 및 추가 설명: 트리샤 하워드(Tricia Howard)
polyfill.io 공급망 공격: 개요
최근 보안 커뮤니티에는 웹 애플리케이션에 polyfill(기본적으로 지원하지 않는 구형 브라우저에서도 최신 기능을 사용할 수 있게 하는 자바스크립트 코드)을 제공하는 서비스인 polyfill.io와 관련된 심각한 공급망 공격 이 알려졌습니다. 자세한 보고서에 따르면, 이 공격은 100000개 이상의 웹사이트에 영향을 미쳤으며, 악성 코드 전파를 위해 polyfill.io 서비스에 대한 신뢰와 광범위한 사용을 악용했습니다.
이 공격에서는 중국에 있는 것으로 보이는 악의적인 공격자가 몇 달 전 가장 인기 있는 polyfill 오픈 소스 프로젝트 중 하나를 획득한 후 배포된 polyfill에 악성 스크립트를 삽입해 polyfill 자바스크립트 코드를 감염시켰습니다. 이 공격은 주로 모바일 디바이스를 표적으로 삼았으며, 세션을 선택적으로 샘플링해 은밀하고 탐지하기 어렵게 만들었습니다. 그런 다음 이 악성 코드는 리디렉션 공격에 사용되어 사용자를 사기 사이트로 유도했습니다.
개발자가 이러한 감염된 polyfill을 웹사이트에 통합하면서 자신도 모르게 애플리케이션에 악성 코드를 도입한 것입니다. 이 블로그 게시물에서는 이 특정 공격과 공급망 공격 전반에 대해 논의하고 Akamai Client-Side Protection & Compliance 관점에서 관찰한 독점 데이터에 대해 설명합니다.
공급망 공격이란 무엇일까요?
공급망 공격은 기업의 공급망 내 취약점을 표적으로 삼습니다. 온라인 웹 애플리케이션의 맥락에서 최신 웹사이트는 일반 사이트 기능의 일부로 수십 개의 써드파티 리소스를 로딩합니다. 이러한 리소스는 웹사이트 소유자가 신뢰하며 일반적으로 문서 객체 모델(DOM), 쿠키 및 최종 사용자가 입력한 민감한 정보를 포함해 페이지에 대한 전체 접속 권한을 가지며,
그 수가 많고 자주 변경되며 클라이언트 측 가시성의 부족으로 인해 모니터링 및 추적이 매우 어렵습니다. 공격자는 이러한 써드파티 서비스를 사용해 웹 애플리케이션을 감염시키는 데 이러한 신뢰를 악용할 수 있습니다. 이러한 공격은 일반적으로 정상적인 써드파티 라이브러리나 서비스에 악성 코드를 삽입한 후 최종 사용자에게 무의식적으로 배포하는 방식으로 이루어집니다.
Akamai Security Intelligence Group이 실시한 리서치에 따르면, 이커머스 웹사이트에 사용되는 자바스크립트의 50%는 써드파티 소스에서 비롯됩니다. Akamai는 고객의 결제 페이지에서 평균적으로 수십 곳의 서로 다른 써드파티 벤더사의 코드를 관찰하며, 이제 새로운 PCI DSS v4.0 요구사항 6.4.3 및 11.6.1을 준수해야 합니다.
Akamai의 관점에서 본 polyfill 공격
polyfill 공격은 표적 웹사이트를 통해 cdn.polyfill.io에서 시작된 자바스크립트 코드로 전달됩니다. 이 공격은 서버 측과 클라이언트 측 샘플링을 모두 사용합니다. 서버 측에서는 사용자 에이전트와 같은 요청 헤더를 검사해 특정 조건의 모바일 디바이스만 표적으로 삼습니다. 다른 디바이스의 경우, polyfill 서버는 오리진 polyfill 코드를, 최신 브라우저의 경우 빈 응답을 처리합니다.
샘플링 프로세스는 서버 측에만 국한되지 않습니다. 이 코드는 실행 중에 자체 자바스크립트를 사용해 클라이언트 측의 디바이스 종류도 확인합니다. 또한, 페이지 리퍼러와 로컬 디바이스 시간을 기준으로 표적을 선택합니다. 악성 자바스크립트가 공격을 실행하면 googie-anaiytics[.]com에 있는 서버와 통신합니다.
Akamai는 웹 페이지에서 서버와의 통신을 포함해 악성 자바스크립트의 실행을 모니터링할 수 있었습니다. 의심스러운 활동이 탐지되면 영향을 받은 고객에게 알림이 트리거되었습니다. 모든 위협의 핵심은 민첩성이며, 공격의 폭발 반경을 제한하기 위해서는 신속한 대응 능력이 가장 중요합니다.
Client-Side Protection & Compliance 스크립트 행동 정책은 이 통신을 차단해 이 공격 경로의 진행을 거부하도록 정의되었습니다. 그림 1은 이에 대한 실제 사례로 이 공격 경로의 거부가 정책이 활성화된 직후 실시간으로 발생한 것을 보여줍니다.
공격 전후의 polyfill.io 사용 트렌드
Akamai는 40곳 이상의 고객이 polyfill.io에서 리소스를 로딩한 것을 확인했습니다. 이러한 고객 중 일부는 매일 수만 개의 페이지에 영향을 받았습니다(그림 2). 이 수치에는 polyfill.io의 자바스크립트 리소스를 직접 사용한 고객, 이 코드를 실행의 일부로 포함시킨 써드파티, 최종 사용자의 브라우저 확장 프로그램에서 생성된 리소스가 포함됩니다.
데이터는 퍼스트파티 또는 써드파티의 자바스크립트 실행을 실시간으로 적극적으로 모니터링 및 분석해 문제 해결에 걸리는 시간을 단축하는 Akamai Client-Side Protection & Compliance에서 가져온 것입니다.
Akamai는 관련 고객에게 공격에 대한 보안 알림을 제공하는 등의 방식으로 공격에 효과적으로 대응하고 공격의 영향을 방어하고자 고객과 긴밀히 협력하고 있습니다. 이러한 선제적 접근 방식을 통해 감염된 도메인 이름에서 발생하는 리소스가 많이 감소해 Akamai 고객의 리스크 노출이 감소했습니다.
공급망 공격에 대한 도움이 필요하신가요?
Akamai Client-Side Protection & Compliance 는 공급망 공격을 포함해 퍼스트파티 및 써드파티 소스에서 발생하는 클라이언트 측 공격으로부터 고객을 보호하도록 설계되었습니다.
이 솔루션은 웹 애플리케이션의 자바스크립트 리소스를 모니터링하고, 실시간으로 실행을 분석하며, 의심스러운 행동 여부를 판단합니다. 또한, 스크립트 행동 비정상을 탐지해 웹 애플리케이션에서 로딩 및 실행되는 모든 자바스크립트 리소스에 대한 자세한 분석을 제공합니다.
게다가, Client-Side Protection & Compliance는 악성 스크립트 실행을 몇 초 내에 방지하는 실시간 방어 기능을 제공합니다. 보안팀은 의심스러운 행동을 차단하기 위해 웹 애플리케이션의 코드를 변경할 필요 없이 공격에 대한 응답 시간을 획기적으로 개선할 수 있습니다. 이 솔루션은 polyfill.io 공격과 영향을 받는 사용자 세션을 탐지한 다음 공격 실행을 중단시킬 수 있습니다.
브라우저 내 탐지 및 방어의 이점
이 공격은 특히 흔하지 않은 사용자 에이전트 브라우저를 사용하는 세션을 필터링해 소수의 세션만을 표적으로 삼았기 때문에, 웹사이트에서 합성 스캔만 수행하는 솔루션은 이 공격 흐름을 놓쳤을 수 있습니다. Akamai Client-Side Protection & Compliance의 주요 이점 중 하나는 모든 사용자 세션에 대해 브라우저 내부에서 실행되어이러한 표적화된 특정 세션이 시작된 경우에도 악성 자바스크립트 실행을 탐지하고 보안 정책이 활성화되면 페이지에서 공격 실행을 차단한다는 점입니다(그림 3).
결론
polyfill.io 공급망 공격은 최신 웹 애플리케이션 개발에 내재된 심각한 취약점을 잘 보여줍니다. 써드파티 리소스에 의존하면 모든 적절한 보안 조치가 마련되어 있더라도 의도치 않게 보안 리스크가 발생할 수 있습니다. 100000개 이상의 웹사이트가 연루된 이 인시던트는 신뢰할 수 있는 서비스가 쉽게 감염되어 악성 코드를 유포하고 사용자 보안과 신뢰를 약화시킬 수 있다는 점을 잘 보여줍니다.
Akamai Security Intelligence Group은 고객과 보안 커뮤니티 전반을 위해 이러한 위협을 모니터링합니다. Akamai는 앞으로도 위협 생태계를 지속적으로 관찰하고, 그 내용을 문서로 제공할 것입니다. 실시간 업데이트를 보려면 X(기존의 Twitter)에서 Akamai를 팔로우하거나 Akamai의 보안 리서치 페이지를 방문하세요.