react2shell-scanner — RSC/Next.js RCE 検出ツール
概要
React Server Components(RSC)を利用した Next.js アプリケーションに影響する既知のリモートコード実行(RCE)脆弱性、CVE-2025-55182 および CVE-2025-66478 を検出するためのコマンドラインツールです。スキャナーは特定の整形された multipart POST リクエストを送信し、レスポンスに含まれるエラーやスタックトレースの痕跡を解析することで、脆弱なサーバーを高い精度で識別します。検出手法に関する技術的背景は Assetnote のブログ記事にて詳述されています。
リポジトリの統計情報
- スター数: 43
- フォーク数: 5
- ウォッチャー数: 43
- コミット数: 2
- ファイル数: 3
- メインの言語: Python
主な特徴
- 高精度検出: 特定のエラーフィンガープリントに基づき誤検知を低減
- 非破壊的な確認手法: 実行可能なペイロードを投げず、応答解析で判定
- 軽量実装: Python スクリプト単体(requirements.txt あり)で利用可能
- CI/自動診断への組み込みが容易な CLI 形式
技術的なポイント
react2shell-scanner の検出アプローチは「誘発 -> 観察 -> 判定」のフローに沿っています。具体的には、RSC/Next.js の脆弱な処理経路でのみ発生する特定のエラー条件を誘発するために、細工された multipart/form-data の POST リクエストを送信します。脆弱なバージョンでは、その処理中に例外やスタックトレース、あるいは特有のレスポンスパターンが返るため、スキャナーはレスポンス本文と HTTP ヘッダを解析してこれらの痕跡を検出します。
この手法の利点は高い「ハイフィデリティ(高忠実度)」です。実際のコード実行を行わず、エラー情報の漏洩を指標としているため、被害を拡大させることなく脆弱性の存在を判定できます。実装面では Python の HTTP ライブラリ(requests 等)を用いており、依存は最小限に抑えられています。requirements.txt に必要パッケージが明記されており、単一の scanner.py を実行するだけで診断が可能です。
運用上の注意点としては、スキャナーはリモートのエンドポイントに対して実際にリクエストを送るため、対象の利用規約や法的同意が必要です。また、パッチ適用済みやプロキシ経由、カスタムエラーハンドラが設定された環境では検出が困難になり、偽陰性(検出漏れ)が発生し得ます。逆に、詳細なエラーメッセージを返す環境では検出が容易になる一方で、情報露出の有無自体が問題となり得ます。Assetnote のブログ記事では検証ケースや検出ロジックの背景が公開されているため、スキャナーの運用前に目を通すことを推奨します。
プロジェクトの構成
主要なファイルとディレクトリ:
- README.md: file
- requirements.txt: file
- scanner.py: file
まとめ
RSC を利用する Next.js の既知 RCE を非破壊的に高精度で検出できる実用的なツール。
リポジトリ情報:
- 名前: react2shell-scanner
- 説明: High Fidelity Detection Mechanism for RSC/Next.js RCE (CVE-2025-55182 & CVE-2025-66478)
- スター数: 43
- 言語: Python
- URL: https://github.com/assetnote/react2shell-scanner
- オーナー: assetnote
- アバター: https://avatars.githubusercontent.com/u/35264812?v=4
READMEの抜粋:
react2shell-scanner
A command-line tool for detecting CVE-2025-55182 and CVE-2025-66478 in Next.js applications using React Server Components.
For technical details on the vulnerability and detection methodology, see our blog post: https://slcyber.io/research-center/high-fidelity-detection-mechanism-for-rsc-next-js-rce-cve-2025-55182-cve-2025-66478
How It Works
The scanner sends a crafted multipart POST request that triggers a specific error condition in vulnerable versions of React Ser…