
Next.js Server Actions内のCVE-2025-55182脆弱性をテストおよび分析
プロジェクトステータス: 実験的 / 概念実証
このリポジトリは、CVE-2025-55182 を分析するための管理された研究環境および概念実証 (PoC) フレームワークとして機能します。Next.js Server Actions のコンテキストにおける プロトタイプ汚染 の脆弱性を実証しており、特に安全でない再帰的なマージ操作を標的としています。
中核となる脆弱性は、Next.js Server Action (syncConfiguration) 内に実装されたカスタムの deepMerge ユーティリティ関数に存在します。この関数は、特別なオブジェクトキー(具体的には __proto__ と constructor)に対する適切なサニタイゼーションを欠いています。この見落としにより、認証されていない攻撃者が任意のプロパティをグローバルな Object.prototype に注入できるようになります。
サーバーサイドの Node.js ランタイムにおいて、プロトタイプ汚染が成功すると、以下の結果を招く可能性があります:
isAdmin)、または構成設定をグローバルに変更する。toString や valueOf などの重要な内部メソッドを上書きしてアプリケーションを不安定にする。child_process やテンプレートエンジン内)と連鎖させて任意のコード実行を達成できることがよくあります。lab/next-app/: セキュリティ上の欠陥をシミュレートするために設計された脆弱な Next.js 15 アプリケーション。
src/app/actions.jsx: 脆弱な deepMerge 実装を含むサーバーサイドコード。exploits/: テストと悪用のための Python 自動化スクリプト。
rce.py: 悪意のある JSON ペイロードの注入を自動化し、サーバーの状態汚染を実証するスクリプト。get-shell.py: RSC Flight Protocol のデシリアライゼーションベクトルを探る高度な PoC。docs/PAYLOADS.md: 手動テストと分析のためのさまざまな JSON ペイロードを含むリファレンスドキュメント。ラボは Docker(推奨)またはローカルで実行できます。
Docker と Docker Compose がインストールされていることを確認してください。
docker-compose up --build
アプリケーションは http://localhost:3000 でアクセスできます。
Node.js 20+ が必要です。
cd lab/next-app
npm install
npm run dev
アプリケーションは http://localhost:3000 でアクセスできます。
http://localhost:3000 に移動します。docs/PAYLOADS.md からペイロードを選択します(例: Basic Payload)。提供されている Python スクリプトを使用すると、脆弱性をプログラムで検証できます。
前提条件: ブラウザのネットワークタブ(POST リクエストヘッダー Next-Action を探す)またはサーバーのターミナル出力から Next-Action ID を取得します。
docker exec -it exploit-runner bash
export ACTION_ID="your_action_id_here"
python3 rce.py "id"
pip install -r exploits/requirements.txt
export ACTION_ID="your_action_id_here"
python3 exploits/rce.py "id"
注: rce.py スクリプトは、状態汚染の成功を実証するように構成されています。完全なシェル実行は、特定の環境ガジェットに依存し、異なる場合があります。
このプロジェクトは、教育目的およびセキュリティ研究のみを目的としています。
明示的な書面による許可がないシステムで、ここで提供されているコードや技術を使用しないでください。作成者は、この資料によって引き起こされた誤用や損害について責任を負いません。