
npm/yarn 및 Python(pip/poetry/uv) 전반에서 공급망 공격을 탐지, 평가 및 대응합니다. Claude Code 스킬 + 독립 실행형 스크립트. axios RAT(2026-03-31) 및 Starlette BadHost CVE-2026-48710(2026-05-22) 기간 중에 구축됨.
npm/yarn 및 Python (pip/poetry/uv) 공급망 공격 대응을 위한 인시던트 대응 도구 키트 — 무료, 로컬 실행, 종속성 없음.
SCG는 상용 도구와 커버리지에서 경쟁하는 스캐닝 엔진이 아닙니다. 이는 Claude Code 스킬이자 독립형 셸 도구 키트로, 세 가지 작업을 잘 수행합니다: (1) 특정 인시던트가 발생했을 때 빠르고 반복 가능한 초기 대응을 제공하며("내 머신이 지금 영향을 받고 있는가?"), (2) 기존 OSS 스캐너(npm audit, osv-scanner, pip-audit)를 하나의 구조화된 패스로 오케스트레이션하고, (3) 특히 AI 개발 환경에서 일반 스캐너가 다루지 않는 설계 위생 교훈을 문서화합니다.
실제 인시던트 중에 구축 및 강화되었으며, 다음 사례를 포함합니다:
scripts/project-scan-py.sh2026년 3월 31일, 널리 사용되는 axios npm 패키지(v1.14.1 및 v0.30.4)가 UNC1069/DPRK-APT(Google Threat Intelligence Group 추정)로 인한 관리자 계정 탈취를 통해 손상되었습니다. 이 공격은 postinstall 스크립트를 통해 합법적인 시스템 프로세스로 위장한 교차 플랫폼 RAT을 배포하는 팬텀 종속성([email protected])을 주입했습니다.
**Supply Chain Guard (SCG)**는 인시던트 중에 다음을 제공하기 위해 구축되었습니다:
SCG는 기존 보안 도구를 대체하지 않습니다. 여러 탐지 계층을 구조화된 검증 프레임워크 및 안내된 문제 해결과 결합하여, 활성 인시던트 중에 사용하거나 기존 도구와 함께 정기 점검으로 사용하도록 설계되었습니다.
| 도구 | 기능 | SCG와의 관계 |
|---|---|---|
npm audit | 레지스트리에서 알려진 취약점 확인 | SCG는 npm audit을 L1 계층으로 포함한 후, IOC 파일시스템/네트워크 스캐닝, 악성 패키지 탐지 및 상단의 구조화된 대응 워크플로우를 추가합니다 |
osv-scanner | Google의 OSV 데이터베이스에 대한 잠금 파일 스캔 | SCG는 OSV를 L2 계층으로 포함합니다. osv-scanner는 파일시스템의 RAT 아티팩트나 활성 C2 연결을 확인하지 않습니다 |
| Snyk / Socket.dev | 실시간 모니터링, PR 검사, 라이선스 스캐닝을 갖춘 상용 SaaS | SCG는 무료이며, 로컬 우선, 계정 불필요, 제3자에게 데이터 전송 없음. 지속적인 모니터링보다 즉각적인 인시던트 대응을 위해 설계됨 |
| 수동 IR | 사용자 지정 스크립트를 사용한 임시 조사 | SCG는 인시던트마다 달라지는 일회성 체크리스트 대신 반복 가능한 프레임워크(8개 검증 게이트, 수렴 루프, 심각도 매트릭스)를 제공합니다 |
SCG를 사용해야 하는 경우:
다른 것을 사용해야 하는 경우:
경계를 솔직히 밝히는 것이 과장 판매보다 낫습니다. SCG는 세 가지입니다:
코드로 작성된 인시던트 대응 플레이북. 명명된 인시던트(axios RAT, Shai-Hulud, 새로운 CVE)가 발생하면 SCG는 "내가 영향을 받았는가, 그렇다면 어떻게 해야 하는가?"를 실행 가능한 체크리스트(8개 검증 게이트, 심각도 매트릭스, 모든 파괴적 작업에 명시적인 [y/N] 확인이 필요한 문제 해결 스크립트)로 전환합니다. 이것이 주요 가치입니다: 상용 모니터링 도구가 제공하지 않는 빠르고 구조화된 초기 대응입니다.
기존 OSS 스캐너의 오케스트레이터. L1/L2 계층은 npm audit / pip-audit / osv-scanner를 래핑합니다. 원시 탐지 성능의 대부분은 차용되었습니다. SCG의 기여는 이를 하나의 패스로 묶고, 레지스트리 도구가 수행하지 않는 파일시스템/IOC 검사를 추가하며, 출력을 읽기 쉽고 실행 가능하게 만드는 것입니다.
실제 설계 위생 교훈 문서화 (SKILL.md §D.7) — 실제로 직면하거나 조사한 사항: MCP 전송 선택, GCP 기본-SA 강화, 설치 시 실행 벡터, AI 개발 도구를 표적으로 하는 위협(Shai-Hulud가 .claude/settings.json 읽기, SANDWORM_MODE가 MCP 구성 오염). 이 틈새 — AI 지원 개발을 위한 공급망 위생 — 가 SCG가 진정으로 차별화되는 부분입니다.
SKILL.md D.2, L3 정적 목록)는 수동 유지 관리됩니다 — 우리가 읽은 인시던트를 보유하며, 라이브 상용 피드가 추적하는 수만 개의 악성 패키지를 보유하지 않습니다. 수동 선별 목록은 실제 새로운 위협의 속도를 따라잡을 수 없으며, 우리는 그렇게 할 수 있다고 주장하지 않습니다.수동 선별 데이터베이스는 커버리지에서 이길 수 없기 때문에, 항상 뒤처지는 영역보다는 SCG가 대체하기 어려운 부분에 의도적으로 투자하고 있습니다:
정적 위협 데이터베이스(#2)는 주목할 만한 인시던트가 발생할 때마다 계속 업데이트되지만, 경쟁하려는 방향이 아님을 명시적으로 밝힙니다.
SCG는 세 가지 계층으로 도메인 주도 설계(DDD) 아키텍처를 따릅니다:``` +-----------------------------------------------------+ | Domain Layer | | Threat models, known threats DB, severity matrix, | | Devil Gate definitions | +-----------------------------------------------------+ | Application Layer | | Use cases, scan pipeline, response protocols, | | Devil execution loop | +-----------------------------------------------------+ | Infrastructure Layer | | Scanner scripts (npm audit, OSV, static list, | | IOC filesystem, network, lockfile integrity) | +-----------------------------------------------------+
### 스캔 파이프라인
동일한 5계층 파이프라인이 두 생태계 모두에 적용되며, 각 계층에는 생태계별 스캐너가 있습니다:```
L1 ──→ L2 ──→ L3 ──→ IOC ──→ LF ──→ assess(SeverityMatrix) ──→ VERDICT
| 계층 | npm/yarn (project-scan.sh) | Python (project-scan-py.sh) |
|---|---|---|
| L1 | npm audit | pip-audit |
| L2 | osv-scanner / OSV.dev API | osv-scanner |
| L3 | 정적 목록 (악성 + 오타스쿼팅) | 정적 목록 (악성/오타스쿼팅 + CVE 플래그 지정 버전) |
| IOC | 파일시스템 + 네트워크 아티팩트 | 파일시스템 + 프로세스 아티팩트 (Python 스타일) |
| LF | npm ci --dry-run + 무결성 수 | 잠금파일 무결성 (uv.lock / poetry.lock / requirements*.txt) |
두 파이프라인 모두 동일한 SeverityMatrix 및 Devil Gate Framework에 연결됩니다.
SKILL.md 파일을 Claude Code 스킬 디렉토리에 복사하세요:```bash
cp SKILL.md ~/.claude/skills/supply-chain-guard.md
mkdir -p .claude/skills cp SKILL.md .claude/skills/supply-chain-guard.md
그런 다음 Claude Code에서 호출하십시오:```
> /supply-chain-guard
> "Check this project for supply chain issues"
> "Is my machine affected by the axios compromise?"
./scripts/env-scan.sh
./scripts/project-scan.sh
./scripts/project-scan-py.sh
./scripts/ioc-scan.sh
./scripts/respond.sh --critical # Full RAT cleanup (npm + Python) ./scripts/respond.sh --high axios 1.14.0 # Pin npm package to safe version ./scripts/respond.sh --high urllib3 2.7.0 # Pin Python package (auto-detects pip/poetry/uv)
> **Python 수정은 기본적으로 보수적으로 설계되었습니다.** npm의 경우 `--high`가 자동으로 재정의를 적용합니다. Python의 경우 *안내*합니다: 사용 중인 패키지 관리자(pip/poetry/uv)를 감지하여 정확한 고정 명령을 출력하고 안전한 단계만 적용합니다. 잠금 파일 변경 및 venv 재구축 명령은 실행할 수 있도록 표시만 됩니다. 이는 분열된 Python 패키징 생태계에서 오탐이 연쇄적인 강제 재설치를 유발하는 것을 방지합니다.
다중 언어 저장소(npm + Python)의 경우 관련 하위 디렉터리에서 순차적으로 두 프로젝트 스캐너를 실행하세요.