
軽量な Go ツールキットと、CVE-2025-55182 を調査・トリアージするためのDocker化されたNext.jsラボです。教育および正規のテスト目的に限ります。
React2Shell_Deconstructing_a_Perfect_10_RCE.pdf と攻撃経路図を参照してください
checker: 高速な並行インベントリスキャン(単一ターゲット、ファイル、または標準入力)、RSC露出のヒューリスティック診断、ターゲットごとのJSON出力、最終サマリー、オプションの -only-vuln、-no-progress、カスタム -ua。poc: エクスプロイト形式のRSCマルチパートリクエストを送信し、返されたダイジェストを表示します。-c でカスタムコマンドを指定可能(デフォルトは id)。-c)、タイムアウト、進行状況の統計。-target、-list、または -stdin。スキームがない場合に自動で https:// を先頭に追加。vulnlab/) は Next.js 15.5.6/React 19 を使用し、安全な再現のため Dockerfile と docker-compose.yml は localhost:3000 に固定されています。cd checker
GOCACHE=/tmp/go-cache go build -o CVE-2025-55182 ./cmd/CVE-2025-55182
環境でキャッシュの権限問題が発生する場合は、GOCACHE を設定してください。
# Scanner
./CVE-2025-55182 checker -target https://example.com
./CVE-2025-55182 checker -list ../targets.txt -c 50 -only-vuln
cat ../targets.txt | ./CVE-2025-55182 checker -stdin -no-progress
# PoC (exploit-style request)
./CVE-2025-55182 poc -target http://localhost:3000
./CVE-2025-55182 poc -target http://localhost:3000 -c "whoami"
CVE-2025-55182 は、React Server Components が Flight ペイロードからモジュールをロードする際の安全でないデシリアライゼーションのバグです。react-server-dom-webpack では、ヘルパー requireModule(metadata) がモジュールを取得し、moduleExports[metadata[2]] を返します。ブラケットアクセスはプロトタイプチェーンを辿るため、攻撃者が制御する $1:constructor:constructor のような参照は、エクスポートされた関数からその constructor(グローバルの Function コンストラクタ)へと昇り、任意のJSを実行できます。Flight プロトコルにより、攻撃者はこれらのコロン区切りのプロパティパスを供給でき、モジュールローダーをリモートコード実行のガジェットに変えることができます。
cd vulnlab
docker compose build
docker compose up
# App listens on 127.0.0.1:3000 inside the container; runs as non-root user.
Dockerfile は Next.js アプリ(Node 20 Alpine)をビルドし、依存関係をインストールしてビルドし、非 root の nextjs ユーザーとして実行します。docker-compose.yml はデフォルトでローカルのみのテスト向けに 127.0.0.1:3000:3000 をバインドします。Snort / Suricata (サーバーへのHTTP)
alert http any any -> $LAN_NETWORK any (
msg:"Potential Next.js React2Shell / CVE-2025-66478 attempt";
flow:to_server,established;
content:"Next-Action"; http_header; nocase;
content:"multipart/form-data"; http_header; nocase;
pcre:"/Content-Disposition:\s*form-data;\s*name=\"0\"/s";
pcre:"/\"status\"\s*:\s*\"resolved_model\"/s";
pcre:"/\"then\"\s*:\s*\"\$1:__proto__:then\"/s";
classtype:web-application-attack;
sid:6655001;
rev:1;
)
クエリ(脆弱なReact RSCパッケージ)
{
"queries": {
"detect_rev2shell_react_server_components": {
"query": "SELECT name, version, path FROM npm_packages WHERE (name='react-server-dom-parcel' AND (version='19.0.0' OR (version >= '19.1.0' AND version < '19.1.2') OR version='19.2.0')) OR (name='react-server-dom-turbopack' AND (version='19.0.0' OR (version >= '19.1.0' AND version < '19.1.2') OR version='19.2.0')) OR (name='react-server-dom-webpack' AND (version='19.0.0' OR (version >= '19.1.0' AND version < '19.1.2') OR version='19.2.0'));",
"interval": 3600,
"description": "Detects vulnerable versions of React Server Components packages (react-server-dom-*) affected by CVE-2025-55182 / CVE-2025-66478 / React2Shell.",
"platform": "linux,windows,macos",
"version": "1.0"
}
}
}