eSecurity Planetのコンテンツおよび製品に関する推奨事項は、編集上の独立性を保っています。パートナーへのリンクをクリックいただくことで、当社が収益を得る場合があります。詳細はこちら
攻撃者がnpmの主要パッケージ群を管理するメンテナーのGitHubアカウントを侵害したことで、大規模なソフトウェアサプライチェーン攻撃がJavaScriptエコシステム全体に影響を及ぼしています。
この事案は2026年8月4日、keyv、flat-cache、file-entry-cacheなどのパッケージに悪意のあるコードが混入したことから始まりましたが、その後急速に拡大し、数百に及ぶ追加パッケージにまで波及する大規模なShai-Huludキャンペーンへと発展しました。
Aikidoの研究者によると、攻撃者は週間ダウンロード数約1億2,700万件を誇るパッケージ「keyv」のメンテナーのGitHubアカウントを侵害したとのことです。
その後、攻撃者はGitHub Actionsを利用して悪意のあるアップデートを公開しました。
このリリースは正規のワークフローから発行されたものであったため、侵害されたパッケージは有効なプロベナンス(来歴証明)付きでnpmに公開され、正規のものであるかのように見えてしまいました。
主なポイント
- 攻撃者は人気のnpmメンテナーアカウントを乗っ取り、Shai-Hulud サプライチェーン攻撃を仕掛けました。
- このキャンペーンは、月間インストール数が20億件を超える数百のパッケージに拡散しました。
- 悪意のあるパッケージはnpmのpreinstallスクリプトを利用し、クラウド、GitHub、Kubernetes、APIの各種認証情報を窃取しました。
- 有効なGitHub Actionsのプロベナンスにより、侵害されたパッケージのリリースは正規のものに見えてしまいました。
- 組織は開発パイプラインの即時保護、認証情報のローテーション、ソフトウェアサプライチェーンセキュリティ管理の強化を行う必要があります。
Shai-Hulud攻撃、npmサプライチェーン全体に拡散
この攻撃は、単一のメンテナーアカウント侵害にとどまらず、その後さらに拡大しています。
Aikidoの報告によると、このマルウェアは他の組織が管理するパッケージにも拡散し、月間インストール数が20億件を超える数百のパッケージに影響を及ぼしているとのことです。
- keyv
- flat-cache
- file-entry-cache
- cacheable
- cache-manager
- cacheable-request
- @cacheable/node-cache
- @cacheable/memory
- @cacheable/utils
- ecto
研究者はさらに、Deliveroo、OneReach、Picsart、Qlikといった組織に関連する侵害パッケージも確認しており、この攻撃がJavaScriptサプライチェーン全体にいかに急速に広がったかを示しています。
Shai-Huludマルウェア、npmのpreinstallスクリプトで認証情報を窃取
ユーザーが手動で悪意のあるコードを実行する必要がある攻撃とは異なり、今回のキャンペーンはnpmのpreinstallライフサイクルフックを悪用しています。
影響を受けた各パッケージには、package.jsonファイルから参照される新しいsetup.mjsファイルが含まれていました。npmインストール時、このスクリプトはインストール完了前に自動的に実行されます。
このドロッパーは、難読化されたペイロード「Math_Symbol.js」(728KBの認証情報窃取プログラム)を起動する前に、Bun JavaScriptランタイムをダウンロードします。
研究者によると、このマルウェアは以下を含む複数の情報源から認証情報を収集していました。
- npm認証トークン
- GitHubパーソナルアクセストークンおよびGitHub Actions認証情報
- AWSアクセスキー、IAM認証情報、EC2メタデータ、Secrets Manager
- Kubernetesサービスアカウントトークンおよびクラスターシークレット
- HashiCorp Vaultトークンおよび保存済みシークレット
- StripeおよびSlackのAPIトークン
- SSHキー、秘密証明書、Terraformステートファイル、Docker認証情報、VPN構成、多数の.envファイル
このマルウェアは収集したデータを暗号化した上で、公開GitHubリポジトリへ流出させていました。
研究者はまた、侵害された依存関係をインストールしたメンテナーが管理する別のnpmパッケージにも感染を広げるよう設計された、ワーム的な挙動も確認しており、これによりこのキャンペーンはエコシステム全体に急速に拡大することができたとみられます。
組織はShai-Hulud攻撃にどう対応すべきか
影響を受けたバージョンのパッケージをインストールした、あるいはそれを使ってソフトウェアをビルドした組織は、証拠がない限り、認証情報や開発環境が漏えいした可能性があるという前提で対応すべきです。
- 影響を受けたパッケージバージョンの特定と削除を行ってください。推移的依存関係も含め、開発環境、ビルド環境、CI/CD環境から取り除く必要があります。
- 漏えいの可能性がある認証情報をすべてローテーションしてください。npm、GitHub、クラウド、Kubernetes、Vault、APIトークンなどが対象で、必要に応じてアクティブなセッションも無効化します。
- 影響を受けた開発者用ワークステーションおよびCI/CDランナーを、信頼できるイメージから再構築し、その上で侵害の痕跡や不正な外向き通信がないかスキャンしてください。
- GitHub Actionsのワークフロー、ビルドログ、パッケージ公開活動、そして漏えいの可能性がある期間中に作成されたソフトウェアリリースを見直し、不正な変更の兆候がないか確認してください。
- ソフトウェアサプライチェーンセキュリティを強化してください。DevSecOpsツール、ソフトウェア構成分析(SCA)、依存関係の監視、バージョン固定、パッケージの許可リスト化、信頼できる社内パッケージリポジトリの活用などが有効です。
- フィッシング耐性のあるMFA、ハードウェアセキュリティキー、最小権限アクセス、ソースコードリポジトリおよびパッケージ公開ワークフローに関するより強固な管理体制を徹底してください。
- 依存関係の侵害、認証情報のローテーション、開発環境の復旧、安全なソフトウェア再構築といった攻撃シナリオを含む形で、インシデント対応計画をテストしてください。
これらの対策を講じることで、組織は現在進行中の攻撃によるリスクを低減しつつ、将来の侵害に対するソフトウェアサプライチェーンの耐性を強化することができます。
結論
今回のキャンペーンは、ソフトウェアサプライチェーンセキュリティが単なる開発上の懸念事項ではなく、経営上のリスクであることを改めて浮き彫りにしています。
ソフトウェアエコシステムの相互連携がますます深まる中、ガバナンス、可視性、そして安全な開発手法は、企業のレジリエンスを支える不可欠な要素になりつつあります。
脅威に対するレジリエンスを高めるには、まずソフトウェアサプライチェーンセキュリティへの包括的なアプローチを採用することが出発点となります。