
Node.js を使用した CVE-2025-66478 の概念実証エクスプロイトデモ
このリポジトリには、Next.js CVE-2025-66478 の脆弱性を再現・調査するための概念実証(PoC)コードが含まれています。脆弱性のある Next.js アプリケーションと、脆弱性をテストするための Node.js エクスプロイトスクリプトが含まれています。
英語 · 中文
これは、Next.js の Server Actions 処理中に発生する**リモートコード実行(RCE)**脆弱性です。
重要なポイント:
__proto__ プロパティを介したプロトタイプ汚染。| 項目 | 説明 |
|---|---|
| CVE ID | CVE-2025-66478 |
| タイプ | リモートコード実行(RCE) |
| 根本原因 | RSC Flight プロトコルにおける安全でない逆シリアル化 |
| 深刻度(CVSS) | 10.0(Critical) |
| 影響 | サーバー上での任意のシステムコマンド実行 |
__proto__ などのプロパティを注入します。Object.prototype が汚染されます。then プロパティが注入されます。Next.js のロジックは、これらのオブジェクトを**Promise(Thenable)**として誤って識別します。await しようとすると、then メソッドに注入された悪意のある JavaScript コードが実行されます(例:child_process.execSync)。sequenceDiagram
participant Attacker as Attacker
participant Server as Next.js Server
Attacker->>Server: POST / (JSON with "__proto__": {"then": ...})
Note right of Server: JSON parsing pollutes Object.prototype
Server->>Server: Application logic encounters an object
rect rgb(200, 150, 150)
Note right of Server: "Thenable" check exploitation chain
Server->>Server: Check: typeof obj.then === 'function'?
Server-->>Server: Yes (due to pollution)
end
Server->>Server: Await/execute malicious .then()
Note right of Server: Malicious JS code runs (RCE)
Server-->>Attacker: Response (Action redirect / Error message)
したがって、サーバーがこの改ざんされた Promise を処理すると、攻撃者が注入した JavaScript コードが実行され、システムコマンド実行につながる可能性があります。同梱の main.mjs は、この攻撃シナリオを再現するためのサンプルコードです。
この脆弱性は、App Router を使用する Next.js アプリケーションに影響を与えます。
パッチ適用済みバージョン:
app/page.tsx:脆弱なアプリケーションのサンプルコード。exploit.mjs:Node.js で記述されたエクスプロイト実行スクリプト。# You can also use yarn or npm.
pnpm install
pnpm dev
ブラウザで http://localhost:3000 にアクセスできることを確認してください。
pnpm exploit
デフォルトでは、ローカルアドレス(http://localhost:3000)を対象にします。別のアドレスをテストするには、--url オプションを使用します:
pnpm exploit --url http://target-ip:3000
このコードは、セキュリティ研究および教育目的のみを意図しています。事前の許可なくシステムやネットワークに対してこのツールを使用することは違法であり、そのような使用によって生じるいかなる問題についても、ユーザーが全責任を負います。