Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
supply-chain-guard — npm/yarn および Python (pip/poetry/uv) におけるサプライチェーン攻撃を検出、評価、対応します。Claude Code スキル + スタンドアロンスクリプト。axios RAT (2026-03-31) および Starlette BadHost CVE-2026-48710 (2026-05-22) の期間中に構築されました。 | Kitploit
ツール/GitHubGitHub/eris-ths/supply-chain-guard
侵害指標 (IOC) 管理脆弱性スキャナースクリプトと自動化マルウェア分析DevSecOps脅威インテリジェンスサプライチェーンセキュリティ学習と教育インシデントレスポンス
GitHuberis-ths/supply-chain-guard

supply-chain-guard

npm/yarn および Python (pip/poetry/uv) におけるサプライチェーン攻撃を検出、評価、対応します。Claude Code スキル + スタンドアロンスクリプト。axios RAT (2026-03-31) および Starlette BadHost CVE-2026-48710 (2026-05-22) の期間中に構築されました。

31ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
リポジトリを見る

Supply Chain Guard (SCG)

npm/yarn および Python (pip/poetry/uv) サプライチェーン攻撃向けインシデント対応ツールキット — 無料、ローカル、依存関係不要。

SCG は、カバレッジで商用ツールと競合するスキャンエンジンではありません。これは Claude Code スキルおよびスタンドアロンシェルツールキットであり、3つのことをうまく行います: (1) 特定のインシデントが発生した際に、高速で再現可能な初動対応を提供する(「今すぐ自分のマシンが影響を受けているか?」)、(2) 既存の OSS スキャナー(npm audit、osv-scanner、pip-audit)を1つの構造化されたパスにまとめ調整する、(3) 特に AI 開発環境向けに、ハードに得られた設計衛生の教訓を文書化する — これは一般的なスキャナーではカバーされない内容です。

これは、以下を含む実際のインシデント中に構築および強化されました:

  • [email protected] RAT インシデント (2026-03-31) — npm メンテナアカウント乗っ取り (UNC1069/DPRK-APT) により、ファントム依存関係 RAT が注入されました
  • Starlette BadHost (CVE-2026-48710, 2026-05-22) — Python HTTP フレームワークの Host ヘッダーパスインジェクション → SSRF/RCE。FastAPI、vLLM、LiteLLM、そしてより広範な AI エージェントエコシステムに影響を与えます

v4 の新機能 (2026-05-27)

  • Python サプライチェーンスキャン — scripts/project-scan-py.sh で pip-audit / osv-scanner / CVE フラグ付きバージョン検出を実行
  • CVE フラグ付きバージョンレイヤー (L3-CVE) — 厳密な semver 仕様評価により、既知の脆弱なバージョンの正規パッケージを追跡 (BadHost CVE-2026-48710 を標準装備)
  • 設計衛生ガイドライン — stdio 優先の MCP トランスポート、バージョン固定規律、GCP デフォルト Compute SA の強化 (SKILL.md §D.7 DesignHygiene を参照)
  • Guild-CLI Devil レンズ統合 — guild-cli ワークフローから SCG を Devil レンズとして呼び出し可能 (以下の「Guild-CLI Devil 統合」を参照)

目次

  • なぜこれが存在するのか
  • SCG が既存ツールと異なる点
  • SCG の本質(そうでないもの)
  • アーキテクチャ
  • クイックスタート
  • スキャンモード
  • 脅威インテリジェンス
  • Devil Gate フレームワーク
  • スタンドアロンスクリプト
  • CI/CD 統合
  • 対応プレイブック
  • IOC リファレンス
  • 免責事項
  • 制限事項
  • 完全性検証
  • ライセンス

なぜこれが存在するのか

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) は、このインシデント中に以下を提供するために構築されました:

  1. 即時検出 — 今すぐ自分のマシンやプロジェクトが影響を受けているか?
  2. 構造化評価 — 深刻度は?ブラスト半径は?
  3. ガイド付き対応 — 安全確認付きのステップバイステップの修復手順
  4. 継続的防御 — 再発防止のための8ゲート検証フレームワーク

SCG が既存ツールと異なる点

SCG は既存のセキュリティツールの代替ではありません。複数の検出レイヤーを構造化された検証フレームワークとガイド付き修復と組み合わせており、アクティブなインシデント中や、既存のツールと併用した定期的なチェックとして使用するように設計されています。

