先に要点
- Mini Shai-Hulud Worm は 2026年5月12日 に The Hacker News が報じた、npm / PyPI を横断する大規模サプライチェーン攻撃。脅威アクターは ` TeamPCP』。
- 被害は 170 以上のパッケージ、累計 5.18 億ダウンロード 規模。TanStack(CVE-2026-45321 / CVSS 9.6)、Mistral AI(PyPI)、Guardrails AI など、開発者が普段使う人気 OSS が直撃された。
- 攻撃の核は ` 自己拡散ワーム』。盗んだ npm トークンを使って同じメンテナーの他パッケージにも汚染版を公開し、感染を広げる。GitHub Actions cache poisoning や orphaned commit からの侵入も組み合わさっている。
- 感染すると クラウド認証情報 / GitHub トークン / 暗号資産ウォレット / AI ツール認証情報 が盗まれるほか、npm トークン失効を 60 秒間隔で監視し、失効時に `rm -rf ~/』 を発火する dead-man's switch や、地域判定で `rm -rf /』 を確率的に実行するロジック まで仕込まれている。
Mini Shai-Hulud ってよく聞くけど、結局なに?』 TanStack の CVE が出たって本当?』 `自分が使ってる npm パッケージは大丈夫?』 ── 2026年5月12日に The Hacker News が報じた Mini Shai-Hulud ワーム は、フロントエンド界隈と AI 開発界隈の両方を直撃する、これまでで最も派手な npm / PyPI サプライチェーン攻撃の1つになりました。
ざっくり言うと、これは npm / PyPI の人気パッケージのメンテナーアカウントを乗っ取り、悪意あるバージョンを公開 → そのパッケージをnpm install』 した開発者の認証情報をごっそり盗む → 盗んだ npm トークンで同じメンテナーの他パッケージにも感染を広げる』 という ` 自己拡散型』 の攻撃です。
Shai-Hulud』 は 2025 年に同様の手口で 700 以上のパッケージを侵害した有名な npm ワームのコードネーム。今回の Mini』 はその派生・縮小版という位置づけですが、TanStack / Mistral AI / Guardrails AI / UiPath / OpenSearch』 といった <strong>誰もが使う基盤系パッケージ</strong> が含まれている点で、影響範囲は決して Mini』 ではありません。
この記事では、現時点(2026年5月15日)で公開されている情報をもとに、攻撃の全体像・被害パッケージ・手口・自分のプロジェクトで何をすべきか を整理します。 状況は数日単位で更新されるので、最終確認は必ず一次情報(The Hacker News、各パッケージの公式アナウンス、GitHub Advisory、CVE 情報)を見てください。
事件の全体像
まず `何が、いつ、どこで起きたか』 を一枚で押さえます。
| 項目 | 内容 |
|---|---|
| 事件名 | Mini Shai-Hulud(`Shai-Hulud: Here We Go Again』) |
| 初出 | 2026年5月12日(The Hacker News) |
| 脅威アクター | TeamPCP |
| 主要 CVE | CVE-2026-45321(TanStack ルーター関連、CVSS 9.6) |
| 影響パッケージ | npm / PyPI 合計 170以上 |
| 累計ダウンロード数 | 5.18 億超 |
| 生成された不正リポジトリ | GitHub 上で 400 以上 |
| 攻撃の性質 | 自己拡散ワーム + 認証情報窃取 + dead-man's switch ワイパー |
`派手な事件名 + 中核 OSS が直撃 + ダウンロード規模が桁外れ』 という3点が揃った、2026年でもっとも語られるであろう事件のひとつです。
被害を受けた代表的なパッケージ
` 自分が触ってる依存に含まれていないか』 を判断するために、代表的なパッケージ群を整理します(報道時点の情報、随時更新される可能性あり)。
npm 側の主な被害
@opensearch-project/opensearch v3.5.3 / 3.6.2 / 3.7.0 / 3.8.0、@squawk/mcp 0.9.5、@squawk/weather 0.5.10、@tallyui/connector-medusa v1.0.1〜1.0.3、TanStack ルーター系の特定バージョン群。
PyPI 側の主な被害
guardrails-ai 0.10.1、mistralai 2.4.6。AI 開発界隈で広く使われるパッケージが直撃された形。
その他
UiPath / DraftLab 系の各種パッケージ。`業務 RPA / クリエイティブ系』 のツールチェーンにも侵入していた。
バージョンが超重要
` パッケージ名だけ』 ではなく、` どのバージョンが汚染されたか』 までセットで確認しないと過剰反応 / 反応漏れの両方が起きる。`lockfile を世代別に検査』 のような確認が現実的。
`AI 開発と TanStack 系フロントエンド開発のどちらも当事者になっている』 のが、今回の事件の刺さり方を象徴しています。
攻撃の手口 — 4段ロケット
どうやって入ってきて、何をして、どう広がったか』 を順に追います。これを理解すると、自分のプロジェクトでも同じことが起きうるか』 を判断しやすくなります。
1. 初期侵入
GitHub fork 経由の orphaned commit
正規リポジトリの fork に対し、`どの履歴にも紐づかない孤児コミット』 を仕込む手口。`正規リポを見ているつもり』 が、攻撃者の改変を読み込んでいる状態にされる。
GitHub Actions cache poisoning
` GitHub Actions の cache に攻撃用ファイル』 を仕込み、後続の正規ワークフローがそれを取り込んで実行する流れ。`誰も見ていない CI の隙間』 を突くタイプ。
CI ランタイムのメモリから `OpenID Connect トークン』 を抜き取り、`正規の権限で npm publish できる状態』 に成り済ます。
入口は1つではない
これら複数の入口を 組み合わせ て使う。`どこかは塞いだ』 だけだと足りない、というのが今回の難しさ。
昔ながらの npm アカウントハック』 ではなく、<strong> CI / OIDC / Git の弱点を組み合わせた現代型の手口』 なのが、Mini Shai-Hulud の特徴です。
2. マルウェアの仕込み
`乗っ取ったメンテナー権限で、何を仕込むか』 が次のステップです。
npm パッケージ向け
難読化された JavaScript(代表的なファイル名 `router_init.js』)を含む新バージョンを publish。Bun ランタイム経由で実行されるよう仕掛けることで、Node のフックを警戒している監視を素通りする狙いがある。
PyPI パッケージ向け
setup.py の preinstall hook』 から `node setup.mjs』 を呼ばせ、リモートサーバから認証情報窃取ツールをダウンロード → 実行。`Python パッケージなのに Node が動く』 違和感が罠の本体。
永続化フック
Claude Code / VS Code の永続化フック』 をインストール。一度感染した開発者マシンで、`将来の作業も自動的に乗っ取られる』 状態を作る。
`一度刺さったら、その後の開発活動も全部見られている』 のが、今回の特に怖い部分です。
3. 窃取・流出
`どんな情報が、どこに流れているのか』 を整理します。
盗まれる情報
① クラウドプロバイダー認証情報(AWS / GCP / Azure / Cloudflare 等)、② GitHub トークン、③ npm / PyPI のパブリッシュ用トークン、④ 暗号資産ウォレット、⑤ AI ツールの API キー(OpenAI / Anthropic 等)、⑥ メッセージングアプリの認証情報、⑦ CI/CD システムの認証情報。
流出経路
① Session Protocol 系の `filev2.getsession[.]org』、② GitHub API 経由で `claude@users.noreply.github.com』 名義のコミットとして攻撃者リポへ送出、③ typosquat ドメイン `git-tanstack[.]com』、④ `api.masscan[.]cloud』 系の外部サーバ。複数チャネルに分散 しており、`どれか1つを塞いだ』 では止まらない。
不正リポジトリ生成
盗んだ GitHub 認証で 400以上のリポジトリ を新規作成。多くは `Shai-Hulud: Here We Go Again』 という文字列を含み、`これ見よがしの示威行為』 とも取れる挙動。
気付きにくさ
` 自分が出した覚えのないコミット』 や `見たことのない外部通信』 が動くまで気付かないケースが多い。`CloudTrail や GitHub の Audit Log』 を後から見ないと検出が難しい。
`認証情報の流出が一気に多方面 + 大量』 という規模感が、Mini Shai-Hulud の被害を桁違いにしています。
4. 自己拡散と破壊
Mini Shai-Hulud』 という名前が Worm(ワーム)』 を冠する理由が、ここにあります。
自動拡散
盗んだ npm トークンが `2FA バイパスフラグ』 を持っている場合、感染ホストから 同じメンテナーが公開している全パッケージを列挙』 し、それぞれに汚染版を publish する。`1メンテナーをやられると、そのメンテナーの全 OSS が即倒れる』 という構造。
dead-man's switch
感染プロセスは 60 秒間隔で `自分の npm トークンが取り消されていないか』 をチェック』。取り消された瞬間に ` rm -rf ~/』 を実行 し、開発者のホームディレクトリを丸ごと吹き飛ばす。`取り急ぎ npm トークンを失効すれば安全』 という直感の逆を突かれる。
地政学ロジック
Mistral AI PyPI パッケージのコードには ` ロシア言語環境は回避 / イスラエル・イラン地域では 1/6 の確率で `rm -rf /』 を実行』 という地域別ロジックが埋め込まれていた。`サプライチェーン攻撃が地政学的な破壊行為とも連動する』 警告として注目される。
攻撃者のメッセージ性
不正リポジトリやコミットメッセージに `Shai-Hulud: Here We Go Again』 を残しており、`2025年の Shai-Hulud の続編』 を意識した示威行為的な側面が強い。`金銭目的だけ』 の犯行ではなく、`コミュニティへの挑戦』 として読める要素もある。
単に情報を盗まれる』 で済まないのが今回の事件で、ワイパーで開発環境が消える』 感染を広げる』 までセットなのが、できれば踏みたくない地雷』 に変えています。
あなたの現場で今すぐやるべき緊急対応
自分のチームが踏んでいる可能性があるか』 をどう判断し、何をどの順で実行するか整理します。 迷ったら <strong> 急がば回れ』、特に ` npm トークンを直ちに失効させない』 のが重要なポイントです(失効=ワイパー発火、を防ぐため)。
`焦って npm トークン失効 → ワイパー発火』 が、いま最も避けたい失敗パターンです。
長期的に積んでおきたい防御
事件対応が終わったら、`次に同種の攻撃が来たときに減衰させる』 ための仕組みを積んでおきます。
SLSA / provenance 検証
npm の `--audit-signatures』 や PyPI の `Trusted Publishers』、SLSA provenance の検証を CI に組み込む。`本物のメンテナーから出されたパッケージか』 を機械的に確かめる仕組み。
依存の固定とレビュー
`pinned バージョン』 と pnpm の `pnpm-lock.yaml』 を必ず commit。`新しいバージョンをそのままアップデート』 ではなく、`変更点をレビューしてから』 のフローを徹底。
` GitHub Actions の OIDC』 を使うときは、対象リポジトリやワークフローを `必要最小限』 に絞る。`オールマイティな OIDC ロール』 を1個作って使い回す、を避ける。
攻撃そのものをゼロにする』 のは現実的に不可能なので、<strong> 踏んだときの被害を縮める / 早く気付く』 に投資するのが、今回の事件から得るべき本筋です。
AI 時代のサプライチェーン攻撃という側面
Mini Shai-Hulud の特に新しい点は、` AI 開発エコシステムを正面から狙った』 ことです。
AI パッケージへの侵入
` mistralai』 や `guardrails-ai』 のような AI 開発の中核ライブラリ』 が直撃された。これらは LLM 連携や AI 出力の検証に使われる、`AI を組み込むなら誰でも触る』 系の依存。
AI ツール認証情報の窃取
OpenAI / Anthropic / その他 LLM プロバイダの API キーが 明示的に窃取対象 になっている。盗まれたキーで使い切られると、高額請求 系の事故と直結する。
Claude Code への永続化
` Claude Code / VS Code に永続化フック』 を仕込む手口は、` AI コーディング環境そのものを乗っ取る』 という新しい段階の攻撃を示している。`AI が書いたコードを実行する場』 が、そのまま攻撃対象になる時代。
`AI 開発が便利になればなるほど、その入り口を狙う攻撃も高度化する』 という構図を、Mini Shai-Hulud は非常に鮮やかに見せています。
Mini Shai-Hulud Worm に関するよくある質問
Q. 自分が使ってる npm パッケージのバージョンが新しいけど、もう大丈夫ですか?
A. 公開済みの汚染バージョンをinstall せずに済んでいる』 のが大丈夫の条件』です。たとえ最新版に上げていても、過去に一度でも汚染バージョンを npm install』 した PC があれば、認証情報は盗まれた前提で対応する必要があります。lockfile の履歴』 を見て、過去のバージョンを使った形跡があるか確認するのが正解です。
Q. `npm audit』 で検出できますか?
A. 部分的にしか検出できません』</strong>。GitHub Advisory に登録されているものはnpm audit』 で見えますが、新規発覚直後はまだ完全には反映されていないケースが多いです。` 公式アナウンス + GitHub Security Advisory + The Hacker News などの一次情報』 を併用するのが現実的です。
Q. npm トークンを今すぐ失効したいです、危険ですか?
A. 感染している PC では dead-man's switch ワイパーが発火する可能性</strong></strong>があります。まずネット隔離 → ディスクをイメージング保全 → そのあと別 PC でトークン取り消し』 の順を踏むのが安全です。`感染していないことが確実』 な PC であれば、即座に取り消しても問題ありません。
Q. PyPI 側だけが被害なら、Node プロジェクトは関係ないですか?
A. 関係あります』</strong>。今回の PyPI パッケージは <strong> preinstall hook 経由で Node スクリプトを呼ぶ』 設計でした。Python のプロジェクトで pip install』 した PC で、Node で書かれた窃取ツール』 が動いた、という事例があります。`PyPI と npm のクロスプラットフォーム攻撃』 を前提に対策する必要があります。
Q. 開発 PC を Mac mini や Linux で物理的に分離していれば安全ですか?
A. 一定の被害局所化効果はある』</strong>のが正直なところです。開発用 PC が侵害されても、ウォレットや個人 PC は守られる』 という意味で、本業 PC』 と 開発 / OSS 触り用 PC』 を分ける運用は依然として有効です。ただし `CI / クラウド側に持つ認証情報』 はネットワーク越しに盗まれる可能性が残るので、それだけでは完全ではありません。
Q. 今後同種の攻撃を完全に防ぐことはできますか?
A. 現状のエコシステムでは完全防御は不可能』</strong>です。npm / PyPI 側のメンテナーアカウント保護』 OSS の signing / provenance 普及』 が進めば改善方向ですが、使う側にも 踏んだときの被害を縮める』 仕組みが必要』 です。完全に防ぐ』 ではなく `事故ったとき素早く気付いて止める』 にお金と時間を投資するのが現実解です。
Q. 個人開発者は何をすべきですか?
A. ① Mac / Linux / Windows いずれかに開発 PC を集中させ、本業の業務 PC とは分離』</strong>、② <strong> AI API キーは個人鍵で、月の支出上限を必ずクラウド側で設定』、③ ロックファイルをコミットする・無闇に最新版に上げない』</strong>、④ <strong> <a href="/articles/representative-http-status-codes-explained">CloudTrail 系の Audit Log』</a> を眺める習慣をつける』</strong> の4つから始めるのが現実的です。チームに属していなくても、自分の小さな OSS が誰かのキーを盗む踏み台になる』 リスクは確かに存在します。
参考リンク
- The Hacker News: Mini Shai-Hulud Worm Compromises TanStack, Mistral AI, Guardrails AI & More Packages
- The Hacker News: Weekly Recap: Linux Rootkit, macOS Crypto Stealer, WebSocket Skimmers and More
- The Hacker News: Quasar Linux RAT Steals Developer Credentials for Software Supply Chain Compromise
- npm: Security Best Practices
- SLSA: Supply-chain Levels for Software Artifacts
- PyPI: Trusted Publishers