
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 を使用すべき場合:
他のものを使用すべき場合:
私たちは、限界について正直でありたいと思います。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
両方のパイプラインは同じ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)の場合、関連するサブディレクトリから両方のプロジェクトスキャナを順次実行します。
> **安全性設計:** すべてのスキャンスクリプトは厳密に読み取り専用です。決して変更、削除、インストールは行いません。修復スクリプト(`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.2 | 1.14.1 |
| axios (レガシー) | 0.30.3 (正確) | 0.30.4 |
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
### 重大度マトリクス
| レベル | 条件 | アクション |
|-------|-----------|--------|
| **重大** | 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
### `scripts/ioc-scan.sh`
IOCのみのスキャン。既知のC2インジケーターに対して、ファイルシステムのアーティファクト、実行中のプロセス、ネットワーク接続をチェックします。クロスプラットフォーム(macOS/Linux/Windows、PowerShell経由)。```bash
./scripts/ioc-scan.sh
scripts/respond.sh対話的な修復。 すべての破壊的な操作には、[y/N] の確認が必要です(デフォルト:NO)。```bash
./scripts/respond.sh --critical
./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)
`--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
npm ci --ignore-scripts # Block postinstall execution
yarn install --frozen-lockfile --ignore-scripts
> **アクションはタグではなく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 に追加し、再インストールを行い、確認を求めます。
package.json 内で: ```json
{ "overrides": { "axios": "1.14.0" } }
Yarn: { "resolutions": { "axios": "1.14.0" } }
npm ci| 種類 | 値 |
|---|---|
| C2 ドメイン | sfrclak.com |
| C2 IP | 142.11.206.73 |
| C2 ポート | 8000 |
| プラットフォーム | 偽装対象 |
|---|---|
| macOS | Apple システムプロセス (com.apple.act.mond) |
| Windows | Windows 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 ───────────────────────────────────────
---
## 参考文献
| 出典 | 説明 |
|--------|-------------|
| [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 reviewrequires an existing<id>,--lense(guild-cli spells it "lense"), and--verdict(ok/concern/reject). It has no--areaflag. To log a fresh finding with no prior review object, usegate fast-trackas in (a).
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).
respond.sh separately when remediation is required (with explicit user confirmation)tail -50 if neededproject-scan.sh and project-scan-py.sh and merge findingsSCG 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:
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.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.Understanding what SCG cannot do is as important as knowing what it can.
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.
_L3_CVE_LIST entries with strict semver-spec evaluation, and depends on packaging being installed for accurate version matchingAlways cross-reference with live sources such as npm advisories, OSV.dev, and vendor security blogs listed in the References section.
The following IOC paths may, in rare cases, conflict with legitimate software:
| IOC Path | Potential False Positive |
|---|---|
/tmp/.npm-cache/ | Legitimate npm caching in non-standard configurations |
/tmp/ld.py | Unrelated Python scripts with the same filename |
Process name wt.exe | Legitimate 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.
lsof-based network checks only detect currently active connections. A C2 beacon that connects intermittently may not be active at scan time.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
<!-- CHECKSUMS-END -->
確認するには:```bash
shasum -a 256 scripts/*.sh scripts/*.ps1 SKILL.md
注記: これらのチェックサムは最新リリースに対応しています。ファイルをローカルで変更した場合、チェックサムは異なります。SCG が更新されると、このセクションはコードの変更とともに更新されます。
Built by Eris — あなたの依存関係が他人の攻撃面になるべきではないからです。
| ツール | 機能 | 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検証ゲート、収束ループ、重要度マトリックス)を提供 |
| レイヤー | 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) |
| # | ゲート | カテゴリ | 質問 |
|---|
| G1 | 直接依存関係 | 依存関係ポイズニング | 直接依存関係が侵害されたバージョンにありますか? |
| G2 | 推移的依存関係 | 依存関係ポイズニング | 推移的(間接)依存関係が侵害されていますか? |
| G3 | RATアーティファクト | ランタイム侵害 | ファイルシステムにRATの痕跡がありますか? |
| G4 | Postinstallスクリプト | ランタイム侵害 | 疑わしいpostinstallスクリプトがありますか? |
| G5 | ロックファイルの整合性 | 整合性 | ロックファイルが改ざんされましたか? |
| G6 | 出所 | 整合性 | パッケージは正当なソース/メンテナーからのものですか? |
| G7 | ネットワーク | 環境 | 不審な外部接続がありますか? |
| G8 | CI/CDの堅牢化 | 環境 | CI/CDがpostinstallをバイパスし、フリーズロックファイルを強制しますか? |
| プラットフォーム | パス | 種類 |
|---|
| macOS | /Library/Caches/com.apple.act.mond | RAT バイナリ |
| macOS | ~/Library/LaunchAgents/com.apple.act.mond.plist | 永続化 |
| Windows | %PROGRAMDATA%\wt.exe | RAT バイナリ (Windows Terminal に偽装) |
| Windows | %TEMP%\6202033.vbs | ドロッパー |
| Windows | %TEMP%\6202033.ps1 | ドロッパー |
| Linux | /tmp/ld.py | RAT スクリプト |
| Linux | /tmp/.npm-cache/ | ステージングディレクトリ |
| プラットフォーム |
|---|
| メカニズム |
|---|
| 識別子 |
|---|
| macOS | LaunchAgent | com.apple.act.mond |
| Windows | スケジュールタスク | WindowsTerminalUpdate |
| Linux | Crontab エントリ | ld.py または .npm-cache を参照 |
| What SCG checks | What SCG does NOT check |
|---|
| Known compromised package versions (hardcoded DB) | Zero-day supply chain attacks with no public advisory |
| Known malicious package names | Typosquats not yet in the static list |
| Specific IOC file paths for known threats | Arbitrary malware dropped to non-standard paths |
| Specific C2 IP addresses and domains | C2 infrastructure that has been rotated or changed |
postinstall scripts in direct dependencies | Obfuscated malicious code within legitimate-looking scripts |