
CVE-2025-29927の概念実証エクスプロイトで、x-middleware-subrequestを追加してNext.jsミドルウェアの認証チェックをバイパスします。
このリポジトリには、Next.js の脆弱性 CVE-2025-29927 の概念実証が含まれています。この脆弱性では、内部ヘッダー x-middleware-subrequest を悪用して、認証などのミドルウェアチェックをバイパスできます。
🧪 このプロジェクトは Next.js v13.4.19 でテストされています。
git clone https://github.com/goncalocsousa1/CVE-2025-29927.git
cd CVE-2025-29927
npm install
npm run dev
http://localhost:3000
このアプリケーションは、CVE-2025-29927 の脆弱性を使用してバイパス可能な保護ルートを備えたシンプルな認証システムを示しています。仕組みは次のとおりです:
ホームページ (/)
auth-token) が設定されます保護ページ (/protected)
auth-token クッキーの存在をチェックするミドルウェアで保護されていますミドルウェア保護
auth-token クッキーを持っているかチェックします/protected/* ルートにアクセスしようとすると、ホームページにリダイレクトされます脆弱性のデモンストレーション
x-middleware-subrequest ヘッダーがどのように悪用されるかを示しますauth-token クッキーがなくても、攻撃者は保護ルートにアクセスできますこのアプリケーションには、通常は認証が必要な保護ルート /protected が含まれています。しかし、curl -H "x-middleware-subrequest: middleware" http://localhost:3000/protected のようなリクエストでヘッダー x-middleware-subrequest: middleware を使用することで、認証チェックをバイパスできます。
この動作は Burp Suite を使用してリクエストをインターセプトし、手動でヘッダーを追加することでも再現できます。
Burp Suite で試すには、Proxy タブを開き、Intercept サブタブに移動します。Intercept is On になっていることを確認し、Open Browser をクリックして保護ルート http://localhost:3000/protected に移動します。

Burp Suite が保護ルートへのリクエストをキャプチャします。そこから、次のヘッダーを追加します: x-middleware-subrequest: middleware(上のスクリーンショットで強調表示)。最後にリクエストを転送し、保護ルートにアクセスします。

以下のパッチ適用済みバージョンのいずれかにアップデートしてください: