主な観察事項

  • 悪意のあるパッケージバージョンを確認:顧客環境において、Axios npmパッケージの悪意のあるバージョン(axios@1.14.1およびaxios@0.30.4)が確認され、サプライチェーン侵害への露出が示されました。
  • 不審な依存関係の実行:未承認の依存関係の存在が確認され、npmインストール時にpostinstallスクリプトが実行され、感染の初期段階がトリガーされました。
  • 異常なプロセス実行チェーン:複数のシステムにおいて、npmまたはnodeがcmd.exe、powershell.exeなどのコマンドインタープリターを生成し、その後curlやwgetなどのネットワークユーティリティが実行されるという、不審な親子プロセス関係が確認されました。
  • LevelBlueによる悪用後アクティビティの検知:LevelBlueのCybereason Defense Platformが、postinstallスクリプトの実行、異常なプロセス(名前変更されたPowerShell)の生成、および不審なアウトバウンドネットワーク通信に関連する検知を生成し、悪用の成功と影響を受けたシステムへのリモートアクセス型トロイの木馬(RAT)展開の可能性が示されました。

何が起きているのか?

顧客環境において、Axios npmパッケージに関わるサプライチェーン侵害が確認されました。今月初め、脅威アクターが同社の主要開発者のnpmアカウントを侵害し、npmリポジトリに悪意のあるバージョンのパッケージを公開することに成功したというニュースが伝えられました。

これらの悪意のあるバージョンには、npmインストールプロセス中にpostinstallスクリプトを通じて自動的に実行される隠れた依存関係が含まれていました。これにより、二次ペイロードのダウンロードと実行が行われ、最終的に影響を受けたシステムにRATが展開されました。

従来のマルウェア感染とは異なり、この攻撃は依存関係のインストール以外にユーザーの操作を必要とせず、自動インストールが一般的な開発者システムおよびCI/CD(継続的インテグレーション/継続的デリバリー)パイプラインにとって特に危険です。

プロアクティブな脅威ハンティングにより、環境内の複数のマシンにわたるこのアクティビティの存在が確認されました。

影響

この侵害の影響は、攻撃者が獲得した実行の性質とアクセスの観点から、重大と判断されます。

影響を受けたシステムでは、以下の被害が発生した可能性があります:

  • 脅威アクターによる完全なリモートアクセス
  • APIキー、SSHキー、トークンを含む機密認証情報の漏洩
  • 開発環境およびビルドパイプラインの侵害
  • ソフトウェアビルドへの悪意のあるコードの挿入の可能性
  • ネットワーク内での横断的移動のリスク

現時点では、大規模なデータ漏洩は確定的に確認されていませんが、否定することもできません。影響を受けたすべてのシステムは、完全に侵害されたものとして扱う必要があります。

図1. Axios npm悪用に関連する攻撃フロー図

図2. LevelBlueのCybereason EDRプラットフォームで観察された攻撃フロー

分析

現在の悪用状況

この攻撃は、侵害された信頼できるパッケージを活用して初期アクセスを達成します。npmのライフサイクルスクリプトを悪用することで、脅威アクターはインストール時に悪意のあるコードが自動的に実行されることを保証します。

この手法が高い効果を持つ理由は以下の通りです:

  • 従来のユーザーインタラクションベースの防御を回避する
  • 信頼された開発ワークフロー内で実行される
  • 直接的および推移的な依存関係の両方に影響を与える

短い露出ウィンドウは、自動依存関係の更新とCI/CDプロセスに依存した、標的型または迅速な悪用の試みを示唆しています。

脅威の分析

このインシデントは、ソフトウェアサプライチェーンの信頼モデルにおける脆弱性を浮き彫りにしています。具体的には:

  • 検証なしにサードパーティパッケージへ過度に依存すること
  • バリデーションなしにインストールスクリプトが自動実行されること
  • 依存関係レベルの動作への可視性の欠如
  • 開発者環境の監視が不十分であること

タイポスクワット的または隠れた依存関係(plain-crypto-js)の使用は、検出回避と正規パッケージ構造への偽装の試みをさらに示しています。

既知の悪用後アクティビティ