SCG を使用すべき場合:

  • サプライチェーンインシデントが発生し、今すぐ自分のマシンとプロジェクトを確認する必要がある場合
  • 侵害が完全に対処されたことを確認するための、構造化された繰り返し可能なプロセスが必要な場合
  • SaaS 依存関係なしでローカルで実行される軽量チェックが必要な場合

他のものを使用すべき場合:

  • 継続的なリアルタイムモニタリングが必要 → Snyk、Socket.dev
  • ライセンスコンプライアンススキャンが必要 → Snyk、FOSSA
  • npm/yarn を超えたカバレッジが必要 → osv-scanner(pip、cargo、go などをサポート)

SCG の本質(そうでないもの)

私たちは、限界について正直でありたいと思います。SCG は3つのものです:

  1. コードとしてのインシデント対応プレイブック。 名前付きインシデント(axios RAT、Shai-Hulud、新しい CVE)が発生したとき、SCG は「影響を受けているか、もしそうならどうするか」を実行可能なチェックリストに変換します — 8つの検証ゲート、重要度マトリックス、そしてすべての破壊的行動に明示的な [y/N] 確認を必要とする修復スクリプト。これが SCG の主な価値です: 商用モニタリングツールでは対応できない、高速で構造化された初動対応です。

  2. 既存の OSS スキャナーのオーケストレーター。 L1/L2 レイヤーは npm audit / pip-audit / osv-scanner をラップします。生の検出力のほとんどは借用したものです。SCG の貢献は、それらを1つのパスにバンドルし、レジストリツールでは行わないファイルシステム/IOC チェックを追加し、出力を読みやすく実用的にすることです。

  3. 実際の設計衛生の教訓の文書化(SKILL.md §D.7)— 私たちが実際に遭遇または調査した事項: MCP トランスポートの選択、GCP デフォルト SA の強化、インストール時実行ベクトル、および AI 開発ツールを標的とする脅威(Shai-Hulud が .claude/settings.json を読み取る、SANDWORM_MODE が MCP 設定を汚染する)。このニッチ — AI 支援開発のためのサプライチェーン衛生 — は、SCG が真に差別化されている分野です。

SCG が意図的にそうでないもの

  • カバレッジ競合相手ではありません。 脅威データベース(SKILL.md D.2、L3 静的リスト)は手動でメンテナンスされています — 私たちが読んだインシデントを保持しており、ライブの商用フィードが追跡する数万の悪意のあるパッケージではありません。手動キュレーションリストは、新しい脅威の実際のペースについていくことはできません。私たちはそれを装いません。
  • 行動分析エンジンではありません。 SCG は既知のパターンにマッチします。難読化されたペイロードや、公開アドバイザリのない真のゼロデイは、設計上範囲外です。
  • 継続的モニタリングではありません。 インシデント中または定期的なスイープとして実行するポイントインタイムチェックであり、依存関係グラフを監視するサービスではありません。

SCG の今後

手動キュレーションデータベースはカバレッジで勝てないため、私たちは意図的に SCG が置き換えにくい分野に投資しています。常に負ける分野ではありません:

  • より深いインシデント対応プレイブック (#1) — より良い初動対応の人間工学、より多くのインシデントテンプレート
  • AI 開発環境の衛生 (#3) — Claude Code / Cursor / MCP サーバーおよび類似ツールを標的とする脅威の検出とガイダンス。商用サプライチェーンスキャナーはほとんどこれに対応していません

静的脅威 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) | +-----------------------------------------------------+

root@kitploit:~
### スキャンパイプライン

同じ5層パイプラインが両方のエコシステムに適用され、各層でエコシステム固有のスキャナーが使用されます:```
L1 ──→ L2 ──→ L3 ──→ IOC ──→ LF ──→ assess(SeverityMatrix) ──→ VERDICT

両方のパイプラインは同じSeverityMatrixとDevil Gate Frameworkにフィードします。


クイックスタート

Claude Codeスキルとして

SKILL.md を Claude Code スキルディレクトリにコピーしてください:```bash

Global (all projects)

cp SKILL.md ~/.claude/skills/supply-chain-guard.md

Or project-specific

mkdir -p .claude/skills cp SKILL.md .claude/skills/supply-chain-guard.md

root@kitploit:~
その後、Claude Code で呼び出してください:```
> /supply-chain-guard
> "Check this project for supply chain issues"
> "Is my machine affected by the axios compromise?"

スタンドアロンスクリプトとして```bash

Environment-wide scan (IOC + all projects) [READ-ONLY]

./scripts/env-scan.sh

npm/yarn project scan (requires package.json in cwd) [READ-ONLY]

./scripts/project-scan.sh

Python project scan (requires pyproject.toml / requirements*.txt / poetry.lock / uv.lock in cwd) [READ-ONLY, added in v4]

./scripts/project-scan-py.sh

IOC-only scan (filesystem + network artifacts) [READ-ONLY]

./scripts/ioc-scan.sh

Remediation (interactive, every action requires confirmation)

./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)

