攻撃者が2026年10月8日、npmパッケージtensorlakeの悪意あるバージョンを公開しました。自己複製型サプライチェーンワーム「Shai-Hulud」の新たな亜種が仕込まれています。
問題のリリースはtensorlakeのバージョン0.5.144です。開発者のシークレットを窃取し、ブラウザに保存された暗号資産関連の認証情報を狙います。さらに、盗んだ公開用の認証情報を使い、接続先のソフトウェアサプライチェーンへ感染を広げる能力を持ちます。
今回の事案は、AI開発ツールに対するリスクが高まっていることを示しています。依存パッケージが侵害されると、アプリケーションのビルド環境だけでなく、クラウドの認証情報、ソース管理のトークン、デプロイ用のシークレット、エージェント開発のワークフローまで露出しかねません。
悪意あるパッケージは、preinstallライフサイクルフックを通じて起動し、node lib/setup.mjsを実行します。
難読化されたsetup.mjs(SHA-256: 25a0735d0db7dc40e5d45ce42d9c106067e6a66e184d967cfecfab17c3bcb5ef)はBunランタイムをダウンロードし、これを使ってlib/Math_Symbol.jsを実行します。
第2段階のファイル(SHA-256: b50a00900399ba99fb6ce1fc151519cb99d44320ef2a631f2237e1aea0ad6fec)には、認証情報の窃取とワームの拡散を担う、難読化されたペイロードが含まれています。
このマルウェアは、暗号化されたロジックを起動する前に、パッケージ固有のWORMTAGマーカーを設定します。
この実装から、今回のTensorlakeの事案は、以前のShai-Huludキャンペーンでの再感染とは異なり、新たに仕込まれた別個の侵害であるとみられます。
これまでのShai-Hulud関連の活動では、攻撃者がメンテナーのアクセス権とnpm認証情報を悪用し、汚染されたパッケージを再公開することで急速に拡大しました。8月のキャンペーンでは、少なくとも444のパッケージと1,381のバージョンが影響を受けたと伝えられています。
実行されると、ペイロードは環境変数、ローカルのシークレットファイル、npmトークン、GitHub認証情報、クラウド認証情報、SSH鍵、Kubernetes設定、Terraformファイル、Dockerレジストリの認証情報、CI/CDのシークレットを収集しようとします。
こうしたアクセスは、下流に直接的なリスクをもたらします。盗まれたnpmの公開用トークンを使えば、ワームは被害者が管理するパッケージを改ざんできる可能性があります。また、GitHub認証情報が侵害されると、リポジトリや自動化されたリリースパイプラインにアクセスされる恐れがあります。
以前のShai-Hulud亜種は、パッケージ公開ワークフローで使われるGitHub ActionsランナーやOIDCトークンも標的にしていました。
Aikidoの研究者によると、TensorlakeはAIエージェント向けのサーバーレスサンドボックスプラットフォームです。そのnpmパッケージは、累計で10万回以上インストールされています。
乗っ取られたTensorlakeパッケージ
Tensorlakeのペイロードには「デッドマンズスイッチ」が組み込まれています。埋め込まれたGitHubトークンが失効されると、感染したシステムのデータを消去する仕組みで、Shai-Hulud の過去の攻撃でも確認されていました。
ペイロードはハードコードされたコマンド&コントロール(C2)ドメインiseekaigogo[.]comを使用します。加えて、Ethereumスマートコントラクト0xb614155Fd88114d40549b259457Bcf921Df091B9から、代替のC2または窃取データの送信先アドレスを取得することもできます。
マルウェアは、eth.llamarpc.com、rpc.ankr.com、ethereum.publicnode.comといった公開RPCサービスを通じて、このコントラクトに問い合わせます。
ウォレット0x779f83aE56309682beDb04816c19d358c4B21040は9月21日にこのコントラクトを最後に更新しており、代替値を同じiseekaigogo[.]comドメインに設定しています。
今回のキャンペーンで大きく進化した点は、ブラウザ上の金融データに明確に狙いを定めていることです。
マルウェアは、14種類の暗号資産ブラウザ拡張機能に関連するハードコードされたパスを検索し、IndexedDBとLevelDBのデータを盗もうとします。
さらに、C2インフラからプラットフォームに適したHackBrowserDataユーティリティをダウンロードして実行し、ブラウザのストアから追加の認証情報を抽出します。
この挙動は、運営者がサプライチェーンでの拡散とあわせて、侵害した開発者の端末から直接収益を得ることを優先している可能性を示唆しています。
調査担当者は、最初の侵入経路をTensorlakeのGitHubリポジトリまで追跡しました。10月7日、攻撃者はメンテナーのIDを使って検証済みコミットを作成し、直接アップロードによってコミット41b38f0に悪意あるファイルを紛れ込ませました。
攻撃者が悪意あるnpmパッケージの公開に成功するまで、リポジトリはおよそ20時間にわたって侵害された状態でした。
報告の時点では、TensorlakeのPyPIおよびCargoの配布物に侵害の兆候はありませんでした。
組織は直ちに、[email protected]がインストールされた環境を特定し、影響を受けた可能性のあるホストを隔離してください。あわせて、フォレンジック証拠を保全し、それらのシステムからアクセス可能なすべての認証情報をローテーションする必要があります。
対象には、npmやGitHubのトークン、クラウドキー、CI/CDのシークレット、SSH鍵、APIの認証情報、暗号資産ウォレット拡張機能のデータ、ブラウザのセッショントークンが含まれます。
パッケージの公開履歴、GitHub監査ログ、CIランナーの動作、package.jsonのライフサイクルスクリプトに対する不審な変更も確認してください。
今回の事案は、これまでのShai-Hulud攻撃と同じ流れにあります。過去の攻撃でも、悪意あるpreinstallスクリプトがBunをダウンロードし、高度に難読化されたJavaScriptペイロードを実行して、シークレットを収集しつつnpmエコシステムへ拡散していました。
IOC(侵害指標)
| 指標の種類 | 値 |
|---|---|
| npmパッケージ | tensorlake |
| パッケージのバージョン | 0.5.144 |
| C2ドメイン | iseekaigogo[.]com |
| ファイルパス | lib/setup.mjs |
| ファイルハッシュ(提供された値) | 25a0735d0db7dc40e5d45ce42d9c106067e6a66e184d967cfecfab17c3bcb5ef |
注記: IPアドレスとドメインは、誤って名前解決されたりハイパーリンク化されたりするのを防ぐため、意図的に無害化(例: [.])しています。無害化を元に戻す場合は、MISP、VirusTotal、SIEMなど、管理された脅威インテリジェンスプラットフォーム内に限ってください。
影響が出る前にサイバー脅威を阻止し、MTTR(平均復旧時間)を21分短縮。ANYRUNのサンドボックスをSOCに導入しましょう。
翻訳元: https://gbhackers.com/tensorlake-package-hijacked/