影響を受けたシステムで観察された感染後のアクティビティは以下の通りです:

  • npm/nodeプロセスによって開始されたシェルコマンドの実行
  • 外部インフラからの二次ペイロードのダウンロード
  • マルウェアコンポーネントのインメモリ実行の可能性
  • 攻撃者が制御するドメインへのアウトバウンド接続の確立
  • RATの展開および持続性メカニズムの兆候

この動作は、初期侵害が迅速にシステムへの完全なアクセスと制御へと移行することを強く示唆しています。

推奨事項

感染したシステムに対して、即時の封じ込めと修復措置が必要です:

  • 特定されたすべての影響システムをネットワークから隔離する
  • 侵害されたホストを再イメージ化または再構築する(部分的なクリーンアップよりも推奨)
  • 潜在的に漏洩したすべての認証情報をローテーションする:
  • APIキー
  • SSHキー
  • アクセストークン
  • npm認証情報
  • CI/CDパイプラインと最近のビルドの完全性を監査する
  • 不審なアクティビティがないかアウトバウンドネットワーク接続を確認する
  • 実行可能な場合はnpmスクリプトの実行を無効化する(–ignore-scripts)
  • 依存関係のバージョン固定と整合性検証を強制する
  • すべての開発者およびパッケージリポジトリアカウントでMFAを有効化する

悪用後に関連する侵害の痕跡(IoC)

タイプ

コメント

Sha256

e10b1fa84f1d6481625f741b69892780140d4e0e7769e7491e5f4d894c2e0e09

package/setup.js

Sha256

617b67a8e1210e4fc87c92d1d1da45a2f311c08d26e89b12307cf583c900d101

6202033.ps1

IP

142.11.206[.]73

C2 IPアドレス

Domain

sfrclak[.]com

C2ドメイン

URL

http[:]//sfrclak[.]com[:]8000/6202033

C2 / ペイロードサーバーとして使用されたURL

これらの侵害の痕跡は脅威ハンティングの目的で使用できます。

LevelBlueの推奨事項

LevelBlue Cybereason Defense Platformは、Axiosの悪用後のアクティビティを検知・阻止することができます。LevelBlueは以下の措置を推奨します:

  • 厳格な依存関係管理ポリシーを実施する
  • ロックファイルと検証済みパッケージソースのみを使用する
  • 必要でない場合はnpmライフサイクルスクリプトを無効化する
  • 本番システムと同等の厳格さで開発者エンドポイントを監視する
  • サプライチェーンセキュリティツールを統合する
  • 開発者アクティビティに焦点を当てた定期的な脅威ハンティングを実施する
  • 異常なパッケージ更新や依存関係の変更に対するアラートを設定する
  • プロアクティブにハンティングを行うには、LevelBlue Cybereason Defense PlatformのInvestigationスクリーンと、後述のHunting Queriesセクションのクエリを使用して、悪用の可能性があるアセットを検索してください。検索結果に基づき、感染したマシンの隔離やペイロードファイルの削除などの修復措置を講じてください。
  • 前述のIoCを「Block & Prevent」設定でカスタムレピュテーションに追加する

ハンティングクエリ

Axios npmの侵害が悪用されているかどうかを検知するには、LevelBlue Cybereason Defense Platformで以下のハンティングクエリを実行してください。

Axios侵害のハンティング

不審なスクリプト実行を検索するために以下のクエリを実行することを推奨します:

1.Process Element → フィルターを追加 「Process name is cscript.exe OR mshta.exe OR cmd.exe OR wscript.exe」および「Command line contains ‘packages.npm’ OR ‘http:’ OR ‘https:’」および「Command line contains ‘AppData\Local\Temp\’」

Processエレメントを使用したクエリ

同じ結果を得るための以下のハンティングクエリも提供します:

https://[yourenvironment]/#/s/search?queryString=0<-Process”elementDisplayName:@cmd.exe%7Ccscript.exe%7Cmshta.exe%7Cwscript.exe,commandLine:@packages.npm%7Chttp:~%7Chttps:~,commandLine:@AppData%5CLocal%5CTemp%5C”

2. Process Element → フィルターを追加 「Command line contains ‘6202033.ps1’ OR ‘6202033.vbs’」

Processエレメントを使用したクエリ

同じ結果を得るための以下のハンティングクエリも提供します:

https://[yourenvironment]/#/s/search?queryString=0<-Process”commandLine:@6202033.ps1%7C6202033.vbs”