TanStackサプライチェーン侵害:2026年5月のGitHub Actionsエコシステムにおける深刻な脆弱性の露呈
TL;DR
TanStackサプライチェーン侵害:「信頼」されたソフトウェアが牙を剥くとき
2026年5月11日、開発者コミュニティに衝撃が走りました。協定世界時(UTC)の19:20から19:26にかけて、現代のWeb開発の要であるTanStackのnpm名前空間が、TeamPCPとして知られる脅威アクターによって乗っ取られました。わずか6分間のうちに、彼らは42個の@tanstack/*パッケージにまたがる84個の悪意あるバージョンを公開しました。
これは単なるタイポスクワッティング攻撃ではありません。攻撃者は単に不正なコードをアップロードしただけでなく、実際のビルドパイプラインを侵害したのです。GitHub Actionsの脆弱性を悪用し、サプライチェーンに直接、認証情報を盗み出すワームを注入しました。驚くべきことに、これらの悪意あるパッケージのすべてが、有効なSLSA(Supply-chain Levels for Software Artifacts)の来歴(provenance)を備えていました。
信頼という幻想
これはソフトウェアセキュリティにおける転換点です。有効なSLSA Build Level 3の来歴を持つ悪意あるnpmパッケージが配布されたのは、今回が初めてのことです。少し考えてみてください。ビルドプロセスが完全に侵害されていたため、パッケージの安全性を証明するためのセキュリティ証明書が、技術的には正確でありながら、根本的には悪意あるものとなっていたのです。
TanStackが公開したインシデントのフォローアップで詳述されているように、このコードはnpm installを実行した瞬間に起動するように設計されていました。一度アクティブになると、AWSキー、GCP認証情報、Kubernetes設定、GitHubトークン、SSHキーなど、あらゆる情報を探し出します。その後、そのデータはSession/Oxenネットワークを通じて密かに外部へ送信されました。もしこれらのパッケージを実行していた場合、あなたの秘密情報は実質的に攻撃者へリアルタイムでブロードキャストされていたことになります。
攻撃の解剖
TeamPCP(DeadCatx3、PCPcat、ShellForceなどの別名でも知られる)は、TanStackだけで止まりませんでした。彼らは「Mini Shai-Hulud」ワームの亜種を展開しました。5時間の間に、この感染はnpmとPyPIの両方で170以上のパッケージに広がりました。
npmサプライチェーン侵害の事後分析では、個々のnpmアカウントが直接ハッキングされたわけではなく、攻撃者がGitHub Actionsのpull_request_targetワークフローを通じてバックドアを見つけたことが明らかにされています。彼らは実質的に、CI/CDパイプラインを騙して自分たちのために重労働を行わせたのです。
| 指標 | 詳細 |
|---|---|
| インシデント発生日 | 2026年5月11日 (19:20–19:26 UTC) |
| 影響を受けたパッケージ | 42個の @tanstack/* パッケージ |
| 悪意あるバージョン | 合計84バージョン |
| 来歴ステータス | 有効なSLSA Build Level 3 (侵害済み) |
| データ流出方法 | Session/Oxenネットワーク |
| 主要な脅威アクター | TeamPCP / DeadCatx3 |
なぜ従来のセキュリティは失敗したのか
私たちは長年、開発者に対して「来歴を確認せよ」「署名を検証せよ」と伝えてきました。しかし、ビルド環境そのものが嘘をついている場合はどうなるのでしょうか?
侵害はソースレベルで発生したため、自動化された信頼メカニズムはプログラムされた通りに動作しました。つまり、悪意あるペイロードを含んでいるにもかかわらず、「信頼できる」ビルドとして検証してしまったのです。これはTanStackだけの問題ではありません。Trivy、Checkmarx KICS、LiteLLM、Bitwarden CLIに対する最近の攻撃でも同様のパターンが見られます。CI/CDインフラの心臓部を直接狙った、組織的かつ高度なキャンペーンであることは明らかです。
侵害されたバージョンを使用していた場合、公式セキュリティアドバイザリの通り、最悪の事態を想定してください。TeamPCPがVectランサムウェアグループと連携しているという事実は、決定的な追い打ちです。彼らは単にデータを盗むだけでなく、将来的な大規模破壊攻撃を容易にするために認証情報を収集しているのです。
クリーンアップ:今すぐすべきこと
CI/CDパイプラインがこれらのパッケージに触れていた場合、環境全体が侵害されたものとして行動する必要があります。現状の現実は以下の通りです。
- すべてを破棄(または監査)する: これらのパッケージに触れたすべてのCI/CD環境や開発マシンを犯罪現場として扱ってください。
- すべてをローテーションする: パスワードを変更するだけでは不十分です。これらのマシンからアクセスされた可能性のあるすべてのAPIキー、クラウドトークン、SSHキーをローテーションしてください。それらはすでに攻撃者の手に渡っていると想定すべきです。
- 痕跡を追跡する: 5月11日前後のCI/CDログで、
npm installのアクティビティや不審な外部ネットワークトラフィックがないか確認してください。 - 依存関係をクリーンにする: 公式パッケージレジストリの追跡情報に記載されている安全なバージョンに更新してください。現在のロックファイルが安全であると想定してはいけません。
- 横方向への移動を警戒する: 攻撃者はランサムウェアと関連しているため、内部ネットワークを注意深く監視してください。彼らはビルドサーバーから本番環境への移動を狙っています。
自動化の脆さ
「Mini Shai-Hulud」ワームは、現代のビルドパイプラインが脆い信頼の網の上に成り立っていることを残酷に思い出させます。GitHub Actionsを標的にすることで、TeamPCPは私たちが10年かけて構築してきた境界防御を効果的に回避しました。私たちは、ビルド環境が自動化され「証明」されていれば安全であるという前提で運用してきました。今回のインシデントは、その前提が危険な誤りであることを証明しています。
詳細を知りたい方は、TanStackルーターリポジトリのイシュートラッカーに、OIDCトークンの抽出がどのように行われたかの詳細が記載されています。パイプラインがいかに簡単に操作され得るかを示す、身の引き締まる内容です。
調査が続く中、開発コミュニティへのメッセージはシンプルです。パイプラインを盲目的に信頼するのをやめてください。ビルド環境の整合性はもはや前提とすることはできず、コード自体に対して行うのと同じ懐疑心を持って検証し、監査しなければならない段階に達しています。脅威アクターは決して眠らないため、常に警戒を怠らないでください。