
Mini Shai-Hulud npm/PyPI サプライチェーン型ワーム(NHS CC-4781 · CVE-2026-45321)用スキャナー。gh-token-monitor の永続化、ペイロードのアーティファクト、攻撃者のコミットを検出します。Python、Bash、PowerShell。
現在、主要パッケージを食い荒らしている npm/PyPI サプライチェーンワームのための、無料のオフラインスキャナーです。Intrudify チームが開発しました。サインアップ不要、テレメトリなし、完全にオフラインで動作します。
NHS CC-4781 · CVE-2026-45321 (CVSS 9.6) · GHSA-g7cv-rxg3-hmpx
この数週間の間に npm install または pip install を実行したなら、これはあなた向けです。
特に @tanstack/*、@uipath/*、@mistralai/*、@cap-js/*、または PyPI の litellm、mistralai、guardrails-ai、lightning、telnyx に触れた場合はなおさらです。これらは毒物混入が確認された名前空間です。合計149パッケージ、現在までに400以上の悪意のあるバージョンが追跡されています。
Mini Shai-Hulud が被害をもたらしているワームです。npm と GitHub の認証情報を窃取し、macOS、Linux、Windows にまたがって永続化を仕込み、そして(ほとんどの人が見落とす部分ですが)ブービートラップ付きのトークンを残します。感染マシンからそれを失効させると rm -rf ~/ が発動します。ホームディレクトリが消えます。クリーンアップの順序が重要です。
このスキャナーは、パッケージ、ロックファイル、永続化機構、ペイロードのハッシュ、C2 トラフィック、git 履歴、CI 環境にわたる既知の侵害指標を19項目すべてチェックします。読み取りのみを行います。書き込み、削除、外部への通信は一切行いません。
3つのスクリプト、1つの役割: Python、Bash、PowerShell。あなたの環境に合うものを選んでください。
Intrudify は、欧州初の完全自律型 Web アプリケーション向け AI ペネトレーションテスターです。提案はシンプルです: 3万ドルの人的ペンテストチームと同じ成果を、数週間ではなく数時間で提供し、NIS2、SOC2、ISO27001 に対応した監査対応レポートとステップバイステップの修復ガイダンスを添えます。コードをリリースしていてセキュリティチームを持たないなら、私たちがそのギャップを埋めます。
このスキャナーはその一部です。サプライチェーンワームは調達サイクルより速く動くため、無料で提供しています。午後11時に CVE フィードを眺めている開発者に必要なのは営業電話ではありません。30秒で実行でき、自分がやられているかどうかを教えてくれるツールが必要なのです。
進行中の侵害(CI/CD パイプラインの乗っ取り、GitHub Actions OIDC トークンの悪用、npm/PyPI サプライチェーンのインシデントレスポンス)については、直接連絡してください: [email protected]
この数週間の間に npm または PyPI パッケージをインストールした場合、特に @tanstack/*、@uipath/*、@mistralai/*、@cap-js/*、または PyPI の litellm、mistralai、guardrails-ai、lightning、telnyx のいずれかに触れた場合は、あなたのマシンが侵害されている可能性があります。
Mini Shai-Hulud ワームは認証情報を窃取し、macOS、Linux、Windows にまたがって永続化を仕込み、誤った順序でクリーンアップするとホームディレクトリを消去する可能性があります。
このスキャナーは既知の侵害指標を19項目すべてチェックします。読み取りのみを行い、マシンから何かを書き込んだり、削除したり、送信したりすることはありません。
ワームはブービートラップ付きの npm トークンを仕込みます。感染マシンからそれを失効させると rm -rf ~/ が発動します。順序が重要です。
スキャナーが CRITICAL の検出結果を出した場合は、この順序で実行してください:
| 実行環境... | 使用するもの |
|---|
# macOS / Linux
chmod +x scan_cc4781.sh
./scan_cc4781.sh --deep
# Windows PowerShell
.\scan_cc4781.ps1 -Deep
# Python (any OS)
python3 scan_cc4781.py --deep
--deep / -Deep フラグは、現在のディレクトリ配下のすべての node_modules を再帰的に走査します。モノレポや複数のプロジェクトがある場合は推奨です。
PowerShell がスクリプトをブロックする場合:
powershell -ExecutionPolicy Bypass -File .\scan_cc4781.ps1 -Deep
RESULT: 0 CRITICAL / 0 HIGH → you're clean
RESULT: X CRITICAL / Y HIGH → stop and follow the steps above before doing anything else
CRITICAL = 侵害が確認された指標。直ちに対処してください。
HIGH = 疑わしい。調査してください。一部の HIGH は想定される誤検知です(下記参照)。
CC-4781 / Mini Shai-Hulud Supply-Chain Attack Scanner
Host: your-hostname OS: your-os
Checking 149 npm packages (400+ malicious versions), 5 PyPI packages
[OK] gh-token-monitor process not detected
[HIGH] payload-artefact: sysmon.py -> .../coverage/sysmon.py <- false positive: Python coverage package
[HIGH] payload-artefact: execution.js -> .../n8n/.../execution.js <- false positive: n8n
[OK] git-tanstack.com does not resolve
[OK] No malicious optionalDependencies github: references found
[OK] No attacker exfil commits in git log
RESULT: 0 CRITICAL / 4 HIGH
sysmon.py と execution.js の HIGH 検出は誤検知です: ファイル名がワームのペイロード名と一致していますが、SHA-256 ハッシュは一致しません。CRITICAL は、ハッシュが悪意のあることが確認されたペイロードと一致した場合にのみ発火します。
JSON 出力形式: { "host": "...", "findings": [{ "severity": "CRITICAL|HIGH", "category": "...", "detail": "...", "path": "..." }] }
重要: npm audit signatures が成功しても安全とは限りません。Mini Shai-Hulud は、GitHub Actions OIDC パイプラインの乗っ取りを介して有効な SLSA Build Level 3 の provenance を生成した最初の文書化された攻撃です。署名はビルドの provenance を検証するものであり、ビルドパイプライン自体がクリーンであることを検証するものではありません。
このワームは3層の難読化を使用しています: obfuscator.io、次に Fisher-Yates 置換暗号(PBKDF2-SHA256、20万反復)、さらに AES-256-GCM。認証情報は、Session Protocol CDN、GitHub GraphQL デッドドロップ、ICP ブロックチェーンキャニスター、WAV ステガノグラフィーを介して外部送信されます。
永続化は、macOS LaunchAgent、Linux systemd ユニット、Windows スケジュールタスクまたは HKCU Run キー、Claude Code SessionStart フック、VS Code folderOpen タスク、Python .pth スタートアップファイルとして仕込まれます。侵害された CI ランナーでは Kubernetes DaemonSet を仕込みます。
RANSOM TOKEN(IfYouRevokeThisTokenItWillWipeTheComputerOfTheOwner)は、60秒ごとに api.github.com/user をポーリングする gh-token-monitor デーモンとペアになっています。40x 応答は、Linux/macOS では rm -rf ~/ を、Windows ではそれに相当する操作を発動します。
GHSA-g7cv-rxg3-hmpx、JFrog Security Research、StepSecurity、Socket.dev、Wiz Threat Research、Snyk、Aikido Security、Orca Security、Mend.io (2026-05-13時点) から集約。
検出ルール: Sigma 5299fadf-f228-4526-8274-251db1960be9 (Shai-Hulud Malicious Bun Execution)、Palo Alto ATP シグネチャ 87120。
Intrudify は、npm/PyPI サプライチェーンのインシデントレスポンス(IR)、CI/CD パイプラインの乗っ取り、GitHub Actions OIDC トークンの悪用を専門としています。
連絡先: [email protected] · intrudify.com
| macOS または Linux | scan_cc4781.sh (Python が良ければ scan_cc4781.py) |
| Windows | scan_cc4781.ps1 (ネイティブ Python なら scan_cc4781.py) |
| CI / Docker | scan_cc4781.py または scan_cc4781.sh |
| フラグ | Bash / Python | PowerShell | 機能 |
|---|
| ディープスキャン | --deep | -Deep | CWD 配下のすべての node_modules を再帰走査 |
| 対象ディレクトリ | --npm-dir /path | -NpmDir C:\path | 特定の node_modules フォルダーをスキャン |
| JSON 出力 | --json | -Json | SIEM / SOAR 向けの機械可読出力 |
| # | カテゴリ | 検出内容 |
|---|
| 1 | npm バージョン | 149パッケージ、悪意のあることが確認された400以上の正確なバージョン |
| 2 | ロックファイル | package-lock.json、pnpm-lock.yaml、yarn.lock |
| 3 | PyPI | litellm、telnyx、lightning、mistralai、guardrails-ai |
| 4 | 永続化 | macOS LaunchAgent、Linux systemd、Windows スケジュールタスク + HKCU Run キー |
| 5 | 永続化 | Claude Code SessionStart フック、VS Code folderOpen タスク |
| 6 | ペイロードファイル | 13のファイル名 + 既知の悪性ハッシュ11件に対する SHA-256 |
| 7 | C2 ホスト | /etc/hosts、プロキシ環境変数、WinHTTP 内の11ドメイン |
| 8 | C2 DNS | 全11の C2 ドメインの名前解決を確認 |
| 9 | C2 接続 | 追跡中の5つの C2 IP へのアクティブな TCP 接続 |
| 10 | package.json | optionalDependencies github:tanstack/router インジェクション |
| 11 | package.json | prepare: bun run tanstack_runner.js インジェクション |
| 12 | ワークフロー | .github/workflows/codeql_analysis.yml、format-check.yml |
| 13 | Git ログ | 攻撃者の外部送信(exfil)コミット([email protected]) |
| 14 | Git ブランチ | Dune をテーマにしたワームブランチ、dependabout/ タイポスクワッティング |
| 15 | npm トークン | RANSOM TOKEN の検出 |
| 16 | シェル履歴 | C2 ドメイン、IP、ペイロードファイル名 |
| 17 | CI 環境 | GitHub Actions の認証情報漏えい |
| 18 | Git リモート | 攻撃者のアカウントと C2 ドメイン |
| 19 | 高度な永続化 | sysmon/pgmon サービス偽装、litellm_init.pth、Kubernetes DaemonSet、WAV ステガノグラフィー |
| 波 | 日付 | パッケージ | 発行元 |
|---|
| TanStack | 2026年5月 | 43の @tanstack/* パッケージ | voicproducoes |
| UiPath / JFrog | 2026年5月 | 66の @uipath/* パッケージ | voicproducoes / zblgg |
| SAP @cap-js | 2026年4月 | @cap-js/db-service、@cap-js/sqlite、@cap-js/postgres、mbt | cloudmtabot |
| PyPI | 2026年2月〜4月 | litellm、telnyx、lightning、mistralai、guardrails-ai | 各種 |