Shai-hulud 2.0がnpmインストールを完全なクラウド侵害経路へと変える

新たなShai-huludマルウェアの波が、信頼されたnpmパッケージを密かに武器化し、マルチクラウドの秘密情報を盗み、開発者エコシステムに大規模なバックドアを仕掛けています。

「Shai-hulud 2.0」と名付けられたこのキャンペーンは、認証情報の窃取とサプライチェーンの侵害を自動化し、単一のメンテナーやプロジェクトをはるかに超えて波及する可能性があります。

このマルウェアは「…主要なクラウドプラットフォームや開発者サービスから認証情報や秘密情報を盗み出し、被害者が管理するnpmパッケージにバックドアを自動的に仕込むことができる」とTrend Microの研究者は述べています

攻撃の内部

Shai-hulud 2.0は、悪意のあるnpmパッケージを通じて拡散し、preinstallライフサイクルフックを悪用して、被害者がnpm installを実行した瞬間に発動します。

攻撃者はpackage.jsonファイルを改変し、インストールプロセスがsetup_bun.jsというローダースクリプトを起動するようにします。このスクリプトは環境の準備を担います。

このローダーはまず、Bun JavaScriptランタイムがインストールされているかを確認し、未インストールの場合は公式のbun.shインストールスクリプトを使って密かにインストールします ― これにより一見正当な活動に見せかけます。

インストール後、システムPATHを再読み込みし、Bunを使ってメインペイロードであるbun_environment.jsを実行します。

ペイロードが実行されると、マルウェアは自身の実行環境を調査し、どれだけ積極的に動作できるかを判断します。

CI/CDパイプラインでは即座に実行され、ビルドシークレットへのアクセスを最大化します。一方、開発者のワークステーションでは、Shai-hulud 2.0はよりステルスな手法を取ります。

切り離されたバックグラウンドプロセスを生成し、npm installコマンドが通常通り完了するようにして、認証情報の窃取やシステム侵害が気付かれずに継続されます。

その後、ペイロードは包括的な認証情報収集フェーズを開始します。.npmrcファイルからnpmトークンを抽出し、npmのwhoamiAPIで検証します。

GitHubの認証情報も収集し、それを使って攻撃者が管理する新しいリポジトリを作成し、セルフホスト型GitHub Actionsランナーを登録して、隠密なコマンド&コントロール(C2)チャネルを形成します。

さらに、マルウェアは環境変数やクラウド設定ファイルをスクレイピングしてAWS、GCP、Azureの認証情報を盗み出し、それらを使ってAWS Secrets Manager、GCP Secret Manager、Azure Key Vaultから利用可能な全てのシークレットを取得します。

侵害を深めるため、TruffleHogを自動的にダウンロードして実行し、被害者のファイルシステム内のAPIキーやトークン、機密設定文字列などのハードコードされたシークレットをスキャンします。

Shai-hulud 2.0が有効なnpmまたはGitHubトークンの取得に失敗した場合 ― つまり攻撃者が効果的にデータを伝播・流出できない場合 ― 破壊的な行動にエスカレートします。

この場合、マルウェアは被害者のホームディレクトリ全体の消去を試み、不成功な侵害をデータ破壊インシデントへと変えます。

Shai-hulud 2.0がnpmパッケージに大規模バックドアを仕込む方法

Shai-hulud 2.0の最も危険な機能の一つは、npmパッケージへのバックドア仕込みを完全自動化し、ソフトウェアサプライチェーン全体にワームのように急速に拡散できる点です。

マルウェアはまず、侵害された開発者アカウントが管理する全てのnpmパッケージを列挙し、npmレジストリに問い合わせてダウンロード数が最も多いものを優先し、下流への影響を最大化します。

ターゲットを特定した後、各パッケージのtarballをダウンロードし、内容を展開して、元の侵害で使われたsetup_bun.jsbun_environment.jsの感染チェーンを発動する悪意のあるpreinstallスクリプトを注入します。

