2026年5月11日、人気のあるオープンソースプロジェクト「TanStack」が、極めて複雑なサプライチェーン攻撃を受けた。この事件はTanStack自体に影響を与えただけでなく、Mistral AI、UiPath、OpenAI、Grafana Labsを含む160以上のnpmおよびPyPIパッケージにも波及し、合計400以上の悪意のあるバージョンが公開された。この攻撃は「TeamPCP」という脅威組織によって仕掛けられ、「Mini Shai-Hulud」と名付けられた。この事件は、現代のソフトウェア開発におけるオープンソースエコシステムの脆弱性を浮き彫りにするとともに、Web3分野のセキュリティ対策に対して警鐘を鳴らすものとなった。
TanStackサプライチェーン攻撃事件の振り返り

この攻撃は2026年5月11日UTC時間19:20から19:26の間に発生し、攻撃者はわずか6分間で、42の@tanstackネームスペース下のnpmパッケージに対し、84個の悪意あるバージョンを公開した。注目すべきは、攻撃者がnpmの認証情報を直接盗んだり、フィッシングによってメンテナンス担当者のアカウントを取得したりしたのではなく、GitHub Actionsのワークフローにおける一連の脆弱性を悪用した点である。
- 脆弱性の連鎖的悪用: 攻撃の連鎖には、3つの重要なGitHub Actionsの脆弱性が関与していた:
pull_request_targetワークフローの設定不備、GitHub Actionsキャッシュの汚染、および実行時のOpenID Connect (OIDC) トークンの抽出。攻撃者はまず、TanStack/routerリポジトリに偽装ブランチを作成し、悪意のあるペイロードを含むプルリクエストをコミットした。pull_request_targetワークフローの設定上の問題により、このプルリクエストはベースリポジトリへのアクセス権限を持つ環境で実行され、攻撃者がGitHub Actionsのキャッシュに悪意のあるコンテンツを注入することを可能にしました。その後、正当なメンテナーがコードをマージしてデプロイワークフローをトリガーすると、汚染されたキャッシュが復元され、攻撃者はGitHub Actionsランナープロセスのメモリから直接OIDCトークンを抽出できるようになった。 - 悪意のあるペイロードと拡散: この攻撃で使用された悪意のあるペイロードは「Mini Shai-Hulud」と呼ばれ、自己拡散型の認証情報窃取ワームである。感染したパッケージがインストールされると、悪意のあるコードがnpmのライフサイクルフック内で実行され、GitHubトークン、npmトークン、AWS、GCP、Azureの認証情報、Kubernetesサービスアカウントのトークン、HashiCorp Vaultのトークン、SSH鍵、環境変数など、多種多様な機密情報を窃取します。さらに、このワームは、被害者が公開権限を持つ他のnpmパッケージを特定し、それらのアーカイブを改ざんして同じ悪意のある依存関係を注入し、バージョン番号を更新した上で、盗んだ認証情報を使用して新しい感染バージョンを公開することで、自己拡散を実現します。
- 隠蔽性と影響: この攻撃の危険性は、マルウェア化されたパッケージがTanStackの正規のリリースパイプラインを通じて公開され、有効なnpmの来歴証明(provenance attestations)が付与されている点にある。つまり、これらの悪意のあるバージョンは、標準的な検証方法では正規版とほぼ見分けがつかず、SLSAの来歴チェックや有効な署名証明書の検証さえも通過してしまう。攻撃は急速に拡大し、OpenAIの内部ソースコードリポジトリから認証情報が盗まれ、Grafana Labsのコードベースがダウンロードされるなど、次のようなダウンロード数の多い複数のパッケージに影響が及んだ。
@tanstack/react-router(週間ダウンロード数1,270万回以上)など、ダウンロード数の多い複数のソフトウェアパッケージにも影響が及んだ。
オープンソースエコシステムのセキュリティ警鐘
TanStackの事件は、現代のソフトウェアサプライチェーンの複雑さと脆弱性の高まりを浮き彫りにし、オープンソースエコシステム全体に警鐘を鳴らしています:

