최근 'ChainDrop'이라는 자기 전파형 악성코드가 Node Package Manager(npm) 레지스트리의 1,300개 이상의 패키지를 감염시켰으며, 이들 패키지는 월 20억 건 이상의 다운로드를 기록하는 것으로 나타났다. 이번 공격은 Keyv, Cacheable, flat-cache, file-entry-cache 등 인기 캐싱 유틸리티 패키지의 유지관리자 GitHub 계정이 탈취되면서 시작되었고, Deliveroo, Ornikar, OneReach, Picsart, Qlik, ServiceTitan 등 주요 기업과 연관된 패키지로 빠르게 확산되었다.
보안업체 Aikido 등은 공격자가 프로젝트 메인 브랜치에 악성 파일을 직접 삽입하고, 정상적인 GitHub Actions 워크플로우를 통해 새로운 패키지 릴리스를 배포했다고 밝혔다. 감염된 패키지에는 setup.mjs 페이로드 드로퍼와 Math_Symbol.js(또는 math_init.js) 정보 탈취 스크립트가 포함되어 있으며, npm install 명령 실행 시 자동으로 악성코드가 동작한다. 이 악성코드는 Bun JavaScript 런타임을 공식 GitHub에서 다운로드해 Math_Symbol.js를 실행하고, 개발자 및 클라우드 자격증명 등 민감 정보를 암호화해 외부 GitHub 저장소로 전송한다.
ChainDrop은 감염된 환경에서 추가 패키지로 전파될 수 있는 자기 복제 기능을 갖추고 있으며, AWS, GitHub, Kubernetes, HashiCorp Vault, Stripe, Slack, Twilio, Azure, GCP 등 다양한 서비스의 자격증명과 비밀 정보를 수집한다. 보안업체들은 npm-cache[.]com 도메인을 데이터 유출 지표로 지목하며, 감염된 시스템은 안전한 백업에서 재구축하고 모든 토큰을 교체할 것을 권고한다. 공격이 현재도 진행 중이므로, 의존성 화이트리스트, 무결성 검사, 출처 검증 등 보안 조치를 강화해야 한다.
요약
- ChainDrop 악성코드가 npm의 1,300여 개 인기 패키지를 감염시켜 공급망 공격이 확산되고 있다.
- 공격자는 유지관리자의 GitHub 계정을 탈취해 악성코드를 정상 릴리스로 배포했다.
- 감염된 패키지는 설치 시 자동으로 정보 탈취 스크립트를 실행한다.
- 다양한 클라우드 및 개발자 자격증명이 유출될 수 있어, 감염 시 시스템 재구축과 토큰 교체가 필요하다.
- 공격이 계속되고 있어, 보안 조치와 감염 패키지 목록 확인이 필수적이다.
Reference
※ 이 글은 생성형 AI(gpt4.1)에 의해 요약되었습니다.