npmパッケージ400件が30分で汚染 — "keyv"ワームが示した依存関係リスクの怖さ


npmワーム:30分で400件に自己複製 keyv@6.0.0 悪意ある preinstall スクリプト pkg-A 感染・書き換え済み pkg-B 感染・書き換え済み pkg-C 感染・書き換え済み pkg-D … +400件 連鎖感染 攻撃者サーバー 収集した情報: ・GitHubトークン ・クラウド認証情報 ・DBパスワード ・秘密鍵 ⏱ わずか30分で自己複製
keyvワームが依存関係を通じて400以上のパッケージへ連鎖感染したイメージ
ひよこ ひよこ
ペンギン先生、keyvっていうnpmパッケージがハッキングされたって聞いたけど、何があったの?
ペンギン先生 ペンギン先生
2026年8月4日に「keyv@6.0.0」という人気npmパッケージに悪意あるコードが仕込まれたんだよ。インストール時に自動で動くスクリプトを使って、わずか30分で400以上のパッケージに自己複製したんだ。
ひよこ ひよこ
30分で400件って、すごく速いね!どうやって広がったの?
ペンギン先生 ペンギン先生
npmパッケージには「preinstall」というフック機能があって、インストール前に自動でスクリプトを実行できるんだよ。そのスクリプトが他のパッケージを書き換えながら増殖していったから、「ワーム(自己複製型マルウェア)」と呼ばれているんだ。
ひよこ ひよこ
keyvってそんなに有名なパッケージなの?
ペンギン先生 ペンギン先生
keyvは月間20億回インストールされるほど広く使われているキー・バリュー型ストレージのパッケージだよ。多くのフレームワークやツールが依存しているから、1つが汚染されると連鎖的に影響が広がるんだ。
ひよこ ひよこ
汚染されたら実際に何が起きるの?
ペンギン先生 ペンギン先生
このワームGitHubトークン・クラウドの認証情報・秘密鍵・データベースの接続文字列など、開発者のPCにある機密情報を収集したんだよ。さらにClaude CodeVS Codeに永続的なフックを埋め込んで、攻撃者がその後も開発環境にアクセスし続けられる仕組みまで仕掛けたんだ。
ひよこ ひよこ
開発ツール自体に仕込まれるって怖すぎるよ……。普通のウイルス対策じゃ防げないの?
ペンギン先生 ペンギン先生
難しいんだよね。自分でインストールしたはずの信頼できるパッケージから来ているから、従来のウイルス対策ではなかなか検出できないんだ。信頼の連鎖を悪用するこの手法を「サプライチェーン攻撃」と呼んでいるよ。
ひよこ ひよこ
じゃあ、開発者はどうすれば防げたの?
ペンギン先生 ペンギン先生
パッケージのバージョンをロックファイルで固定する・preinstallスクリプトの実行を許可しない設定にする・DependabotなどのOSSで依存関係監視するといった対策が有効だよ。今回はDatadogのセキュリティチームが約30分で発見・対応したんだ。
ひよこ ひよこ
なんで開発者のPCを狙うの?本番サーバーじゃなくて?
ペンギン先生 ペンギン先生
開発者のPCには本番環境へのアクセス権限が集まっていることが多いんだよ。GitHubトークン1つで企業のコードリポジトリ全体にアクセスできたり、クラウドの認証情報があれば本番サービスを操作できることもあるから、攻撃者にとって"金鉱"なんだ。
ひよこ ひよこ
普段使っているパッケージが攻撃の入口になるって、ちゃんと気をつけないといけないね!
ペンギン先生 ペンギン先生
そうだね。オープンソースエコシステムは便利な反面、誰でもパッケージを公開できる分こういうリスクもあるんだ。npmは今回の件でpreinstallスクリプトの審査強化を発表しているから、今後の対応にも注目だよ。