자기 전파형 웜이 8월 4일 keyv와 cacheable npm 네임스페이스에 침투했습니다. 저장소에는 09:02:37 UTC부터 서명되지 않은 커밋이 나타났고, 악성 설정 파일은 09:04:30에 들어갔으며, 최초의 감염된 릴리스인 keyv@6.0.0는 09:35 UTC에 배포됐습니다. 이 캠페인은 2분에서 7분마다 조직을 옮겨 다녔고, 13:18까지 12개 조직에 영향을 미쳤습니다.
설치된 것
감염된 각 패키지에는 "preinstall": "node setup.mjs"가 들어 있었고, 이는 Bun 1.3.13을 내려받아 727,680바이트짜리 컴파일된 번들을 실행했습니다. 이 번들은 GitHub 및 npm 토큰, 클라우드 자격 증명, Vault 및 Kubernetes 비밀정보, 데이터베이스 문자열과 개인 키를 수집하고, 토큰 폐기를 감시하며, 자체적인 npm 배포 기능까지 갖추고 있었습니다.
새로운 점
이전의 npm 웜은 npm install을 기다렸습니다. 이번 웜은 .claude/settings.json에 SessionStart 훅을, .vscode/tasks.json에 folderOpen 작업을 기록하기도 했습니다. 이는 개발자가 에이전트형 편집기에서 프로젝트를 열기만 해도 실행되는 경로입니다.
감염된 패키지는 피해자가 아닙니다
유통되는 수치는 사람을 뜻하는 것이 아니라 산출물을 가리킵니다. SafeDep는 444개 이름의 2,234개 버전으로 집계했고, JFrog는 "400+"라고 했으며, Aikido는 868개 패키지를 شمار했습니다. 공급업체들 사이의 세 배 규모 차이는 진행 중인 캠페인을 측정할 때 나타나는 모습일 뿐이며, 어느 곳도 침해된 조직의 이름은 밝히지 않았습니다. 또한 해당 훅은 워크스페이스 신뢰를 요구합니다. 두 편집기 모두 저장소가 제공한 설정에 게이트를 두고 있어, "폴더를 열면 곧바로 감염된다"고 말하는 것은 과장입니다.
미발표가 곧 해결은 아닙니다
UTC 기준 12:10까지도 9개 패키지만 latest가 롤백됐습니다. 다른 대부분의 이름에서는 여전히 latest가 악성 버전을 가리켰고, .claude와 .vscode 디렉터리도 여전히 keyv 저장소의 main 브랜치에 남아 있었습니다. 유지관리자, npm 또는 GitHub의 성명은 아직 나오지 않았고, 어느 행위자인지도 확인되지 않았습니다.