これにより、更新されたパッケージをインストールする開発者は、正規のコードが実行される前にマルウェアを知らずに実行することになります。

変更が完了すると、Shai-hulud 2.0は改変済みモジュールを再パッケージ化し、被害者自身の認証トークンを使ってnpmレジストリに再公開します ― これによりアップデートが正当かつ信頼できるものに見えます。

疑念を避けるため、マルウェアはバージョン番号をパッチレベルで1つだけ上げ、通常のバグ修正やメンテナンスリリースを装います。

これによりシームレスな配布メカニズムが生まれ、下流ユーザーやCIパイプラインが新バージョンを自動的に取得し、感染が静かに発動します。

新たに感染したメンテナーごとに自身のパッケージが自動的に改変・再公開されるため、マルウェアはワームのような性質を持ちます。

各侵害アカウントが新たな伝播ノードとなり、Shai-hulud 2.0はnpmエコシステム全体に指数関数的に拡散し、信頼されたパッケージアップデートを通じて数千の開発者、アプリケーション、組織に到達する可能性があります。

Shai-hulud型サプライチェーン攻撃への防御方法

Shai-hulud 2.0は、たった一つのメンテナーアカウントの侵害が、広範なパッケージのバックドア化、クラウドシークレットの窃取、CI/CDの侵入を引き起こすことを浮き彫りにしています。

以下のコントロールは、この種のキャンペーンへの曝露を減らし、耐性を強化するのに役立ちます。

  • 全てのnpm、GitHub、クラウドIDに対し、フィッシング耐性のあるMFA、ハードウェアキー、最小権限アクセスを徹底する
  • 不正なGitHub Actionsワークフロー、セルフホストランナー、異常なリポジトリ作成、広範なワークフロートークンスコープを監視する
  • アクセストークン、シークレット、クラウド認証情報を制限し頻繁にローテーションするとともに、環境変数や設定ファイルに保存される機密データを最小限に抑える
  • 突然のライフサイクルフック変更、インストーラー追加、悪意のあるpreinstallスクリプトについてnpmパッケージを監査し、重要パッケージの内部許可リストを維持する
  • クラウドシークレットマネージャーで異常な列挙、リージョン横断クエリ、大量シークレットアクセスを監視し、侵害の兆候を検知する
  • 開発者およびCI/CD環境をEDR、スクリプト実行監視、package.jsonやワークフロー変更の厳格なレビューで強化する
  • 開発者、CI/CD、クラウドの役割を分割し、ラテラルムーブメントを制限し、メンテナーやマシンアカウントが侵害された場合の被害範囲を縮小する

Shai-hulud 2.0が示す通り、攻撃者はもはや個別の脆弱性ではなく、現代開発の結節点 ― アイデンティティ、自動化、パッケージエコシステム ― を標的にしています。

現代ソフトウェアパイプラインへの脅威の拡大

Shai-hulud 2.0は、現代の脅威アクターがもはやエンドポイントだけを狙っているのではなく、ソフトウェアの構築・デプロイの中核 ― 開発者ID、自動化パイプライン、クラウドシークレットストア ― を標的にしていることを痛感させます。

教訓は明白です:サプライチェーンセキュリティは単なる依存関係のスキャンではなく、信頼されたメンテナーやパッケージが一夜にして攻撃者の配布チャネルになり得ることを認識することです。

Shai-huludのようなキャンペーンがより自動化され、攻撃的になる中で、開発者IDの保護やCI/CDインフラの強化を怠る組織は、たった一度のnpm installが完全なクラウド侵害の入口となるリスクを抱えています。

だからこそ、ゼロトラスト ― 想定された信頼ではなく厳格な検証に重点を置く ― がソフトウェアサプライチェーン防御にますます不可欠となっています。

翻訳元: https://www.esecurityplanet.com/threats/shai-hulud-2-0-turns-npm-installs-into-a-full-cloud-compromise-path/

ソース: esecurityplanet.com