Zod 4.6.6 に悪意あるコードが混入、インストールは危険
Zod 4.6.6 compromised by malware?
人気の TypeScript バリデーションライブラリ Zod のバージョン 4.6.6 に、悪意あるコードが混入していることが判明した。このコードは preinstall スクリプトとして実行され、Ethereum のスマートコントラクトから指示を受けて外部サーバーから追加ペイロードをダウンロードし、実行する。npm からのインストール時に自動的に発動するため、注意が必要だ。
preinstall スクリプトが追加され、node meta.test.mjs が実行されるようになった。
HNでの議論
51- jaynetics
問題のコードは実際にはリリースされていないよ。この記事に詳しい情報がたくさん載っている:
- yuvalkarmi
これは3週間前の話だよ、みんな。実際にリポジトリの侵害は起きたんだ——Zodのmainには入ったが、npmには入らなかった。
9月21日、誰かがColinのgit認証情報を使ってこの侵害されたコードをプロジェクトにpushし、Colinがそれに気づいて同じ日にrevertした(PR #6620)。その後彼は10月11日に4.6.6をリリースしたが、それには感染したコードは含まれていなかった。
ちなみに、狙われたのはZodだけじゃない——standard-schemaとnubにも同じ攻撃が試みられた。nubは実際にnpmに到達したが、npmのマルウェアスキャンがブロックした。
正規の(いや、正規じゃない)サプライチェーン攻撃の試みだったようだが、実際に侵害されたZodのリリースは存在しない。
- luggage_bazooka
最新バージョンの4.6.6にはとても興味深いコミット(d821685)「Fix bugs and improve performance」があって、以下の変更が含まれている https://github.com/colinhacks/zod/commit/d821685ea6732436fcd...
packages/mini/meta.test.mjs が具体的に何をしているのかはちゃんと調べていないけど、あまり良さそうには見えない
- jaapz
「might」はかなり控えめな表現だね、これは感染している——編集: タイトルが変わった、元は「might be infected」と書かれていた。
マルウェアはzodがインストールされたときに実行されるJSペイロードを、Ethereumのスマートコントラクトから取得して注入するようだ(僕の理解が正しければ)。
npmでこのバージョンにフラグを立てるのを忘れないように。
編集: どうやらこのアップデートはNPMには到達しなかったようだ: https://news.ycombinator.com/item?id=50053253
- xx_ns
面白いことに、彼らは `preinstall` キー(インストール時に悪意あるスクリプトを実行するはずのもの)を `scripts` の下ではなく package.json のルートに追加しているので、僕が見る限りこれはインストール時には実行されないはずだ。
それ以外は、まあ、これはEthereumメインネットからペイロードを取得して実行するためのステージ1ローダーのように見える。