何が起きたか
2026年10月8日 01:12 UTC(日本時間10:12)、AI エージェント向けサーバーレス・サンドボックス基盤の SDK である npm パッケージ tensorlake のバージョン 0.5.144 が、認証情報を盗む Shai-Hulud 系のワーム を含んだ状態で公開されました。週間ダウンロード数は約 1万2000〜1万8000 です。メンテナーの勧告によると公開期間は約 1時間40分 で、テレメトリ上は利用が確認されていません。Socket は公開から 11分後 に悪性バージョンを検知しました。
公開された分析によると、Tensorlake の PyPI と Cargo のパッケージは影響を受けていません。
侵入経路
攻撃は npm ではなく GitHub から始まりました:
- 10月7日、攻撃者は メンテナーの管理者アカウント を使い、Web 画面から tensorlakeai/tensorlake の main ブランチへ直接コミット しました。プルリクエストはありません
- 8件のコミットでペイロードを調整し、package.json に preinstall フックを追加
- 約20時間後、同じアカウントが 公式の公開ワークフロー を手動で実行
その結果、パッケージは 有効な来歴証明(provenance) 付きで公開されました。StepSecurity が指摘するとおり、来歴証明が示すのはパッケージが どこで ビルドされたかであり、コードが安全かではありません。
マルウェアの動作
- preinstall フックが難読化されたローダーを実行し、Bun ランタイムをダウンロードして856KBのペイロードを起動
- npm と GitHub のトークン、クラウド、Kubernetes、Vault の認証情報、そして AI コーディングツールの設定ファイル を窃取
- 自己拡散 を試みる:ユーザーの他のパッケージを再公開し、偽の作者「claude@users.noreply.github.com」とメッセージ「chore: update dependencies」で、リポジトリに .claude と .vscode のファイルをコミット
- 人質トークン: 盗んだ GitHub トークンを60秒ごとに最大24時間確認する監視プロセスを設置。トークンが失効されるとホームディレクトリを削除 する(Linux と macOS では rm -rf ~/)。罠が作動する条件については研究者の間で見解が分かれています
2ファイル構成(setup.mjs と Math_Symbol.js)は、TeamPCP が公開した「mini Shai-Hulud」コードを基にした8月の keyv、cacheable への攻撃と同じです。同一グループである証拠はありません。
インストールしてしまった場合
- トークンを失効させる前にマシンを隔離 し、監視プロセスを停止する。ホームディレクトリを失わないため
- マシン上のすべての認証情報を侵害済みとみなす:npm、GitHub、クラウド、AI エージェントの設定。その後すべてをローテーション
- 見慣れない作者による「chore: update dependencies」のコミットや、新しいワークフローがないかリポジトリを確認
- 自分のパッケージの最近の公開バージョンを確認
教訓
- 管理者も含め、main へのすべての push にレビューを必須 にする
- メンテナーのアカウントには ハードウェアキー(FIDO2) を使う
- 公開直後のバージョンをすぐ入れない 待機期間(クールダウン) を設け、可能ならインストールスクリプトを無効にする
- AI コーディングツールは今や標的。その設定には価値の高い鍵が入っている
出典
- Tensorlake のセキュリティ勧告(GHSA-8g63-53c9-65j2): https://github.com/tensorlakeai/tensorlake/security/advisories/GHSA-8g63-53c9-65j2
- Socket: https://www.socket.dev/blog/tensorlake-compromise
- StepSecurity: https://www.stepsecurity.io/blog/tensorlake-npm-compromised-hostage-token-worm
- Aikido: https://www.aikido.dev/blog/tensorlake-npm-package-compromised
ソフトウェアサプライチェーンとパイプラインを守りたいですか?KGA IT は無料相談を受け付けています:kga-it.com