신규 IronWorm 악성코드, npm 공급망 공격으로 36개 패키지 타격

새로운 공급망 공격이 Node Package Manager(npm) 인덱스에 있는 36개의 패키지를 IronWorm이라는 정보 탈취형 악성코드에 감염시켰습니다.
이 악성코드는 86개의 환경 변수(키‑값 쌍)와 20개의 인증 파일을 표적으로 삼으며, 여기에는 OpenAI, AWS, Anthropic, npm 인증 정보, 금고 설정 파일, SSH 키, 그리고 Exodus 암호화폐 지갑 파일이 포함될 수 있습니다.
공급망·DevOps 기업 JFrog 연구원에 따르면, IronWorm은 Rust로 작성되었으며 eBPF 커널 루트킷 뒤에 숨고, Tor 네트워크를 통해 운영자와 통신합니다.
기술 세부 사항
악성코드 기능
- 데이터 유출: OpenAI, AWS, Anthropic, npm 토큰, SSH 키, Exodus 지갑 파일 등 환경 변수와 인증 파일을 탈취합니다.
- 지속성: 저수준 접근을 유지하기 위해 eBPF 커널 루트킷을 삽입합니다.
- 명령·제어: 암호화된 통신을 위해 Tor 네트워크를 사용합니다.
전파 방식
IronWorm은 탈취한 인증 정보를 이용해 악성 npm 패키지 버전을 공개함으로써 자체 전파합니다. npm의 Trusted Publishing 워크플로를 악용해 개발자나 CI 환경이 손상되면 트로이 목마가 삽입된 패키지를 푸시할 수 있으며, 이 패키지는 다른 개발자와 CI 시스템을 감염시킵니다.
커밋 조작
- 최초 침해는
asteroiddao라는 계정이 손상되어 발생했으며, 이 계정은preinstall스크립트를 통해 실행되는 Rust ELF 바이너리를 포함한 패키지 버전을 배포했습니다. - 커밋은 “claude” 라는 작성자로 표시되고, 최대 13년 전으로 거슬러 올라가는 타임스탬프가 붙어 있습니다. 실제 푸시 시점은 며칠 전이었으며, 이는 포렌식 분석을 방해하기 위한 전략입니다.
전달 메커니즘 (GitHub Actions)
JFrog는 탈취된 비밀을 하나의 값으로 직렬화한 뒤 무해해 보이는 파일(예: lint 또는 포맷 출력)에 기록하고, 해당 파일을 빌드 아티팩트로 업로드하는 방식을 관찰했습니다. 이 방법은 전통적인 C2 서버 없이도 공격자가 비밀을 회수할 수 있게 하지만, 연구진은 분석된 IronWorm 공격에서는 사용되지 않았다고 밝혔습니다.
운영자 지갑 복구 구문
공격자는 자신의 암호화폐 지갑 복구 구문을 악성코드에 하드코딩했습니다. 연구진은 이를 통해 테스트 단계에서 악성코드가 지갑을 탈취하는 것을 방지하려는 의도라고 추정합니다.
탐지 및 완화
- Ox Security가 IronWorm 공격을 조기에 탐지하고 확산을 차단해 더 많은 인기 npm 패키지에 영향을 주는 것을 방지했습니다.
- Ox Security는 영향을 받은 모든 패키지 이름과 버전 목록을 제공하며, 개발자에게 다음을 권고합니다:
- 수정된 릴리스로 업데이트
- 손상된 모든 키를 교체
- 모든 npm 계정에 2단계 인증(2FA) 활성화
관련 조사 결과
- IronWorm의 행동은 이전 Shai Hulud 캠페인과 개념적으로 유사합니다. 해당 캠페인 역시 탈취한 인증 정보를 이용해 악성 npm 패키지를 배포했으며, JFrog는 직접적인 연관성을 찾지 못했지만 두 공격 모두 동일한 커밋 이름을 사용했습니다.
- Endor Labs와 StepSecurity는 binding.gyp라는 JavaScript 기반 악성코드를 이용한 별도의 동시 발생 공격을 보고했으며, 이 악성코드는 레지스트리 오염 및 GitHub Actions 감염을 수행했습니다.
