- Polyfill.js 는 오래된 브라우저 지원을 위한 오픈 소스 라이브러리로, 10만 개 이상의 사이트에서 사용 중
- 올해 2월, 중국 회사가 Polyfill.js의 도메인과 Github 계정을 인수한 후, 해당 도메인을 통해 모바일 기기에 악성코드를 주입하기 시작
- 6월 25일 업데이트: 구글이 이미 polyfill.io를 사용하는 전자상거래 사이트의 구글 광고를 차단 시작함
- 공격 방식: HTTP 헤더를 기반으로 동적으로 생성된 코드가 특정 모바일 기기에서 특정 시간에만 활성화되며, 관리자 사용자나 웹 분석 서비스가 감지되면 실행을 지연함
- 악성코드 예시: 모바일 사용자를 가짜 구글 애널리틱스 도메인(www. googie-anaiytics .com)을 통해 스포츠 베팅 사이트로 리디렉션함.
- 대응 방안: Polyfill.js의 원 저자는 현대 브라우저에서는 더 이상 필요하지 않으므로 더 이상 이 라이브러리를 사용하지 말 것을 권장하며, Fastly와 Cloudflare가 신뢰할 수 있는 대안을 제공함.
- 이 사건은 전형적인 공급망 공격의 사례임.
- 추가 도구: Sansec의 무료 CSP 모니터링 서비스인 Sansec Watch와 eComscan 백엔드 스캐너가 Polyfill.io 탐지를 지원
GN⁺의 의견
- 공급망 공격의 위험성: 오픈 소스 프로젝트가 인수되면서 발생할 수 있는 보안 위험을 잘 보여주는 사례임. 특히, 많은 사이트에서 사용되는 라이브러리일수록 피해가 클 수 있음.
- 대안 라이브러리 사용: Fastly와 Cloudflare 같은 신뢰할 수 있는 대안을 사용하는 것이 중요함. 또한, 최신 브라우저 지원이 충분하다면 Polyfill.js 사용을 중단하는 것도 고려할 만함.
- 보안 모니터링 필요성: CSP 모니터링 서비스와 같은 보안 도구를 사용하여 코드 변경 사항을 실시간으로 감시하는 것이 중요함.
- 관리자 감지 및 지연 실행: 악성코드가 관리자나 분석 서비스를 감지하고 실행을 지연하는 방식은 보안 솔루션을 우회하려는 시도로, 이에 대한 대응 방안이 필요함.
- 교육과 인식 제고: 개발자와 운영자들이 공급망 공격의 위험성을 인식하고, 주기적인 보안 교육과 최신 보안 동향을 파악하는 것이 중요함.
https://news.hada.io/topic?id=15118
약 한 달 전에 이 문제가 GN에서 다뤄진 것을 보고 관심을 가지고 지켜보고 있습니다. 문제의 원인이 어느 정도 밝혀지더라도, 수습과 후속 조치가 필요한 시간 동안 많은곳이 계속 공격에 노출될 수밖에 없는 구조로 느껴집니다. 침해사고는 계속 늘어나고 보안 전문가들은 부족해지는 현상이 당분간 더 심해질 것 같은 우려가 드네요,
Hacker News 의견
-
공개 CDN 사용의 위험성: 공개 CDN을 사용하면 모바일 기기에 악성코드가 주입될 수 있음. 이를 줄이기 위해 SRI(Subresource Integrity)를 사용할 수 있지만, 가장 좋은 해결책은 CDN 서비스를 통해 직접 호스팅하는 것임.
-
게임 이론적 관점: 오픈 소스 소프트웨어 유지보수는 보상 없이 많은 사이트를 지원해야 하며, 이는 결국 보안 문제를 야기할 수 있음.
-
워싱턴 포스트와 폭스 뉴스의 외부 콘텐츠: 두 웹사이트 모두 많은 외부 콘텐츠를 포함하고 있으며, 이는 공격 대상이 될 수 있음.
-
클라우드플레어의 예측: 클라우드플레어는 이미 이러한 문제를 예측하고, 이를 줄이기 위한 솔루션을 제공함.
-
폴리필 서비스의 창시자 의견: 폴리필 서비스 프로젝트를 만들었지만 도메인 소유권은 없었으며, 현재 도메인은 악성코드를 주입하고 있음. 즉시 사용 중지 권고.
-
예상된 문제: 4개월 전부터 예상된 문제였으며, 더 많은 사람들이 이를 인지하고 대처했어야 했음.
-
스포츠 도박 사이트로 리디렉션: 사용자가 원하지 않는 사이트로 리디렉션되는 경우가 있으며, 이는 일부 사용자에게 효과적일 수 있음.
-
SRI 언급 부족: 기사에서 SRI에 대한 언급이 없다는 점이 놀라움. SRI는 저비용 고효율의 해결책임.
-
개발자와의 대화: 많은 개발자들이 CDN 하이재킹에 대해 무관심하며, 이는 보안 문제를 야기할 수 있음.
-
자체 호스팅 권장: 항상 의존성을 직접 호스팅하는 것이 좋으며, 이는 사용자 프라이버시 보호에도 도움됨.