Snyk 보안 연구원의 악성 NPM 패키지 배포 매일 아침, 필자는 전날 밤에 탐지된 악성 패키지를 확인함. 이는 마치 어부가 그물에 잡힌 물고기를 확인하는 것과 같음. 최근 Snyk의 한 사용자가 Cursor.com을 대상으로 하는 여러 패키지를 NPM에 배포한 것을 발견함. 이 패키지들은 "cursor-retreival", "cursor-always-local", "cursor-shadow-workspace"와 같은 이름을 가짐. 이러한 패키지를 설치하면 시스템 데이터를 수집하여 공격자가 제어하는 웹 서비스로 전송함. 패키지의 작동 방식 패키지는 env 명령어의 출력을 수집하여 AWS 키, NPM 토큰, GitHub 자격 증명 등 민감한 정보를 노출시킴. 수집된 데이터는 공격자가 소유한 웹사이트로 전송됨. 의도된 공격 이러한 패키지는 특정 회사에 대한 의존성 혼동 공격을 시도하는 것으로 보임. Cursor.com이 버그 바운티 프로그램을 운영하는지는 알 수 없으나, Cursor 직원이 실수로 이러한 공개 패키지를 설치하도록 유도하는 것으로 추측됨. 악성 패키지 식별 OpenSSF 패키지 분석 스캐너가 이 패키지를 악성으로 식별함. OSV는 MAL-2025-27, MAL-2025-28, MAL-2025-29라는 3개의 악성 소프트웨어 권고를 생성함. 패키지 배포자 NPM 패키지 메타데이터에 따르면, Snyk Security Labs 팀의 snyk.io 이메일 주소를 사용하는 사용자가 패키지를 게시함. 메타데이터의 작성자 필드에 Snyk의 직원이 언급되어 있으며, 이는 위조될 수 있지만 게시자는 인증된 Snyk 이메일을 사용함. 대응 방법 NPM에 경고했으나 아직 악성으로 표시되지 않았으며, 대부분의 소프트웨어 공급망 보안 도구는 패키지가 악성임을 알기 전까지 보호할 수 없음. NPM 패키지를 무작정 설치하지 않는 것이 좋으며, 패키지의 정당성을 판단할 수 있는 신호를 알아두는 것이 중요함. 모든 패키지는 package.json과 index.js(또는 main.js) 두 파일만 포함하고 있음. 이는 패키지의 정당성을 판단하는 여러 신호 중 하나임. NPM이 이러한 패키지를 곧 제거할 것으로 기대함.
Snyk 보안 연구원의 악성 NPM 패키지 배포
패키지의 작동 방식
의도된 공격
악성 패키지 식별
패키지 배포자
대응 방법