root@kitploit:~
> **Python の修復は保守的に設計されています。** npm の場合、`--high` は自動的にオーバーライドを適用します。Python の場合は *ガイド* します。つまり、マネージャー(pip/poetry/uv)を検出し、正確なピン留めコマンドを表示し、安全なステップ(ロックファイルの変更や venv の再構築コマンドは実行せず、表示のみ)のみを適用します。これにより、断片化された Python パッケージングエコシステム全体で誤検出が引き金となり、副作用として強制再インストールが発生するのを防ぎます。

polyglot リポジトリ(npm + Python)の場合、関連するサブディレクトリから両方のプロジェクトスキャナを順次実行します。

> **安全性設計:** すべてのスキャンスクリプトは厳密に読み取り専用です。決して変更、削除、インストールは行いません。修復スクリプト(`respond.sh`)のみが破壊的操作を実行し、**すべてのアクションには明示的な `[y/N]` の確認が必要**で、デフォルトは NO です。

---

## スキャンモード

### 環境スキャン(`env_scan`)

開発マシン全体を侵害の兆候についてスキャンします。

| チェック項目 | 説明 |
|-------|-------------|
| **IOC: ファイルシステム** | RAT バイナリ、永続化機構、ステージングファイル |
| **IOC: ネットワーク** | アクティブな C2 接続(IP + ドメイン) |
| **IOC: プロセス** | 実行中の悪意のあるプロセス |
| **プロジェクト横断** | すべての `package-lock.json` ファイルを侵害バージョンについてスキャン |
| **悪意のあるパッケージ** | 既知の悪意のあるパッケージ名がロックファイル内に存在するか |

**トリガー:** "この PC", "環境チェック", "マシン全体"

### プロジェクトスキャン — npm/yarn(`project_scan`)

単一の npm/yarn プロジェクトの詳細スキャン。`package.json` が含まれるディレクトリから実行します。

| 層 | スキャナ | 説明 |
|-------|---------|-------------|
| **L1** | `npm audit` | npm レジストリ経由の既知の脆弱性 |
| **L2** | `osv-scanner` / OSV.dev API | Google のオープンソース脆弱性データベース |
| **L3** | 静的リスト | ハードコードされた既知の悪意のあるパッケージチェック |
| **IOC** | ファイルシステム + ネットワーク | RAT アーティファクト検出 |
| **LF** | ロックファイル整合性 | `npm ci --dry-run` + 整合性ハッシュ数 |

**トリガー:** "このプロジェクト", "npm audit"、またはカレントディレクトリに `package.json` が存在する

### プロジェクトスキャン — Python(`project_scan_py`、v4 で追加)

単一の Python プロジェクトの詳細スキャン。`pyproject.toml`、`requirements*.txt`、`poetry.lock`、または `uv.lock` が含まれるディレクトリから実行します。

