レッドハットがnpmサプライチェーン攻撃の標的に:被害状況と防御策を徹底解説
大手IT企業レッドハット(Red Hat)が、npm(Node.jsのパッケージマネージャー)のサプライチェーン攻撃の被害に遭ったことが明らかになりました。この攻撃は、レッドハットの@redhat-cloud-servicesという名前空間に属する数十のJavaScriptパッケージを標的としています。これらのパッケージは、開発者や継続的インテグレーション/継続的デプロイメント(CI/CD)システム内で使用されるもので、悪意のあるバックドアが仕掛けられていました。
【何が起こったか】
攻撃者は、侵害されたGitHubアカウントを利用し、レッドハットのGitHub組織が管理するパッケージに悪意のあるコードを注入しました。このコードは、npmの「preinstallフック」を利用して実行される仕組みになっていました。開発者やビルドシステムが影響を受けたパッケージに対して「npm install」を実行するたびに、悪意のコードが自動的に実行され、膨大で難読化されたローダー(index.js)が動作しました。このローダーは、npm、GitHub、AWS、SSH、GCP、Azureなどの主要な環境から秘密情報(シークレット)を吸い上げるように設計されていました。
【被害の深刻度と拡散性】
被害を受けたパッケージは合計32個、96バージョンに及び、これらは毎週累積で116,991回もダウンロードされていました。特に深刻なのは、このマルウェアが単なる情報窃取に留まらず、Mini Shai-Huludマルウェアに似た自己拡散性(wormable)を持つ点です。一度感染した環境からは、他のnpmパッケージを特定し、同じ悪意のあるpreinstallペイロードを再公開することが可能であり、被害が極めて迅速に拡大する構造でした。
【対応と推奨事項】
レッドハットは直ちに調査を開始し、影響を受けたパッケージをnpmレジストリから削除したと発表しています。同社は、悪意のコードは顧客向けのコンソールシステムには公開されておらず、顧客環境や本番システムへの影響は確認されていないとしています。しかし、セキュリティ専門家は、この攻撃の初期侵入経路が侵害されたGitHubインフラストラクチャにある可能性を指摘しており、開発者やビルドエージェントなど、影響を受けた環境にパッケージをインストールしたすべての人々に対し、関連するすべてのトークンや認証情報(GitHub PATs、SSHキー、クラウドAPIキーなど)を直ちにローテーション(変更)し、環境を信頼できるベースラインから再構築することを強く推奨しています。長期的な視点からは、オープンソースの信頼性に対する懸念が高まり、レッドハットやIBMがAIを活用した脆弱性修正プロジェクト(Project Lightwell)を推進する背景となっています。
背景
npm(Node Package Manager)は、JavaScript開発において極めて重要なオープンソースパッケージリポジトリですが、その巨大さと分散性ゆえに、サプライチェーン攻撃の主要な標的となっています。近年、開発パイプラインの脆弱性を突く攻撃が増加しており、レッドハットのような大手企業も例外ではありません。本件は、その深刻なリスクを具体的に示した事例です。
重要用語解説
- npm: Node.jsのパッケージ管理システム。JavaScriptのライブラリやツールを共有・利用するための巨大なリポジトリであり、本件の攻撃の主要な舞台となった。
- サプライチェーン攻撃: ソフトウェアの開発・提供プロセス(サプライチェーン)のどこか(例:パッケージ、ビルドツール)に悪意のあるコードを埋め込み、最終製品にまで到達させる攻撃手法。
- preinstallフック: npmパッケージがインストールされる前に自動的に実行されるスクリプト機能。攻撃者がこのフックを利用することで、ユーザーの意図しないタイミングで悪意のコードを実行させた。
- 影響: 本件は、単なる企業への被害に留まらず、オープンソースソフトウェア(OSS)の信頼性全体に対する警鐘を鳴らしています。開発者は、使用するすべての依存関係(dependency)を疑い、シークレット管理や認証情報のローテーションを徹底することが求められます。企業は、より強固なビルドパイプラインとセキュリティ監査体制の構築が急務です。