Shai Hulud attack ships signed malicious TanStack, Mistral npm packages

開発者を標的とした認証情報を盗むマルウェアを配信する新たな Shai-Hulud サプライチェーンキャンペーンにおいて、npm および PyPI の数百のパッケージが侵害されました。

攻撃者は有効な OpenID Connect (OIDC) トークンをハイジャックし、検証可能な証明 (SLSA Build Level 3) 付きで悪意のあるパッケージのバージョンを公開しました。

この攻撃はTeamPCPの脅威グループによるもので、TanStackとMistral AIパッケージの侵害から始まりましたが、すぐにGuardrails AI、UiPath、OpenSearchといった他の一般的なプロジェクトにも拡大しました。

Shai-Huludキャンペーンは昨年9月に出現し、何度も繰り返され[1,2,3]、そのうちのいくつかは自動的に生成されたGitHubリポジトリにある何十万もの開発者の秘密を暴露した。最近危険にさらされたプロジェクトとしては、Bitwarden CLIパッケージとSAP公式パッケージがある。

最新の攻撃は昨日発生し、脅威者はNode Package Manager(npm)のTanStackネームスペースに複数の悪意のあるパッケージを公開し、盗んだCI/CD認証情報を使って他のプロジェクトに拡散した。

アプリケーション・セキュリティ企業のStepSecurityは、脅威行為者が正規のCI/CDパイプラインを介して感染したパッケージを公開し、npmの署名インフラストラクチャによって発行された有効なSLSA証明書を持ち、”正規のTanStack/routerReleaseワークフローに関連付けられた “と指摘している。

Endor Labsは、npm上で160以上の侵害されたパッケージを報告し、Aikidoは373の悪意のあるパッケージ-バージョンエントリを記録し、SocketはnpmとPython Package Index (PyPI)全体で416の侵害されたパッケージアーティファクトを追跡した

TanStackのポストモーテムレポートによると、攻撃者は3つの脆弱性を連鎖させていた。危険な’pull_request-target’ワークフロー、GitHub Actionsキャッシュポイズニング、ランナーメモリからのOIDCトークン窃盗だ。

攻撃者は、有効な証明、有効なSigstore証明、正当なGitHub Actions署名を持つ42のTanStackパッケージにわたって84の悪意のあるバージョンを公開しました。

開発者の観点からは、パッケージは暗号的に本物であるように見え、侵害の兆候はなかった。

Endor Labsは、攻撃者がTanStack/routerリポジトリのフォークにプッシュされた孤児コミットを悪用し、どのブランチにも属していないにもかかわらず、GitHubの共有フォーク・オブジェクト・ストレージからアクセスできるようにした巧妙なGitコミット・トリックに注目している。

このコミットは、悪意のあるオプションの依存関係を介して参照され、パッケージのインストール中にnpmが攻撃者が制御するコードを自動的に取得し実行するようになっていた。

このマルウェアは、以下のような開発者の秘密を狙います:

  • GitHubアクションのOIDCトークンとPAT
  • Git 認証情報
  • npmパブリッシュトークン
  • AWS Secrets Manager、IAM、ESCタスクの認証情報
  • Kubernetesサービスアカウントのトークンとクラスタの認証情報
  • HashiCorp Vaultトークン
  • SSHキー
  • クロードコードの設定
  • VS Codeタスク
  • .envファイル

StepSecurityによると、ペイロードはGitHub Actionsのプロセスメモリを読み取り、クラウドプロバイダー、暗号通貨トークン、メッセージングアプリに関連する100以上のファイルパスから認証情報を収集する。

機密情報を流出させるために、マルウェアはSession P2Pネットワークを利用し、暗号化されたメッセンジャーのトラフィックに見せかけ、検知、ブロック、テイクダウンの取り組みを複雑にしています。

感染すると、マルウェアはClaude CodeのフックとVS Codeの自動実行タスクに自身を書き込むため、悪意のあるパッケージをアンインストールしても削除されません。

自己増殖の仕組みは、過去の波とほとんど変わっていない。盗んだGitHub/npmの認証情報を使用し、侵害されたメンテナにリンクされているパッケージを列挙し、ペイロードを注入するためにtarボールを変更し、悪意のあるバージョンを再公開する。

サプライチェーンセキュリティプラットフォームのSafeDepによると、侵害されたMistral AIとTanStackのパッケージでは、トリガーのメカニズムは異なるものの、同じ認証情報を盗むペイロードを投下するという。

Microsoft Threat Intelligenceは、PyPI上の悪意のあるMistral AIパッケージを通じて配信されたペイロードを分析した。このペイロードは「transformers.pyz」と名付けられ、自然言語処理のために事前に訓練されたモデルにアクセスするために使用されるHugging FaceオープンソースPythonライブラリ「Transformers」になりすましている可能性がある。

研究者によると、このペイロードはLinuxシステム上で情報を盗むマルウェアをドロップする。この窃取プログラムには基本的なジオフェンシングロジックが含まれており、特にロシア語の言語設定が検出されたホスト上での実行を回避します。

破壊的なセカンダリールーチンも存在する。イスラエルまたはイランから発信されたと思われる環境では、このマルウェアは、6分の1の確率で再帰的ワイプコマンド(rm -rf/)を実行する確率的破壊工作メカニズムを導入する。

この挙動は、TeamPCPが3月に展開した、Kubernetesプラットフォームを標的としたCanisterWormキャンペーンに似ている。CanisterWormがイランのタイムゾーンとロケールに一致するマシンに着陸した場合、それをワイプする。

侵害されたパッケージのリストは、様々なセキュリティベンダーのレポート[1,2,3,4,5]で入手可能であり、影響を完全に把握するためには、すべてのリソースをチェックすることが推奨される。

影響を受けるパッケージのバージョンをダウンロードした開発者は、認証情報が公開されたと考えるべきです。研究者は、セキュリティチームが以下の行動をとることを推奨する:

  • 影響を受けるパッケージのバージョンをチェックする。
  • 開発者のマシン上の永続性をチェックする。
  • すべての認証情報(GitHubトークン、npmトークン、AWS認証情報、Vaultトークン、Kubernetesサービスアカウント、CI/CDシークレット)をローテーションする。
  • IDEのディレクトリを監査し、npmインストール時に悪意のあるファイル(例えば、router_runtime.jsやsetup.mjs)がないか確認する。
  • DNSまたはプロキシレベルで、脅威行為者のコマンド&コントロールインフラ(api.masscan.cloud、git-tanstack.com、*.getsession.org)をブロックする。

Snyk の研究者は、「この攻撃は悪意のあるパッケージに対して有効な SLSA Build Level 3 証明書を生成する」ため、悪意のあるパッケージのシグネチャベースのチェックとともに、インストール時に出所を検証し、振る舞い分析レイヤーを追加する必要があると述べています。

長期的には、同様の攻撃によるリスクを軽減するために、ロックファイルのみのインストールを強制することを検討してください。

更新[08:36est]: 侵害された Mistral AI パッケージ経由で配信されたペイロードに関する Microsoft Threat Intelligence の分析情報を追加しました。