緊急アラート:Shai-Huludの概要と推奨される対策まとめ
今週、npmプラットフォームを標的とした新たなサプライチェーン攻撃に関するニュースが、セキュリティ業界を騒がせました。Codebookでも9月17日付のサイバーアラート「自己伝播ワーム『Shai-Hulud』のサプライチェーン攻撃で180件超のnpmパッケージが侵害される」でこのトピックを取り上げましたが、その重大性、また影響が広範に及ぶ恐れなどを踏まえ、本記事ではより簡潔に箇条書き形式でこの攻撃の概要をまとめます。また、脅威インテリジェンス企業Flahspointが推奨するプロジェクト保護策も共有します。
攻撃の概要
- npmエコシステムを標的としたオープンソースサプライチェーン攻撃である
- 攻撃者は、npmパッケージの「package.json」ファイルに悪意ある「postinstall」スクリプトを埋め込んで侵害
- 現時点で少なくとも187件のnpmパッケージが侵害されており、自己伝播性能を持つワームマルウェア「Shai-Hulud」に感染している
- Shai-Huludは多段階マルウェアであり、侵害されたnpmパッケージがインストールされると自動的に実行される
- 標的:LinuxおよびmacOSシステムを使う開発者
- 主目的:GitHubアクセストークンやSSHキーなど、多様な認証情報の窃取
Shai-Huludの動きとワーム性能
- Shai-Huludは、侵害されたパッケージをインストールした開発者のシステムおよびCI/CD環境から、以下のデータを探して窃取する:npmおよびGitHubの認証トークン、SSHキー、Azureなどのプラットフォームのクラウド認証情報、暗号資産ウォレットなど
- Shai-Huludは、見つかったGitHubの認証トークンを使って、感染した開発者がメンテナンスしているその他のパッケージ(人気順に上位20件)を特定し、それらに悪意ある「postinstall」スクリプトを注入して感染させ、npmレジストリに再公開する。新たに感染したこれらのパッケージにより、当該パッケージを利用する商用ソフトウェアも侵害されることになる
s1ngularityの後継版か
- Shai-Huludのキャンペーンは「s1ngularity」として知られる脅威アクターキャンペーンの進化版と思われるが、危険度はs1ngularityより増している
- s1ngularityは、同じくnpmエコシステムを狙ったサプライチェーン攻撃で、8月27日にWizが報告。
- Shai-Huludと同様、s1ngularityキャンペーンでも目的は開発者の認証情報の窃取と、プライベートリポジトリの漏洩。
- ただ、Shai-Huludとの大きな違いは、盗難npmトークンを使って手動で悪意あるパッケージを公開していた点。一方でShai-Huludは伝播プロセスが自動化されており、連鎖的かつ急速に感染が広がる。
Shai-Huludへの警戒を高めるべき理由
脅威インテリジェンス企業のFlashpointは、Shai-Huludのワーム性能に加えて、npmが標的になっているという点がこのサプライチェーン攻撃の重大性を高めていると指摘しています。現代のソフトウェア開発の基盤はオープンソースソフトウェア(OSS)とライブラリに依存するようになっていますが、オープンソースJavaScriptエコシステムの中心にあるのがnpmです。もはやnpmは単なるツールではなく、再利用可能なコードパッケージの中核ハブとして機能する巨大な公開レジストリとなっています。特にその「相互接続性」と「普遍性」は、npmの重要性を示すとともにShai-Huludによる影響を深刻化させる要因にもなり得ます。
- 相互接続性:現代のアプリケーションは単一構造ではなく、相互接続されたnpmパッケージのネットワークで構築されており、単一プロジェクトが数百から数千もの依存関係に依存するケースも珍しくない。
- 普遍性:最小規模のフロントエンドWebサイトから最大規模のエンタープライズバックエンドまで、npmパッケージは現代インターネットの大部分を支える重要な構成要素となっている。
Flashpointの推奨策
以下は、Flashpointが推奨する緩和策です。
- システムのチェック:システムとプロジェクトをスキャンし、侵害が明らかになっているnpmパッケージ(※)の有無を調べる。さらに、今後プロジェクトに追加されるパッケージにも注意する。
(※)同じくこの攻撃について報告しているAikido社のブログ記事「S1ngularity/nx attackers strike again」に一覧が記載されています。
- SBOMの活用:SBOMはソフトウェア内の全パッケージを網羅する必須のインベントリであり、依存関係のマップとして重要な役割を果たす。脅威インテリジェンスフィードと組み合わせることで、侵害されたパッケージが判明した際に即座に特定し対応できる。
- キーのローテーション:npmトークン、GitHub個人アクセストークン、クラウド認証情報を含む、すべての開発者キーと認証情報を直ちにローテーションする。
- 2FA/MFA(多要素認証)の有効化:すべての開発者アカウント、特にnpmとGitHubにおいて、二要素認証または多要素認証を強制的に適用する。
- パッケージロックファイルの使用:package-lock.json、yarn.lock、または pnpm-lock.yaml ファイルを使用して、依存関係を特定の信頼できるバージョンに固定する。これにより、新たに公開された侵害されている可能性のあるバージョンの自動インストールを防ぐ。
- npmキャッシュのクリーンアップ:ローカルのnpmキャッシュをクリアし、システムに侵害されたパッケージが保存されていないことを確認する(コマンド「npm cache clean –force」を実行する)。
Flashpoint, VulnDBについて
Flashpointは、Deep & DarkWeb(DDW)に特化した検索・分析ツールです。ダークウェブ等の不法コミュニティで、どのようなPoCやエクスプロイトが議論・取引されているか等をモニタリングできます。また、Flashpointの一機能として利用できるVulnDBは、CVE/NVDデータベースにない脆弱性情報や各脆弱性のメタデータを豊富に含んだ脆弱性データベースです。
日本でのFlashpointに関するお問い合わせは、弊社マキナレコードにて承っております。
また、マキナレコードではFlashpointの運用をお客様に代わって行う「マネージドインテリジェンスサービス(MIS)」も提供しております。