- CI/CDパイプラインが主要な攻撃対象に: この攻撃は、攻撃者がもはやソースコードリポジトリや認証情報のみを標的とするのではなく、キャッシュ、ワークフローの権限、依存関係解決システムなどを含む継続的インテグレーション/継続的デプロイメント(CI/CD)パイプラインそのものに目を向けていることを示しています。ビルドパイプラインは、現代のソフトウェア開発における主要な攻撃対象となっています。
- 従来のセキュリティ対策の限界: プロジェクトが二要素認証(2FA)を有効にし、SLSAによるソース検証などのベストプラクティスに従っていたとしても、CI/CDシステムの信頼チェーンを悪用するこのような複雑な攻撃を防御できない可能性があります。
- 信頼境界の曖昧化: この攻撃は、GitHub Actionsにおける「fork-to-base」の信頼境界を横断する脆弱性を悪用し、フォークリポジトリからの悪意のあるコードをベースリポジトリの権限下で実行できるようにすることで、従来、外部からの貢献に対して設定されていた信頼境界を曖昧にしています。
- 「ワーム型」拡散の脅威: 悪意のあるペイロードが自己拡散する能力を持つため、初期の侵害が依存関係グラフ全体に急速に広がり、数百から数千もの下流プロジェクトに影響を及ぼし、広範かつ深刻な被害をもたらす可能性があります。
Web3分野における防御策
Web3プロジェクトは、巨額のデジタル資産を管理しているという特性上、サプライチェーン攻撃にとって特に魅力的な標的となっています。サプライチェーン攻撃は、ユーザーの資金の盗難、秘密鍵の漏洩、または悪意のあるスマートコントラクトのデプロイに直接つながる可能性があり、その結果はしばしば取り返しのつかないものとなります。したがって、Web3プロジェクトは以下の点から防御を強化する必要があります:
1. 開発プロセスとCI/CDのセキュリティ強化

- 厳格なGitHub Actionsの設定:すべてのGitHub Actionsワークフロー、特に
pull_request_targetトリガーを使用するワークフローを重点的に精査し、セキュリティ上のリスクがある権限下でフォークされたリポジトリのコードが実行されないよう確保する。 - 認証情報の管理とローテーション:CI/CDパイプラインで使用されるすべての機密認証情報(クラウドサービスの秘密鍵、APIトークン、SSH鍵など)を厳格に管理し、定期的にローテーションを行う。
- キャッシュのセキュリティ: 厳格なキャッシュポリシーを実施し、特に信頼できないソースからのコードを処理する際、CI/CD環境内で悪意を持って改ざんされた可能性のあるキャッシュが共有または再利用されないようにします。
- 出所検証と追加のセキュリティチェック:SLSAによる出所検証が回避される可能性があるものの、これを基本的なセキュリティ対策として継続して実施すべきです。同時に、新しいパッケージの出所と完全性を検証するための追加のセキュリティソフトウェアを導入します。例えば、
minimumReleaseAgeなどのパッケージマネージャーの設定を実施し、新たにリリースされた悪意のあるパッケージによる即時のリスクを低減する。
2. 依存関係管理とソフトウェア部品表(SBOM)
- 包括的な依存関係監査: プロジェクトのすべてのサードパーティ依存関係(直接および間接的な依存関係を含む)を定期的に監査し、その出所が信頼でき、既知の脆弱性がないことを確認します。
- SBOMの生成と維持: すべてのWeb3アプリケーションについて、ソフトウェア部品表(SBOM)を生成・維持し、すべてのコンポーネントとそのバージョンを明確に記録することで、脆弱性が発見された際に影響範囲を迅速に特定できるようにします。
- 依存関係のクールダウン戦略: 新たにリリースされたパッケージの即時インストールをブロックするなど、依存関係のクールダウン戦略を採用し、急速に広がる攻撃への曝露を低減する。

3. コードの完全性と署名インフラの保護
- コードコミットの署名: すべてのコードコミットに対してGPG署名を義務付け、その署名を検証することで、コードの完全性と信頼できる出所を確保する。
- 署名インフラの保護: コードの署名やバイナリファイルの公開に使用されるインフラを最高レベルの保護で守り、攻撃者が正当な署名を持つマルウェアを生成することを防ぎます。
- 静的および動的コード分析:CI/CDプロセスに静的アプリケーションセキュリティテスト(SAST)および動的アプリケーションセキュリティテスト(DAST)ツールを統合し、潜在的な脆弱性や悪意のあるコードを検出する。
4. 開発者の教育とユーザーの保護
- セキュリティ意識向上トレーニング:開発チームに対し、Web3特有のサプライチェーン攻撃ベクトルに関するトレーニングを実施します。例としては、悪意のあるnpmパッケージによる秘密鍵の窃取、侵害された開発ツールによるトランザクションパラメータの改ざん、パッケージメンテナに対するソーシャルエンジニアリング攻撃などが挙げられます。
- ユーザーの権限制限: ユーザーに対し、DAppとのやり取りの際には付与する権限を制限し、高リスクな操作に対しては多段階認証を行うよう推奨する。
- ハードウェアウォレットと資産の分離: ユーザーに対し、長期保有資産の保管にはハードウェアウォレットの使用を推奨するとともに、リスクレベルの異なる資産を分離することで、潜在的な損失を低減するよう促す。

TanStackのサプライチェーン攻撃は、Web3のセキュリティがスマートコントラクト自体に限定されるものではなく、ソフトウェア開発ライフサイクル全体のあらゆる段階に及ぶことを改めて証明しました。サプライチェーンのセキュリティ意識と防御能力を全面的に向上させてこそ、Web3エコシステムは日増しに複雑化する脅威に対してより効果的に対処できるのです。




