flawopen.com/Incidents/tensorlake-npm-install-hook-compromise-october-2026
Tensorlake npm 0.5.144:悪意あるインストールフック
TensorlakeのAI SDKの悪意あるリリースにpreinstallローダーが追加されました。開発元はmainへの直接変更を確認して公開手順を強化し、GitHubのマルウェア勧告は実行されたホストを侵害済みとして扱うよう求めています。研究者はローダーの構造をChainDrop/Shai-Huludファミリーと関連付けていますが、GitHubの勧告はその帰属を確認していません。[1], [2], [3], [4], [5]
このパッケージのインストールは、電源につなぐとすぐ動き出す機器のようなものでした。ボタンを押したり実際に使ったりする必要はありません。npmはSDKがimportされる前に、インストールプロセスの権限で悪意あるpreinstallフックを実行しました。[3], [6], [1]
主要な概念と専門用語
preinstallライフサイクルフック- npmがインストール中に実行できるスクリプトです。公開されたTensorlake 0.5.144のmanifestはこのフックからローダーを起動し、SDKのimportは不要でした。[1], [6]
provenance attestation- 成果物の出所とビルド方法を示す証拠です。開発元によると悪意ある公開版にはnpm provenanceがありましたが、ソースコードの安全性を証明するものではありません。[2], [3]
インストールスクリプト検査- 公開manifestにインストールスクリプトが宣言されている場合にCIを失敗させる検査です。Tensorlakeは事故後、npm ci --ignore-scriptsとともに追加しました。[3]
フレームワーク対応
- このガイドで説明する弱点の CWE 参照: CWE-506
インシデントのタイムライン
ステップ・バイ・ステップの攻撃フロー
ソースコード比較:脆弱 vs 堅牢化
このCI比較は開発元がmergeしたPR #1016に基づき、悪意あるパッケージやexploitは含みません。検査はインストール前に実行され、公開manifestのインストールフックを拒否します。ignore-scriptsはnpm ciによる依存関係のライフサイクルスクリプト実行を防ぎます。開発元はこの設定でテストとSDKビルドが成功したと報告しています。フックを必要とする依存関係には影響する可能性があり、npm testなど明示的に呼び出すコマンドのスクリプトは実行されます。後続のビルド工程を隔離し、provenanceをソースレビューと混同しないでください。このコード例は一部です。メンテナーの検査は、宣言されたインストールフックの確認に加え、typescript/lib/ 内の想定外ファイルも拒否します。[3], [6]
steps:
- run: npm cisteps:
- run: node scripts/check-no-install-scripts.mjs
- run: npm ci --ignore-scriptsエンジニアリング&システム堅牢化チェックリスト
- ✓manifest、lockfile、cache、build記録からtensorlake@0.5.144を検索します。勧告が特定しているのはこのnpmバージョンです。パッケージ名だけで影響を推定しません。[1]
- ✓インストールが実行された場合は、ホストをネットワークから隔離して証拠を保全します。依存関係の削除だけでは永続化や他の変更が消えた証明になりません。完全性を確認できなければ信頼できる媒体から再構築します。[1], [4], [5]
- ✓ホストを隔離したまま、tokenを失効・更新する前に、研究者が報告したtoken失効で起動し得る永続化の特定と除去をインシデント対応担当者と調整します。最新の対応指針に従い、クリーンなシステムから対応します。[4], [5]
- ✓報告された永続化への対処後、クリーンなシステムからインストールプロセスがアクセスできた認証情報を失効・更新します。アクセス可能なリポジトリや公開済みパッケージ、CI成果物、監査ログの不正変更を確認します。[4], [5], [3]
- ✓CIではレビュー済みのインストールフック検査を依存関係の導入前に実行し、互換性があればnpm ci --ignore-scriptsを使います。必要なビルドスクリプトを隔離し、管理者や直接pushの迂回をなくして公開に独立承認を必須とします。[3], [6]
- ✓2026-10-12 時点で、次の
tensorlake-native-*関連パッケージ 6 件(0.5.144)のいずれかを環境にインストールしたか確認してください:tensorlake-native-linux-x64-gnu,tensorlake-native-linux-x64-musl,tensorlake-native-linux-arm64-gnu,tensorlake-native-linux-arm64-musl,tensorlake-native-darwin-arm64,tensorlake-native-win32-x64。同日、npm registry は各パッケージのバージョンメタデータを返したため、引き続き公開中として扱い、露出インベントリに含めてください。これは registry で入手可能だったことだけを示し、関連パッケージにインシデントのペイロードが含まれていたことを示すものではありません。マージ済み PR #1016 で、メンテナーは当時これらのバージョンをまだ公開停止する必要があると述べています。[3], [8], [9], [10], [11], [12], [13]
参考資料
- GitHub Advisory Database — GHSA-rqxj-g25x-4v9v
- Tensorlake — incident issue #1014
- Tensorlake — response PR #1016
- StepSecurity — technical analysis
- Socket — technical analysis
- npm v10 — npm ci and ignore-scripts
- Tensorlake — clean release 0.5.145
- npm registry — tensorlake-native-linux-x64-gnu@0.5.144
- npm registry — tensorlake-native-linux-x64-musl@0.5.144
- npm registry — tensorlake-native-linux-arm64-gnu@0.5.144
- npm registry — tensorlake-native-linux-arm64-musl@0.5.144
- npm registry — tensorlake-native-darwin-arm64@0.5.144
- npm registry — tensorlake-native-win32-x64@0.5.144