Shai-Huludが再びエスカレートしました。keyvのメンテナー権限を乗っ取った新たなnpmサプライチェーン攻撃が発生し、発見時点で少なくとも868個のパッケージに波及、合計で月間20億インストールを超える規模となりました。
2026年8月4日、攻撃者はkeyvのメンテナーのGitHubアカウントを乗っ取りました。keyvはnpm上で週間約1億2,700万ダウンロードを記録するキーバリューストレージライブラリです。
Aikido Securityの報告によると、攻撃者は正規のメンテナー権限を使ってmainブランチに悪意あるコミットを直接push し、即座に新しいリリースを切り出しました。これにより、汚染されたバージョンは正規のGitHub Actionsによる来歴情報付きで公開される結果となりました。
同じメンテナーはcacheable、flat-cache、file-entry-cacheをはじめとする、利用数の多い複数のキャッシュ関連ユーティリティも管理しており、これらすべてが被害範囲に含まれました。
判明している侵害済みビルドには、keyv 6.0.0(月間約6億400万インストール)、flat-cache 6.1.24(月間5億8,000万)、file-entry-cache 11.1.6(月間5億7,100万)、cacheable-request 13.0.20(月間1億3,700万)、cacheable 2.5.1、@cacheable/memory 2.2.1、cache-manager 7.2.10、@cacheable/node-cache 3.1.2、@cacheable/utils 2.5.1、@cacheable/net 2.1.1、ecto 5.0.1が含まれます。
この規模だけでもShai-Huludは「エコシステムレベルのインシデント」の領域に完全に足を踏み入れたと言えます。これらのキャッシュ層に間接的に依存するビルドシステム、CLIツール、バックエンドにまで連鎖的なリスクが及んでいます。
今回の攻撃は特定のメンテナー1人に留まりません。Shai-Huludワームはnpmの信頼グラフ全体を積極的に伝播しており、開発者のマシンに一度侵入すると、下流のパッケージや組織へと次々と飛び火しています。
コミュニティのテレメトリでは、@deliveroo/reevent 1.0.1、@or-sdk/invitations 1.4.9、@picsart/ai-sdk 3.32.2、@qlik/embed-runtime 1.6.4、picasso.js 2.11.6など、大手企業が管理するパッケージへの二次感染がすでに確認されています。
2026年8月4日時点の最新情報では、868個以上のパッケージ、1,381バージョンが侵害されており、その規模は月間20億インストールを超えています。
攻撃者はnpmの信頼チェーンを武器化しています。開発者が感染したパッケージに対してnpm installを実行すると、Shai-Huludはトークンを窃取し、それを使って被害者が管理する他のあらゆるパッケージにバックドア入りのバージョンを公開し、エコシステム全体へと連鎖を続けます。
Aikido Securityは、侵害された各メンテナーが本人の意図とは無関係に配布ノードと化してしまうため、従来型の依存関係監査やインシデント対応の範囲特定が一層困難になると述べています。
今回の攻撃で侵害された各パッケージには、setup.mjsとMath_Symbol.jsという2つの不正ファイルが仕込まれ、package.jsonには新たなpreinstallスクリプトのエントリ(「preinstall」: 「node setup.mjs」)が追加されています。
これにより、npmのインストール完了前に確実にコードが実行される仕組みになっています。setup.mjsは大幅に難読化されたドロッパーとして機能し、その唯一の目的はGitHubからBun JavaScriptランタイムを密かに取得し、Math_Symbol.jsを実行することです。
Math_Symbol.jsは728KBの難読化されたペイロードで、被害者の環境を認証情報収集ノードへと変えてしまいます。.npmrcファイルからnpmトークンを収集し、registry.npmjs.org/-/whoamiに対してリアルタイムで有効性を検証します。さらにGitHubのPAT、OAuthトークン、OIDC JWTを探索し、GitHub Actionsランナーのメモリを読み取ってnpm公開に使われるIDトークンまで窃取します。
ローカルファイル、環境変数、EC2・ECSのメタデータ、AWS Secrets ManagerからAWSの認証情報をたどり、Kubernetesのサービスアカウントトークンを悪用してクラスターのシークレットを列挙し、複数の場所からHashiCorp Vaultのトークンを積極的に取得したうえで、すべてのKVシークレットをダンプします。
このペイロードはさらに、StripeやSlackのトークン、SSHキー、クラウドストレージのキー、データベース接続文字列、Terraformのステートファイル、Dockerレジストリの認証情報、KeePassデータベース、VPN設定、IDE設定なども対象にスキャンを行います。プラットフォームに応じたグロブパターンと正規表現を組み合わせ、大きなファイルはスキップすることでカバレッジを最大化しています。
収集された情報はすべて暗号化され、「Shai-Hulud: Here We Go Again」というラベルの付いた公開GitHubリポジトリへ持ち出されます。これは、同様の名前のリポジトリをキャンペーンの目印および窃取データの集積拠点として使っていた過去のShai-Huludの攻撃波と共通する手口です。
SOC調査の死角を減らし、ANY.RUNで脅威を早期に封じ込め、対応コストと業務への影響を抑えましょう。
翻訳元: https://cyberpress.org/shai-hulud-npm-worm-compromises-868-packages/