Microsoft는 npm 계정 탈취 (account takeover)를 통해 80개 이상의 패키지가 침해된 Mastra-AI npm 생태계에 대한 공급망 공격 (supply chain attack)을 식별했습니다. 공격자는 침해된 패키지에 팬텀 의존성 (phantom dependency)을 도입했습니다. 이 악성 의존성은 24시간 이내에 단 한 명의 익명 유지관리자에 의해 게시되었습니다.
침해된 [email protected]은 "dayjs"의 타이포스쿼팅 (typosquat)인 easy-day-js@^1.11.21 의존성을 추가하며, 이는 v1.11.22로 해결됩니다. 포스트 설치 스크립트 (post-install script)는 node setup.cjs를 실행하여 원격 페이로드 (remote payload)를 다운로드하고 실행합니다.
[email protected]의 포스트 설치 스크립트 동작:
- TLS 우회: 인증서 오류 없이 공격자의 C2와 통신하기 위해 SSL 검증을 비활성화합니다 (NODE_TLS_REJECT_UNAUTHORIZED=0).
- 추적 파일 작성: 재감염을 방지하기 위해 ~/.pkg_history (감염된 머신 경로) 및 ~/.pkg_logs (XOR 인코딩된 마커)를 생성합니다.
- 숨겨진 페이로드 다운로드: 23[.]254[.]164[.]92:8000/update/49890878 에서 2단계 .js 파일을 가져옵니다.
- 보이지 않는 프로세스로 실행: C2 엔드포인트인 23[.]254[.]164[.]123:443을 인자로 전달하여 다운로드된 페이로드를 분리되어 숨겨진 상태(windowsHide=true)로 생성합니다.
- 흔적 제거: 초기 감염의 모든 증거를 제거하기 위해 setup.cjs를 삭제합니다.
이 공격은 [email protected], mastra/pg, mastra/mcp, mastra/schema-compat, mastra/ai-sdk, mastra/rag 및 80개 이상의 다른 패키지에 영향을 미칩니다.
Microsoft Defender for Endpoint 고객은 제목에 Trojan:JS/ObfusNpmJs가 포함된 경고를 모니터링하고 조치해야 합니다. 고객은 또한 다음의 침해 지표 (IOCs)를 확인할 수 있습니다:
- ls ~/.pkg_history ~/.pkg_logs
- home/temp 디렉토리 내의 무작위 .js 파일
사용자는 즉시 이전 버전으로 다운그레이드하고, [email protected]을 명시적으로 사용하며, 락파일 (lockfiles)을 사용할 것을 권장합니다.
[IMG:1]