エグゼクティブ サマリー
パロアルトネットワークスUnit 42は、npm(Node Package Manager)エコシステムを標的とした活発かつ広範なソフトウェア サプライチェーン攻撃を調査しています。現在「Shai-Hulud」として追跡されている自己複製する新種のワームが、180以上のソフトウェア パッケージの侵害に関与していることが確認されています。
この攻撃は、自動化された拡散機能によって規模を拡大させており、サプライチェーンに対する脅威の大きな進化を示すものです。Unit 42はまた、コメントと絵文字が含まれていることから、悪意のあるbashスクリプトを生成するためにLLMが使用されていると、と中程度の確度で評価しています。
パロアルトネットワークスのお客様は、以下のようなさまざまな製品やサービスを通じて、本攻撃に対するより強固な保護を構築したり、攻撃の側面に対する緩和策を備えることができます。
- Cortex Cloud
- Prisma Cloud
- Cortex XDRおよびXSIAM
- Advanced URL Filtering
- Advanced WildFire
- Next-Generation Firewall とともに Advanced Threat Prevention
Unit 42 インシデント レスポンスチームは、お客様のリスクを低減するために、侵害を受けた際の支援だけでなくプロアクティブな評価を提供しています。
Unit 42の関連トピック | サプライチェーン, クレデンシャル ハーベスティング, フィッシング攻撃, JavaScript |
npmパッケージとサプライチェーンの背景
この攻撃は、npmになりすまし、開発者に多要素認証(MFA)のログイン オプションを「更新」するよう求める、クレデンシャル ハーベスティング フィッシング攻撃キャンペーンに端を発している可能性が示唆されています。初期アクセスを獲得すると、脅威アクターはワームとして機能する悪意のあるペイロードをデプロイし、多段階の攻撃シーケンスを開始することが確認されています。Bashスクリプトにコメントと絵文字が含まれていることから、Unit 42では、脅威アクターが悪意のあるコードを記述するためにLLMを利用していると中程度の信頼性で評価しています。
悪意のあるパッケージ バージョンには、インストール後にスクリプトを実行するワームが含まれています。このマルウェアは、侵害された環境をスキャンして、以下のような機密情報を探し出す機能を備えるものです。
- .npmrcファイル(npmトークン用)
- GitHub Personal Access Tokens (PAT)やクラウドサービスのAPIキーに特化した環境変数や設定ファイル:
- Amazon Web Services WAF
- Google Cloud Platform/GKE
- Microsoft Azure
収取された認証情報は、アクターが管理するエンドポイントに流出します。マルウェアはプログラムによって、標的となった被害者のアカウント下に「Shai-Hulud」という名前の新しいGitHub公開リポジトリを作成し、盗み出したシークレットをそこにコミットし、一般に公開するものです。
盗んだnpmトークンを使って、マルウェアは侵害された開発者としてnpmレジストリを認証します。そして、その開発者が保守している他のパッケージを特定し、そこに悪意のあるコードを注入し、新しい危険なバージョンをレジストリに公開します。この自動化されたプロセスにより、脅威アクターが直接介入することなく、マルウェアは指数関数的に拡散することに成功しています。
現在の攻撃範囲
侵害の範囲は広範囲にまで及んでおり、毎週数百万件のダウンロードがされ広く使われている@ctrl/tinycolorライブラリを含む多数のパッケージに影響を及ぼしています。
キャンペーンによる認証情報の盗難は、クラウド サービス(AWS、Azure、GCPなど)の侵害に直結し、ストレージ バケットからのデータ窃取、ランサムウェアのデプロイ、クリプト マイニング、本番環境の破壊工作につながる可能性があるものです。またデータベースを直接盗んだり、フィッシング攻撃を目的としたサードパーティー サービスの乗っ取りへと発展する可能性もあります。さらに、盗まれたSSHキーは、攻撃者に対して侵害されたネットワーク内での横方向の移動を許すものです。
暫定的なガイダンス
- 認証情報のローテーション: すべての開発者クレデンシャルのローテーションを行うことが即刻必要です。これには、npmのアクセストークンをはじめ、GitHubのPATやSSHキー、クラウドやサードパーティ サービスのすべてのプログラム アクセスキーが含まれます。開発者のマシンに存在するシークレットが漏洩しているかもしれないと仮定したアクションが求められます。
- 依存関係の監査: すべてのプロジェクトの依存関係を徹底的かつ迅速に監査することが求められます。npm auditのようなツールを使って、脆弱なパッケージのバージョンを特定します。プロジェクトのpackage-lock.jsonまたはyarn.lockファイルを精査し、既知の危険なパッケージを使用していないことを確認してください。影響を受ける依存関係を直ちに削除または更新する必要があります。
- GitHubアカウントのセキュリティレビュー: すべての開発者は、自分のGitHubアカウントで、認識できない公開リポジトリ(特に「Shai-Hulud」)がないか、不審なコミットがないか、GitHub Actionsのワークフローに予期せぬ変更がないか、確認してください。
- MFAの実施: 特にGitHubやnpmのような重要なプラットフォームでは、認証情報の乱用を防ぐために、すべての開発者アカウントでMFAが厳密に実施されるようにする必要があります。
Unit 42マネージド脅威ハンティング用クエリ
1 2 3 4 5 6 7 |
// Description: Reports indicate only Linux+Mac is targeted due to an os.platform() check, ensure agent coverage on these devices dataset = endpoints | filter endpoint_status in (ENUM.CONNECTED, ENUM.DISCONNECTED) | comp count() by platform |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// Description: Check for connections to any webhook.site domains in raw NGFW URL logs. Optional filter for specific URI observed in use by threat actor. dataset = panw_ngfw_url_raw | filter lowercase(url_domain) contains "webhook.site" | alter susp_uri = if(uri contains "bb8ca5f6-4175-45d2-b042-fc9ebb8170b7") // Optional filter: // | filter susp_uri = true | fields url_domain, uri, susp_uri, * |
1 2 3 4 5 6 7 8 9 |
// Description: Check for connections to any webhook.site domains in XDR telemetry. Optional filter for specific URI observed in use by threat actor. dataset = xdr_data | filter event_type = STORY | filter lowercase(dst_action_external_hostname) contains "webhook.site" or lowercase(dns_query_name) contains "webhook.site" | fields agent_hostname, dst_action_external_hostname, dns_query_name |
1 2 3 4 5 6 7 |
// Description: Detect malicious YAML file dataset = xdr_data | filter event_type = FILE and action_file_name = "shai-hulud-workflow.yml" and agent_os_type in (ENUM.AGENT_OS_MAC, ENUM.AGENT_OS_LINUX) | fields agent_hostname, actor_effective_username, action_file_name, action_file_path, actor_process_image_name, actor_process_command_line |
1 2 3 4 5 6 7 |
// Description: Detects Trufflehog usage. Legitimate tool abused by threat actor for secrets discovery. False positives may occur if there is legitimate use. dataset = xdr_data | filter event_type = PROCESS and lowercase(action_process_image_command_line) contains "trufflehog" | fields agent_hostname, actor_effective_username, actor_process_command_line, action_process_image_command_line |
1 2 3 4 5 6 7 8 9 |
// Description: Detect malicious bundle.js file config case_sensitive = false | dataset = xdr_data | filter event_type = FILE and action_file_sha256 = "46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09" | fields agent_hostname, action_file_name, action_file_path, event_type, event_sub_type, actor_process_image_name, actor_process_command_line |
結論
Shai-Huludワームは、オープンソース コミュニティーを標的とした現在進行中の一連のNPM攻撃における、重大なエスカレーションを代表しています。こ認証情報が盗まれ、個人リポジトリが公開されたs1ngularity/Nxの侵害や、2024年9月に観測された広範囲に及ぶ故宮フィッシング攻撃キャンペーンなどの最近のインシデントに続くものです。
その自己複製設計は特に注目すべきもので、エコシステム全体への拡散を目的に、メンテナの既存の出版権を悪用する自動拡散メカニズムと、クレデンシャル ハーベスティングを効果的に組み合わせているのが特徴です。さらに、AIが生成したコンテンツがShai-Huludキャンペーンに統合されていることが確認されており、これはs1ngularity/Nx攻撃による偵察用AIコマンドライン ツールの明確な武器化に続く展開とされます。これはAIを悪意のある活動に悪用する脅威アクターの手法が常に進化していることを意味し、シークレットの拡散を加速するものです。
このような攻撃手法の一貫した洗練された性質は、オープンソース ソフトウェアのサプライチェーンに対する脅威の増大を浮き彫りにしています。これらの攻撃は、継続的インテグレーションと継続的デリバリー(CI/CD)のスピードで伝播しており、エコシステム全体にとって長期的かつ増大するセキュリティ上の課題となっています。
パロアルトネットワークスは、本調査結果をサイバー脅威アライアンス(CTA)のメンバーと共有しています。CTAの会員は、この情報を利用して、その顧客に対して迅速に保護を提供し、悪意のあるサイバー アクターを組織的に妨害しています。サイバー脅威アライアンスについて詳細を見る。
パロアルトネットワークス製品によるnpmパッケージのサプライチェーン攻撃の防御と検出
パロアルトネットワークスのお客様は、さまざまな製品保護、サービス、アップデートを活用して、本脅威を特定し組織を保護いただけます。
情報漏えいの可能性がある場合、または緊急の案件がある場合はUnit 42インシデント レスポンス チームまでご連絡ください。
- 北米:フリーダイヤル: +1 (866) 486-4842 (866.4.UNIT42)
- 英国: +44.20.3743.3660
- ヨーロッパおよび中東: +31.20.299.3130
- アジア: +65.6983.8730
- 日本: +81.50.1790.0200
- オーストラリア: +61.2.4062.7950
- インド: 000 800 050 45107
Advanced WildFire
Advanced WildFireの機械学習モデルと分析技術は、本脅威に関連するインジケーターに照らして見直され、更新されています。
高度な脅威防御機能を備えた次世代ファイアウォール
「Advanced Threat Prevention」セキュリティ サブスクリプションを有効にした次世代ファイアウォールは 「Next-Generation Firewall」、脅威防御シグネチャ「87042」「87046」「87047」によってこの攻撃をブロックできます。
次世代ファイアウォール向けのクラウド提供型セキュリティサービス
「Advanced URL Filtering 」は、中間者(MitM)フィッシング攻撃をブロックし、この活動に関連するURLを悪意のあるものとして分類します。
Cortex XDRおよびXSIAM
Cortex XDRおよび XSIAMエージェントは、本記事で取り上げた脅威から保護するのに効果的です。エージェントは既知の悪意のあるマルウェアの実行を防止し、振る舞い脅威防御とローカル分析モジュールに基づく機械学習によって未知のマルウェアも阻止することができます。
Cortex Cloud
「Cortex Cloud」は、悪意のあるパッケージの検出や、テストされていない、あるいは許可されていないオープンソースの依存関係にお客様を晒す可能性のある、パイプラインの設定ミスの特定を支援します。このスキャナは、脆弱性、ライセンスに関する懸念、運用上のリスクにフラグを立てるように構築されていますが、新しくリリースされたパッケージ内の悪意のあるコードを検出するようには設計されていません。関連するCI/CDアラートを確認し、お使いのアプリケーションが許可されていないnpmパッケージのバージョンに依存していないことを検証することが極めて重要です。
Cortex Cloudは、サプライチェーン攻撃の検知と防止にCortex Cloudを活用する方法について詳細に解説したブログ記事を公開しています。
Prisma Cloud
Prisma Cloudは、悪意のあるパッケージの使用の検出や、パイプラインの誤設定を認識するのに役立ちます。パイプラインの誤設定を特定することで、顧客がテストされていない/認可されていないOSSパッケージのバージョンを使用する恐れのあるパイプラインを使用するのを防止することができます。なお、本スキャナーは、脆弱性、ライセンス問題、運用上のリスクを検出するために設計されており、新しいパッケージ上の悪意のあるコードを検出するものではありません。関連するCI/CDアラートを調査し、アプリケーションが認可されていないバージョンのnpmパッケージを使用していないことを確認することが重要です。
侵害のインジケーター
- 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09
- b74caeaa75e077c99f7d44f46daaf9796a3be43ecf24f2a1fd381844669da777
- dc67467a39b70d1cd4c1f7f7a459b35058163592f4a9e8fb4dffcbba98ef210c
- 4b2399646573bb737c4969563303d8ee2e9ddbd1b271f1ca9e35ea78062538db
- hxxps://webhook[.]site/bb8ca5f6-4175-45d2-b042-fc9ebb8170b7
その他の資料
- 内訳: 広範なnpmサプライチェーン攻撃により、数十億の週間ダウンロードが危険に - パロアルトネットワークス