
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 スキルおよびスタンドアロンシェルツールキットであり、3つのことをうまく行います: (1) 特定のインシデントが発生した際に、高速で再現可能な初動対応を提供する(「今すぐ自分のマシンが影響を受けているか?」)、(2) 既存の OSS スキャナー(npm audit、osv-scanner、pip-audit)を1つの構造化されたパスにまとめ調整する、(3) 特に AI 開発環境向けに、ハードに得られた設計衛生の教訓を文書化する — これは一般的なスキャナーではカバーされない内容です。
これは、以下を含む実際のインシデント中に構築および強化されました:
scripts/project-scan-py.sh で pip-audit / osv-scanner / CVE フラグ付きバージョン検出を実行2026年3月31日、広く利用されている axios npm パッケージ (v1.14.1 および v0.30.4) が、UNC1069/DPRK-APT(Google Threat Intelligence Group による)に起因するメンテナアカウントの乗っ取りにより侵害されました。この攻撃は、ファントム依存関係 ([email protected]) を注入し、postinstall スクリプトを介してクロスプラットフォーム RAT を展開しました。これは正当なシステムプロセスに偽装されていました。
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 は無料、ローカル優先、アカウント不要、サードパーティへのデータ送信なし。継続的なモニタリングではなく、即時インシデント対応用に設計 |
| 手動 IR | カスタムスクリプトによるアドホック調査 | SCG は、インシデントごとに変わる使い捨てのチェックリストではなく、繰り返し可能なフレームワーク(8検証ゲート、収束ループ、重要度マトリックス)を提供 |
SCG を使用すべき場合:
他のものを使用すべき場合:
私たちは、限界について正直でありたいと思います。SCG は3つのものです:
コードとしてのインシデント対応プレイブック。 名前付きインシデント(axios RAT、Shai-Hulud、新しい CVE)が発生したとき、SCG は「影響を受けているか、もしそうならどうするか」を実行可能なチェックリストに変換します — 8つの検証ゲート、重要度マトリックス、そしてすべての破壊的行動に明示的な [y/N] 確認を必要とする修復スクリプト。これが SCG の主な価値です: 商用モニタリングツールでは対応できない、高速で構造化された初動対応です。
既存の OSS スキャナーのオーケストレーター。 L1/L2 レイヤーは npm audit / pip-audit / osv-scanner をラップします。生の検出力のほとんどは借用したものです。SCG の貢献は、それらを1つのパスにバンドルし、レジストリツールでは行わないファイルシステム/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 が置き換えにくい分野に投資しています。常に負ける分野ではありません:
静的脅威 DB (#2) は注目すべきインシデントが発生したときに更新され続けますが、これは競争しようとする方向ではありません。
SCG は ドメイン駆動設計 (DDD) アーキテクチャに従い、3つのレイヤーで構成されています:``` +-----------------------------------------------------+ | 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 パッケージングエコシステム全体で誤検出が引き金となり、副作用として強制再インストールが発生するのを防ぎます。
polyglot リポジトリ(npm + Python)の場合、関連するサブディレクトリから両方のプロジェクトスキャナを順次実行します。