| 層 | スキャナ | 説明 |
|-------|---------|-------------|
| **L1** | `pip-audit` | PyPI Advisory DB 経由の既知の脆弱性(オプション — 未インストールの場合は SKIP、`pip install pip-audit` 推奨) |
| **L2** | `osv-scanner` | Google のオープンソース脆弱性データベース、`uv.lock` / `poetry.lock` / `requirements*.txt` に対して(オプション — 未インストールの場合は SKIP) |
| **L3-MAL** | 静的悪意リスト(`_L3_LIST`) | 既知の乗っ取られた / タイポスクワッティングパッケージ名。PEP 621 リスト、Poetry インライン、requirements 形式の宣言に一致([PR #4](https://github.com/eris-ths/supply-chain-guard/pull/4) 参照)。ヒットした場合は FAIL |
| **L3-CVE** | 静的 CVE フラグ付きバージョンリスト(`_L3_CVE_LIST`) | 正規パッケージの既知の脆弱バージョン(例:`starlette<1.0.1` for [BadHost CVE-2026-48710](https://cryptobriefing.com/starlette-badhost-vulnerability-ai-agents/))。Python の `packaging` ライブラリによる厳密なセマバー評価。確認された一致で FAIL。パッケージが宣言されているがロックファイルがない場合は警告(バージョン評価不可) |
| **IOC** | ファイルシステム + プロセス | Python 版アーティファクトチェック(不正なスクリプト、不審なプロセス) |
| **LF** | ロックファイル整合性 | `uv.lock` / `poetry.lock` / `requirements*.txt` が正常にパースされ、固定バージョンが含まれていることを確認 |

**トリガー:** "このプロジェクト" + Python ファイルが存在する、またはカレントディレクトリに `pyproject.toml` / `requirements*.txt` / `poetry.lock` / `uv.lock` のいずれかが存在する

> **依存関係について:** L1(`pip-audit`)および L2(`osv-scanner`)は、それぞれの CLI が存在しない場合、ヒントと共に正常に SKIP します。L3 は常時稼働する層であり、外部ツールは不要ですが、正確な L3-CVE 評価には `pip install packaging` が必要です。

---

## 脅威インテリジェンス

### 既知脅威データベース

| ID | 日付 | パッケージ | 脅威アクター | ベクター |
|----|------|---------|-------------|--------|
| **T001** | 2026-03-31 | `[email protected]`, `[email protected]` | UNC1069/DPRK-APT | メンテナ乗っ取り → ファントム依存関係 → RAT |
| **T002** | 2018-11 | `[email protected]` | 不明 | 依存関係インジェクション → 暗号資産窃取 |
| **T003** | 進行中 | `crossenv`, `loadsh`, `crypto-js-esm` | 各種 | タイポスクワッティング → postinstall データ流出 |

### T001 キルチェーン(axios RAT)```
Credential theft → npm publish (bypass CI) → Inject phantom dep (plain-crypto-js)
    → postinstall exec → RAT drop → C2 beacon (sfrclak.com:8000) → Persist

安全なバージョン

パッケージ安全侵害済み
axios (latest)1.14.0 (正確) または >=1.14.21.14.1
axios (レガシー)0.30.3 (正確)0.30.4

勧告ID

  • GHSA-fw8c-xr5c-95f9
  • MAL-2026-2306

Devil Gate Framework

SCGは、8ゲート検証フレームワークを使用しており、4つのカテゴリに分類され、収束ループを持つシリアルチェーンとして実行されます。

ゲート

チェーン実行```

S1: Dependency (G1+G2) → S2: Runtime (G3+G4) → S3: Integrity (G5+G6) → S4: Environment (G7+G8) → Any fail? → Fix → Re-run entire chain → All pass? → "No concerns" → Done → 3 rounds without convergence? → Escalate to user

root@kitploit:~
### 重大度マトリクス

| レベル | 条件 | アクション |
|-------|-----------|--------|
| **重大** | RATアーティファクトが検出された、または悪意のあるパッケージがインストールされている | ネットワーク隔離 → プロセス強制終了 → 永続化削除 → 再インストール |
| **高** | 侵害されたバージョンが使用中 | 安全なバージョンを固定 → 上書き → `npm ci` → 検証 |
| **中** | 疑わしいpostinstallスクリプト | 手動レビュー → ホワイトリストに追加または削除 |
| **低** | ロックファイルのドリフト | `npm ci` で再同期 |
| **クリア** | すべてのチェックに合格 | アクション不要 |

> **安全性:** 重大/高の応答は破壊的な操作を含みます。SCGは常に調査結果を提示し、修復を実行する前に明示的なユーザー確認を求めます。

---

## スタンドアロンスクリプト

### `scripts/env-scan.sh`

完全な環境スキャン。IOCアーティファクトをチェックし、`$HOME`(設定可能)以下のすべてのロックファイルをスキャンし、侵害されたパッケージを報告します。```bash
./scripts/env-scan.sh [scan_root_dir]
# Default: $HOME

scripts/project-scan.sh

プロジェクトレベルのスキャン。package.jsonを含むディレクトリから実行します。```bash cd my-project /path/to/scripts/project-scan.sh

root@kitploit:~
### `scripts/ioc-scan.sh`

IOCのみのスキャン。既知のC2インジケーターに対して、ファイルシステムのアーティファクト、実行中のプロセス、ネットワーク接続をチェックします。クロスプラットフォーム(macOS/Linux/Windows、PowerShell経由)。```bash
./scripts/ioc-scan.sh

scripts/respond.sh

対話的な修復。 すべての破壊的な操作には、[y/N] の確認が必要です(デフォルト:NO)。```bash

CRITICAL: Full RAT cleanup (kill → remove → reinstall)

./scripts/respond.sh --critical

HIGH: Pin compromised package to safe version

./scripts/respond.sh --high axios 1.14.0 # npm ./scripts/respond.sh --high event-stream 3.3.5 # npm ./scripts/respond.sh --high urllib3 2.7.0 # python (pip/poetry/uv auto-detected)

root@kitploit:~
`--critical`モードの手順:
1. ネットワーク隔離(`/etc/hosts` 経由でC2ドメインをブロック)
2. RATプロセスを強制終了
3. 永続化の除去(LaunchAgents / crontab / スケジュールタスク)
4. `node_modules` とロックファイルを削除し、npmキャッシュをクリア
   - **4b(Python):** pipキャッシュを消去(安全、自動);venv再構築は手動手順として表示
5. 依存関係の再インストール
6. 確認スキャンのプロンプト(`project-scan.sh` および/または `project-scan-py.sh`)

各ステップは、アクションが実際に必要かどうかを確認し(例:RATプロセスが実行されていない場合は「強制終了」をスキップ)、確認を求める前に実行される内容を正確に表示します。

**HIGH**モードでは、npmは自動的にオーバーライドを適用します;Pythonはガイドされます(マネージャーを検出→pinコマンドを表示→安全なステップのみ適用)。Pythonの修復に関する注意については、[Quick Start](#quick-start)を参照してください。

---

## CI/CD統合

### GitHub Actions```yaml
name: Supply Chain Guard
on:
  pull_request:
    paths:
      - 'package.json'
      - 'package-lock.json'
      - 'yarn.lock'

jobs:
  scg-scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'

      - name: Install dependencies (hardened)
        run: npm ci --ignore-scripts

      - name: Run SCG project scan
        run: |
          chmod +x ./scripts/project-scan.sh
          ./scripts/project-scan.sh

      - name: Run IOC scan
        run: |
          chmod +x ./scripts/ioc-scan.sh
          ./scripts/ioc-scan.sh

堅牢化の推奨事項```bash

Always use in CI:

npm ci --ignore-scripts # Block postinstall execution

npm ci already enforces lockfile integrity by design (errors on mismatch)

Yarn equivalent:

yarn install --frozen-lockfile --ignore-scripts

root@kitploit:~
> **アクションはタグではなくSHAで固定すること。** 上記の例では可読性のために `actions/checkout@v4` を使用していますが、タグは変更される可能性があります。本番環境では、アクションのサプライチェーン攻撃を防ぐために、完全なコミットSHAで固定してください:
> ```yaml
> - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v4.2.2
> - uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af  # v4.1.0
> ```

---

## 対応プレイブック

### CRITICAL(RAT検出)の場合

> **パニックにならないでください。** 以下の手順を順番に実行してください。各ステップでは明示的な確認が必要です。

1. **ネットワーク分離** — `/etc/hosts` でC2ドメインをブロック
2. **プロセスの強制終了** — RATプロセスを終了 (`com.apple.act.mond`, `ld.py`, `wt.exe`)
3. **永続化の削除** — LaunchAgents、crontab、スケジュールタスクを削除
4. **npmのクリーン** — `node_modules` と `package-lock.json` を削除し、npmキャッシュをクリア
5. **再インストール** — 新規 `npm install && npm ci`
6. **再スキャン** — パイプライン全体を再実行し、CLEARを期待

### HIGH(侵害されたバージョンがインストールされている)の場合

1. **respond.shを使用して安全なバージョンを固定**:   ```bash
   ./scripts/respond.sh --high axios 1.14.0

これは、overrides (npm) または resolutions (yarn) を package.json に追加し、再インストールを行い、確認を求めます。

  1. 手動で package.json 内で: ```json { "overrides": { "axios": "1.14.0" } }
    root@kitploit:~

Yarn: { "resolutions": { "axios": "1.14.0" } }

  1. 再インストール: npm ci
  2. 確認: スキャンを再実行

IOC リファレンス

ファイルシステム上の痕跡

永続化機構

ネットワーク指標

種類値
C2 ドメインsfrclak.com
C2 IP142.11.206.73
C2 ポート8000

偽装手法

プラットフォーム偽装対象
macOSApple システムプロセス (com.apple.act.mond)
WindowsWindows Terminal (ProgramData 内の wt.exe)

出力形式```

SCG ────────────────────────────────── [L1:audit] CLEAR|!!sev [L2:osv] CLEAR|!!vuln-ids [L3:static] CLEAR|!!pkg [IOC:fs] CLEAR|!!C:artifact [IOC:net] CLEAR|!!C:c2 [LF:integ] CLEAR|!!drift ─── Devil Gate(8) ──────────────────── G1:direct_dep G2:transitive G3:rat_fs G4:postinstall G5:lockfile G6:provenance G7:network G8:cicd ─── Devil Chain(R.N) ───────────────── S1:dependency → S2:runtime → S3:integrity → S4:environment ─── Loop ───────────────────────────── R.N → converge|continue [VERDICT] CLEAR|HIGH|CRITICAL ───────────────────────────────────────

root@kitploit:~
---

## 参考文献

| 出典 | 説明 |
|--------|-------------|
| [Zenn (JP)](https://zenn.dev/gunta/articles/0152eadf05d173) | 日本語による初期報告 |
| [Elastic Security Labs](https://elastic.co/security-labs/axios-one-rat-to-rule-them-all) | 技術的分析(RATの逆アセンブル、C2プロトコル、タイムライン) |
| [SANS](https://sans.org/blog/axios-npm-supply-chain-compromise-malicious-packages-remote-access-trojan) | エンタープライズIR手順 |
| [Huntress](https://huntress.com/blog/supply-chain-compromise-axios-npm-package) | YARA署名 |
| [Elastic Detections](https://elastic.co/security-labs/axios-supply-chain-compromise-detections) | SIEM検出ルール(YARA/osquery/KQL) |
| [Semgrep](https://semgrep.dev/blog/2026/axios-supply-chain-incident-indicators-of-compromise-and-how-to-contain-the-threat/) | 静的解析ルール、封じ込めガイド |
| [SOCRadar](https://socradar.io/blog/axios-npm-supply-chain-attack-2026-ciso-guide/) | IOCタイムライン付きCISOガイド |
| [Wiz](https://wiz.io/blog/axios-npm-compromised-in-supply-chain-attack) | クラウド影響分析、コンテナスキャン |
| [NVD CVE-2026-48710](https://nvd.nist.gov/vuln/detail/CVE-2026-48710) | **一次情報** — NVD正規エントリ(公開日2026-05-26、CVSS 3.1基本値6.5 MEDIUM、AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N) |
| [GHSA-86qp-5c8j-p5mr](https://github.com/Kludex/starlette/security/advisories/GHSA-86qp-5c8j-p5mr) | **一次情報** — `Kludex/starlette`に関するGitHub Security Advisory(公開日2026-05-21):「Hostヘッダーの検証欠如によりrequest.url.pathが汚染され、パスベースのセキュリティチェックをバイパスする」 |
| [Starlette v1.0.1 release notes](https://github.com/Kludex/starlette/releases/tag/1.0.1) | **一次情報** — 修正リリース(公開日2026-05-21)。`starlette>=1.0.1`(および推移的解決のために`fastapi>=0.119`)をピン留め |
| [Starlette BadHost coverage (KuCoin)](https://kucoin.com/news/flash/starlette-vulnerability-exposes-millions-of-ai-agents-to-hackers) | 二次情報 — Pythonエコシステムへの影響、AIエージェント関連の枠組み |
| [BadHost AI agent analysis (CryptoBriefing)](https://cryptobriefing.com/starlette-badhost-vulnerability-ai-agents/) | 二次情報 — FastAPI / vLLM / LiteLLMの下流への影響枠組み |

---

## Guild-CLI Devil 統合

[guild-cli](https://github.com/eris-ths/guild-cli)(またはDevilレンズワークフローを公開するプロジェクト)を使用している場合、レビューパスの際にSCGをセキュリティレンズの一つとして呼び出すことができます。

### 推奨される呼び出しパターン```bash
# Inside a guild-cli review session, in the project root:
~/path/to/supply-chain-guard/scripts/project-scan.sh       # for npm/yarn projects
~/path/to/supply-chain-guard/scripts/project-scan-py.sh    # for Python projects

# Capture the scan output as evidence for a judgment:
SCG_OUTPUT=$(~/path/to/supply-chain-guard/scripts/project-scan.sh 2>&1 || true)

# (a) Record it as a new judgment (fast-track — no prior review needed):
gate fast-track --from "$USER" \
  --action "SCG supply-chain scan (Devil lense)" \
  --reason "$SCG_OUTPUT"

# (b) Or attach it as the Devil lense on an existing review request <id>:
gate review <id> --lense devil --verdict concern --note "$SCG_OUTPUT"

Flag notes (verified against guild-cli): gate review requires an existing <id>, --lense (guild-cli spells it "lense"), and --verdict (ok / concern / reject). It has no --area flag. To log a fresh finding with no prior review object, use gate fast-track as in (a).

Why pair SCG with Devil

Devil's Advocate ("壊しにいく") and SCG share the same posture: assume the worst, scan systematically, then converge. SCG provides the supply-chain dimension of a Devil pass — what the project's dependencies might be doing behind your back — alongside other lenses (security / correctness / architecture / user / operations).

Limitations of the Devil pairing

  • SCG runs read-only; the Devil lense won't push fixes. Use respond.sh separately when remediation is required (with explicit user confirmation)
  • SCG output may exceed Devil context budgets in large repos; pipe through tail -50 if needed
  • For polyglot repos, run both project-scan.sh and project-scan-py.sh and merge findings

Disclaimer

SCG is a detection tool, not a security guarantee. Being upfront about what it can and cannot do is part of the design.

This software is provided "as-is" without warranty of any kind. By using Supply Chain Guard, you acknowledge and agree to the following:

  • Not a substitute for professional security. SCG is a supplementary detection tool, not a comprehensive security solution. It does not replace professional incident response, endpoint detection and response (EDR) software, or security audits.
  • No guarantee of detection. A CLEAR verdict means no matches were found against the tool's known threat patterns. It does not mean your system or project is free from compromise. Novel, unknown, or modified attacks may not be detected.
  • No guarantee of remediation. The remediation steps provided (respond.sh) address known indicators of specific threats. They may not fully remove all traces of a sophisticated compromise. If you suspect active compromise, engage a professional incident response team.
  • Use at your own risk. The authors are not liable for any damages, data loss, or security incidents arising from the use or inability to use this tool. This includes but is not limited to: false negatives (missed detections), false positives (incorrect detections), or unintended consequences of running remediation scripts.
  • Not legal or compliance advice. This tool does not satisfy regulatory, compliance, or legal requirements for security scanning. Consult appropriate professionals for compliance needs.

Limitations

Understanding what SCG cannot do is as important as knowing what it can.

Detection Boundaries

Threat Database Freshness

The Known Threats database (D.2 in SKILL.md) is manually maintained. It is not connected to any live threat feed. There is inherent latency between a new supply chain incident being discovered and this database being updated.

  • Last updated: 2026-05-27 (v4: Python support, BadHost CVE-2026-48710 added)
  • Coverage: 3 npm threat families (T001-T003) + 4 Python hijacked/typosquat entries + 1 Python CVE-flagged version entry (BadHost)
  • Python coverage scope (v4): primarily lockfile-based scanning (uv.lock / poetry.lock / requirements.txt). The CVE-flagged version layer is best-effort — it only flags packages that match _L3_CVE_LIST entries with strict semver-spec evaluation, and depends on packaging being installed for accurate version matching

Always cross-reference with live sources such as npm advisories, OSV.dev, and vendor security blogs listed in the References section.

False Positive Risk

The following IOC paths may, in rare cases, conflict with legitimate software:

IOC PathPotential False Positive
/tmp/.npm-cache/Legitimate npm caching in non-standard configurations
/tmp/ld.pyUnrelated Python scripts with the same filename
Process name wt.exeLegitimate Windows Terminal if located in ProgramData

Always verify IOC findings before running remediation. The ioc-scan.sh script reports findings for human review — it does not take any action. The respond.sh script requires explicit confirmation for every destructive action (default: NO) precisely because of this risk.

Network Scanning Limitations

  • lsof-based network checks only detect currently active connections. A C2 beacon that connects intermittently may not be active at scan time.
  • DNS cache checks are best-effort and OS-dependent. Cleared caches will not show historical connections.
  • Encrypted or tunneled C2 traffic cannot be detected by port/IP matching alone.

Scope

  • npm/yarn and Python (pip/poetry/uv). Does not cover cargo, go modules, or other package ecosystems.
  • Known threats only. This is a pattern-matching tool, not a behavioral analysis engine.
  • Point-in-time scan. Results reflect the state at the moment of execution. Continuous monitoring requires repeated execution or integration with CI/CD.

Integrity Verification

Verify that your copy of SCG has not been tampered with. Compare these SHA-256 checksums against your local files:

```

67ac6216cbe18fdf7050fd267bce4157c016e5c60cd4f84f63b8cf71e80ae3b9 scripts/env-scan.sh da01f8362563b55b1553f923a748f07d24f24522366e0545e6ba0c09801f8e54 scripts/project-scan.sh 77e7ebba6d44ea020e511a49bc2cbc974d01495de40d35e8dfb7fcc93008954b scripts/project-scan-py.sh 82aaa4ed898ce354addc064ccf84cca9a498ef4e90fe58613e1110146577609f scripts/ioc-scan.sh 72ed333838b5584c3b1faf889edc81b0e3195c27396c3b36c62aaebf5f952117 scripts/ioc-scan.ps1 0e6b30e57c959180e22e0ba16f860e9fdc7304045947995084703fb14381d12e scripts/respond.sh a44be79d909058c9d216e7cbc5cca736cf8816a492c8d35a6b90c74c042abf5b SKILL.md

root@kitploit:~
<!-- CHECKSUMS-END -->

確認するには:```bash
shasum -a 256 scripts/*.sh scripts/*.ps1 SKILL.md

注記: これらのチェックサムは最新リリースに対応しています。ファイルをローカルで変更した場合、チェックサムは異なります。SCG が更新されると、このセクションはコードの変更とともに更新されます。


ライセンス

MIT


Built by Eris — あなたの依存関係が他人の攻撃面になるべきではないからです。

ツールをダウンロード
ツール機能SCG との関係
npm auditレジストリの既知の脆弱性をチェックSCG は npm audit を L1 レイヤーとして含み、その上に IOC ファイルシステム/ネットワークスキャン、悪意のあるパッケージ検出、構造化された対応ワークフローを追加
osv-scannerGoogle の OSV データベースに対してロックファイルをスキャンSCG は OSV を L2 レイヤーとして含む。osv-scanner はファイルシステム上の RAT アーティファクトやアクティブな C2 接続をチェックしない
Snyk / Socket.devリアルタイムモニタリング、PR チェック、ライセンススキャンを備えた商用 SaaSSCG は無料、ローカル優先、アカウント不要、サードパーティへのデータ送信なし。継続的なモニタリングではなく、即時インシデント対応用に設計
手動 IRカスタムスクリプトによるアドホック調査SCG は、インシデントごとに変わる使い捨てのチェックリストではなく、繰り返し可能なフレームワーク(8検証ゲート、収束ループ、重要度マトリックス)を提供
レイヤーnpm/yarn (project-scan.sh)Python (project-scan-py.sh)
L1npm auditpip-audit
L2osv-scanner / OSV.dev APIosv-scanner
L3静的リスト(悪意のあるもの + タイポスクワット)静的リスト(悪意のあるもの / タイポスクワット + CVEフラグ付きバージョン)
IOCファイルシステム + ネットワークアーティファクトファイルシステム + プロセスアーティファクト(Python風味)
LFnpm ci --dry-run + 整合性カウントロックファイル整合性 (uv.lock / poetry.lock / requirements*.txt)
#ゲートカテゴリ質問
G1直接依存関係依存関係ポイズニング直接依存関係が侵害されたバージョンにありますか?
G2推移的依存関係依存関係ポイズニング推移的(間接)依存関係が侵害されていますか?
G3RATアーティファクトランタイム侵害ファイルシステムにRATの痕跡がありますか?
G4Postinstallスクリプトランタイム侵害疑わしいpostinstallスクリプトがありますか?
G5ロックファイルの整合性整合性ロックファイルが改ざんされましたか?
G6出所整合性パッケージは正当なソース/メンテナーからのものですか?
G7ネットワーク環境不審な外部接続がありますか?
G8CI/CDの堅牢化環境CI/CDがpostinstallをバイパスし、フリーズロックファイルを強制しますか?
プラットフォームパス種類
macOS/Library/Caches/com.apple.act.mondRAT バイナリ
macOS~/Library/LaunchAgents/com.apple.act.mond.plist永続化
Windows%PROGRAMDATA%\wt.exeRAT バイナリ (Windows Terminal に偽装)
Windows%TEMP%\6202033.vbsドロッパー
Windows%TEMP%\6202033.ps1ドロッパー
Linux/tmp/ld.pyRAT スクリプト
Linux/tmp/.npm-cache/ステージングディレクトリ
プラットフォーム
メカニズム
識別子
macOSLaunchAgentcom.apple.act.mond
WindowsスケジュールタスクWindowsTerminalUpdate
LinuxCrontab エントリld.py または .npm-cache を参照
What SCG checksWhat SCG does NOT check
Known compromised package versions (hardcoded DB)Zero-day supply chain attacks with no public advisory
Known malicious package namesTyposquats not yet in the static list
Specific IOC file paths for known threatsArbitrary malware dropped to non-standard paths
Specific C2 IP addresses and domainsC2 infrastructure that has been rotated or changed
postinstall scripts in direct dependenciesObfuscated malicious code within legitimate-looking scripts