[Hacker News 요약] TanStack, Mistral AI 등 170개 이상 패키지 강타한 대규모 NPM 및 PyPI 공급망 공격
12
설명
2026년 5월 11일, npm과 PyPI 생태계를 아우르는 대규모 공급망 공격이 발생하여 TanStack, Mistral AI, UiPath 등 유명 프로젝트의 170개 이상 패키지에서 총 404개의 악성 버전이 발견되었습니다. 이 공격은 단일 캠페인으로 npm과 PyPI를 동시에 노린 최초의 사례 중 하나로, 개발자 커뮤니티에 심각한 보안 위협을 제기하고 있습니다. 공격자들은 정교한 페이로드와 확산 메커니즘을 사용하여 자격 증명을 탈취하고 개발 환경을 오염시키는 것을 목표로 했습니다.
### 배경 설명
최근 몇 년간 소프트웨어 공급망 공격은 그 빈도와 정교함이 급증하고 있으며, 이는 오픈소스 생태계의 신뢰 모델을 직접적으로 위협합니다. 개발자들이 수많은 외부 패키지에 의존하는 현대 개발 환경에서, 단 하나의 악성 패키지가 전체 시스템을 감염시킬 수 있는 취약점이 존재합니다. 특히 npm과 PyPI 같은 대규모 패키지 레지스트리는 수백만 명의 개발자가 사용하는 핵심 인프라로, 이곳에 침투하는 것은 광범위한 피해를 초래할 수 있습니다.
이번 공격은 기존의 단일 고가치 패키지 타겟팅(예: Axios 공격)을 넘어, 전체 조직 스코프를 대상으로 수백 개의 패키지를 동시에 오염시켰다는 점에서 주목할 만합니다. 또한, JavaScript(npm)와 Python(PyPI)이라는 서로 다른 두 개발 생태계를 단일 캠페인 내에서 동시에 공격했다는 점은 공격자의 역량과 목표가 매우 광범위함을 시사합니다. 이는 단순히 패키지 레지스트리 토큰을 탈취하는 것을 넘어, 클라우드 인프라, CI/CD 파이프라인, 심지어 개발자의 IDE 환경까지 장악하려는 다층적인 전략을 보여줍니다.
### 공격 개요 및 주요 피해 대상
이번 공격은 2026년 5월 11일 단 5시간 만에 401개의 악성 버전이 배포될 정도로 자동화된 방식으로 진행되었습니다. 주요 피해 대상으로는 React, Vue, Solid 등 다양한 프레임워크에서 라우팅 라이브러리를 제공하는 TanStack(42개 패키지), Mistral AI의 공식 JavaScript/TypeScript 및 Python SDK(npm 및 PyPI), 엔터프라이즈 자동화 툴링을 제공하는 UiPath(65개 패키지), OpenSearch JavaScript 클라이언트(주간 130만 다운로드), 그리고 Guardrails AI(PyPI) 등이 포함됩니다. 이 공격은 'mini-shai-hulud'로 추적되고 있으며, npm과 PyPI를 동시에 노린 최초의 대규모 레지스트리 오염 사건으로 기록되었습니다.
### NPM 및 PyPI 공격 방식 분석
NPM 패키지는 두 가지 주요 트리거 메커니즘을 사용했습니다. Mistral AI 패키지는 `preinstall` 훅을 통해 악성 `setup.mjs` 스크립트를 실행하여 Bun 런타임을 다운로드하고 난독화된 페이로드를 실행했습니다. 반면 TanStack 패키지는 더 은밀하게 `optionalDependencies`에 실제 `tanstack/router` GitHub 리포지토리의 악성 커밋을 참조하도록 주입했습니다. 이 커밋의 `prepare` 스크립트가 Bun을 통해 페이로드를 실행하며, `exit 1`을 통해 설치 실패를 유도하여 탐지를 회피했습니다.
PyPI 패키지(mistralai, guardrails-ai)는 다른 방식을 사용했습니다. `__init__.py` 파일에 악성 코드를 주입하여 패키지 `import` 시 `git-tanstack[.]com`에서 `transformers.pyz`라는 Python dropper를 다운로드하고 `python3`로 실행했습니다. PyPI의 샌드박스 설치 환경에서는 `preinstall` 훅이 실행되지 않으므로, `import` 시 트리거되는 방식은 탐지를 우회하는 데 효과적이었습니다. `git-tanstack[.]com` 도메인은 Cloudflare에 의해 피싱 사이트로 플래그되었습니다.
### 페이로드 분석 및 확산 메커니즘
페이로드는 2.2MB 크기의 고도로 난독화된 JavaScript 파일로, AWS IAM, HashiCorp Vault, GitHub 토큰(ghp, gho, ghs), npm 발행 토큰, GitHub Actions OIDC 토큰 등 광범위한 자격 증명을 탈취하도록 설계되었습니다. 탈취된 자격 증명은 Session 프로토콜(양파 라우팅 암호화 메신저)을 통해 분산된 C2(Command and Control) 네트워크로 유출되며, 대용량 데이터는 `filev2[.]getsession[.]org`를 통해 전송됩니다. 또한, GitHub의 REST API를 사용하여 커밋 검색을 C2 채널로 활용하고, 탈취된 데이터를 GitHub 리포지토리에 업로드하는 이중화된 유출 채널을 사용했습니다.
특히 주목할 만한 점은 IDE 및 AI 에이전트 오염을 통한 자체 확산 메커니즘입니다. 페이로드는 `.claude/settings.json`, `.vscode/tasks.json` 등 악성 설정 파일을 생성하고, GitHub GraphQL API를 통해 피해자의 리포지토리에 커밋합니다. 다른 개발자가 이 오염된 브랜치를 클론하거나 풀하면, VS Code나 Claude Code에서 프로젝트를 열 때 악성 설정이 트리거되어 페이로드가 실행되고 새로운 환경에서 자격 증명을 탈취하는 연쇄 감염이 발생합니다.
### 피해 확인 및 대응 방안
개발자들은 자신의 프로젝트가 감염된 패키지 버전을 사용하고 있는지 즉시 확인해야 합니다. npm의 경우 `npm ls | grep -E "@tanstack|@mistralai|@uipath|@squawk|@opensearch-project"` 명령어를 통해 의존성을 검사하고, PyPI의 경우 `pip show mistralai guardrails-ai` 명령어로 버전을 확인해야 합니다. 특히 `mistralai==2.4.6` 또는 `guardrails-ai==0.10.1`이 발견되면 환경이 침해된 것으로 간주해야 합니다. 또한, `/tmp/transformers.pyz` 파일의 존재 여부도 확인해야 합니다.
감염이 확인된 경우, 모든 관련 자격 증명(AWS, Vault, GitHub, npm, PyPI 토큰 등)을 즉시 로테이션해야 합니다. CI/CD 환경에서 감염된 패키지가 설치되거나 실행된 경우, 해당 환경에서 사용 가능한 모든 PyPI 발행 자격 증명도 도난당했을 가능성이 있으므로 로테이션이 필수적입니다. SafeDep의 `vet scan`과 같은 도구를 사용하여 종속성 트리를 스캔하고 알려진 악성 패키지에 대한 방어 체계를 강화해야 합니다.
### 가치와 인사이트
이번 공격은 소프트웨어 공급망 보안의 복잡성과 중요성을 다시 한번 일깨워줍니다. 단순히 패키지 레지스트리 자체의 보안을 강화하는 것을 넘어, 개발자의 로컬 환경, CI/CD 파이프라인, 그리고 심지어 IDE 설정까지 아우르는 전방위적인 보안 전략이 필요함을 보여줍니다. 특히 `optionalDependencies`나 `import` 시 트리거되는 방식처럼 은밀한 공격 벡터와 분산형 C2, 자체 확산 메커니즘은 기존의 정적 분석이나 단순 샌드박스 검사로는 탐지하기 어렵다는 점을 시사합니다. AI/ML 관련 패키지가 주요 타겟이 되었다는 점은 공격자들이 최신 기술 스택을 사용하는 개발자 커뮤니티를 적극적으로 노리고 있음을 보여주며, 이는 AI 개발 환경의 보안 취약성에 대한 경각심을 높여야 함을 의미합니다. 조직은 개발자 교육을 강화하고, 자동화된 종속성 스캐닝 및 실시간 위협 인텔리전스 시스템을 도입하며, 최소 권한 원칙을 철저히 적용하여 잠재적 피해를 최소화해야 합니다.
### 기술·메타
- npm
- PyPI
- TanStack (React, Vue, Solid 라우터)
- Mistral AI SDK (JavaScript/TypeScript, Python)
- UiPath
- OpenSearch
- Guardrails AI
- Bun 런타임
- AWS IAM
- HashiCorp Vault
- GitHub (토큰, GraphQL API, REST API)
- GitHub Actions
- Session Protocol (Oxen network)
- VS Code
- Claude Code
- Python
- JavaScript/TypeScript
### 향후 전망
향후 소프트웨어 공급망 공격은 더욱 정교하고 다층적인 형태로 진화할 것으로 예상됩니다. 이번 공격처럼 여러 생태계를 동시에 노리는 크로스-에코시스템 공격이 증가할 것이며, `optionalDependencies`나 `import` 시 트리거되는 방식과 같이 탐지하기 어려운 은밀한 공격 벡터가 더욱 확산될 것입니다. 또한, Session 프로토콜이나 GitHub API를 활용한 C2처럼 기존 보안 솔루션의 탐지를 회피하는 분산형 및 합법적 플랫폼 기반 C2 메커니즘이 보편화될 수 있습니다. 이에 대응하여 패키지 레지스트리들은 보안 정책을 강화하고, 실시간 위협 탐지 및 차단 시스템을 고도화할 것입니다. AI 기반 보안 도구는 난독화된 코드 분석, 비정상 행위 탐지, 그리고 공격 패턴 예측에 필수적인 역할을 할 것입니다. 개발자 커뮤니티와 보안 연구 기관 간의 협력은 이러한 위협에 대한 집단 방어 능력을 강화하는 데 결정적인 역할을 할 것입니다.
📝 원문 및 참고
- Source: Hacker News
- 토론(HN): [news.ycombinator.com](https://news.ycombinator.com/item?id=48105634)
- 원문: [링크 열기](https://safedep.io/mass-npm-supply-chain-attack-tanstack-mistral/)
---
출처: Hacker News · [원문 링크](https://safedep.io/mass-npm-supply-chain-attack-tanstack-mistral/)
댓글 0
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.