홈으로 돌아가기

npm의 CanisterWorm: Trivy 이후 공격

CanisterWorm — Trivy 공격 이후 ICP 컨테이너를 C2로 사용하는 새로운 자체 전파 웜. postinstall 및 토큰 도난을 통해 npm 패키지 감염, systemd 지속성 보장. 메커니즘 분석 및 Shai-Hulud와 비교.

CanisterWorm 웜이 Trivy 이후 npm 감염
Advertisement 728x90

CanisterWorm: Trivy 공격 이후 npm 공급망 자가 전파 웜

공격자들은 Trivy 침해에 이어 CanisterWorm 웜을 배포해 수십 개의 npm 패키지를 감염시켰습니다. 이 맬웨어는 Internet Computer 블록체인의 ICP canister를 이용해 탄력적인 C2 서버를 구축합니다. 이는 페이로드 수신을 위한 ICP의 첫 번째 문서화된 악용 사례로, 분산화된 구조 덕분에 takedown이 어렵습니다.

감염 및 전파 메커니즘

공격 체인은 손상된 패키지의 postinstall 훅에서 시작됩니다. 이 훅은 Python 백도어를 설치하는 로더를 실행합니다. 백도어는 ICP canister에 연결해 다음 페이로드의 URL을 가져옵니다.

ICP canister는 get_latest_link, http_request, update_link 메서드를 구현합니다. 후자는 컨트롤러가 실시간으로 URL을 변경할 수 있게 해 모든 감염 호스트의 실행 파일을 중단 없이 업데이트합니다.

Google AdInline article slot

백도어는 가짜 User-Agent를 사용해 50분마다 canister를 폴링합니다. URL에 youtube.com이 포함되면 임플란트가 휴면 상태로 전환됩니다. 활성화는 실제 페이로드로 전환하며, 기존 프로세스는 병렬로 계속 실행됩니다.

시스템d 서비스 "pgmon"으로 지속성을 확보하며, PostgreSQL 모니터링으로 위장합니다. Restart=always 지시어로 종료 후 5초 만에 백도어를 재시작합니다.

영향 받은 패키지:

Google AdInline article slot
  • @EmilGroup 스코프 내 28개;
  • @opengov 스코프 내 16개;
  • @teale.io/eslint-config;
  • @airtm/uuid-base32;
  • @pypestream/floating-ui-dom.

Socket은 66개 이상의 고유 패키지에서 141개의 악성 아티팩트를 탐지했습니다.

CanisterWorm의 완전 자동화 진화

@teale.io/eslint-config 1.8.11~1.8.12 버전에서 변종이 등장해 index.js에 npm 토큰 탈취를 통합했습니다. findNpmTokens() 함수는 postinstall 중 환경을 스캔하고 self-propagation을 위해 deploy.js를 백그라운드 프로세스로 실행합니다.

Deploy.js는 훔친 토큰으로 접근 가능한 모든 패키지에 악성 버전을 게시합니다. Vibe 기술을 사용한 AI 생성으로 추정되는 이 웜은 코드를 난독화하지 않습니다.

Google AdInline article slot

ICP의 현재 페이로드는 테스트 문자열 "hello123"로, 전체 공격 전 체인 검증 단계로 보입니다.

유사한 youtube.com 체크 메커니즘은 sysmon.py를 통해 trojanized된 Trivy 0.69.4에서도 발견되었으며, 동일한 ICP canister를 참조합니다.

이전 캠페인과의 비교

CanisterWorm은 Shai-Hulud(9월) 패턴을 따릅니다: tinycolor 침해가 40개 이상 패키지로 확산된 후, 웜이 NpmModule.updatePackage와 TruffleHog(자격 증명 검증)을 통해 300개 이상을 감염시켰습니다.

Sha1-Hulud(11월)는 25,000개 이상 저장소를 영향: preinstall 스크립트 setup_bun.js가 Bun 환경을 감지해 bun_environment.js로 데이터 탈취를 실행했습니다.

| Campaign | Affected Packages | Propagation Mechanism | Theft Tools |

|-------------|-------------------|-----------------------------------|------------------|

| Shai-Hulud | 300+ | NpmModule.updatePackage | TruffleHog |

| Sha1-Hulud | 25,000+ | preinstall/setup_bun.js | bun_environment |

| CanisterWorm| 66+ | postinstall/deploy.js + ICP C2 | findNpmTokens |

핵심 요점

  • ICP canister의 최초 C2 활용: 분산화로 takedown이 어렵습니다.
  • 자동 전파: 토큰 탈취 + deploy.js로 설치가 CI/CD 및 개발 머신 감염 벡터로 전환됩니다.
  • 탄력성: Restart=always가 적용된 systemd + 병렬 프로세스 + 동적 update_link.
  • 위장: pgmon으로 위장된 서비스, youtube.com 시 휴면 모드.
  • 규모: Trivy에서 141개 아티팩트로 확대; 수동 배포 없이 완전 자동화로 진화.

Aikido Security, Endor Labs, JFrog, Wiz 등의 기업이 확인: npm 생태계에서 단일 침해에서 지수적 웜 행태로의 전환을 나타냅니다.

— Editorial Team

Advertisement 728x90

다음 읽기