主なポイント
2025年3月21日、Vercel は Next.js の CVE-2025-29927 に関するセキュリティアドバイザリーをリリースしました。
CVE-2025-29927 は、Next.js ミドルウェアにおける認証バイパスの脆弱性です
この脆弱性は次のバージョンに影響を与えます。
15.2.3 より前の 15.x
14.2.25 より前の 14.x
13.5.9 より前の 13.x
12.3.5 より前の 12.x
11.x、すべてのバージョン
Fastly NG-WAF をご利用のお客様は、CVE-2025-29927 のテンプレートルールを有効にすることで、この脆弱性への対策をご自身で行えます。
CVE-2025-29927 脆弱性の詳細
Next.js は、フルスタックの Web アプリケーションを構築するための一般的な React フレームワークです。Next.js では、ミドルウェアはリクエストがルートで処理される前にコードを実行できる機能です。API ルートやページに到達する前に、認証、リダイレクト、レスポンスの変更などの動的なリクエスト処理を可能にします。この脆弱性は、Next.js が特定のリクエストにミドルウェアを適用する際の決定方法に関係しています。リクエストが処理されると、Next.js はx-middleware-subrequest ヘッダーの値を取得し、それを使用してミドルウェアを適用するかどうかを決定します。ヘッダーの値に特定の値 (脆弱性のあるバージョンごとに異なる) が含まれている場合、Next.js はミドルウェアの適用をスキップしてリクエストを転送します。
つまり、リクエストに x-middleware-subrequest
ヘッダーと (バージョン固有の) 値が含まれている場合、Next.js ミドルウェアはバイパスされます。
以前のバージョンの Next.js では、ヘッダーの値に middlewareInfo.name
変数の値が含まれているかどうかを確認しています。これは単にミドルウェアが配置されているパスですが、バージョンやインストールによって異なることがあります。
バージョンごとの状況は次のとおりです。
バージョン 12.2 より前
デフォルトではミドルウェアは
pages/_middelware.ts
に存在するので、ペイロードはpages/_middleware
となります。これらのバージョンではpages/
ディレクトリに配置されている必要がありますしかし、ミドルウェアを含むネストされたディレクトリを作成することができるため、アプリケーションの設定によっては
pages/example/_middleware
のようになることがあります。
バージョン 12.2 以降、バージョン 15.x より前
ミドルウェアはページディレクトリにはなく、アンダースコアのプリフィックスも削除されましたが、Next.js はミドルウェアファイルを配置できる
/src
ディレクトリもサポートしていますペイロードには
ミドルウェア
もしくはsrc/middleware
が含まれています
バージョン 15.x
Next.js はミドルウェアをバイパスするために、
middlewareInfo.name
が少なくとも5回存在することをチェックするようになりました。また、/src
ディレクトリも依然として可能性がありますペイロードには
middleware:middleware:middleware:middleware:middleware
もしくはsrc/middleware:src/middleware:src/middleware:src/middleware:src/middleware
のいずれかが含まれています。
脆弱性とその発見に関する詳細については、Rachid と Yasser がこちらの投稿で詳しく説明しています。認証バイパスの他に、脆弱性を悪用してキャッシュポイズニングを通じてサービス妨害攻撃を引き起こす方法も説明しています。
実用的な推奨事項
Fastly は、可能であれば、この脆弱性を修正する次のパッチ適用済みバージョンの Next.js に更新することを推奨します。
15.x用、15.2.3で修正済み
14.x用、14.2.25で修正済み
13.x の場合、13.5.9 で修正されました
12.x の場合、12.3.5 で修正済み
11.x の場合、利用可能なパッチはありません
Fastly NG-WAFのお客様
Next.js のバージョンにパッチを適用できない場合、パッチを適用する時間が必要な場合、もしくはこの脆弱性に対する追加の保護を探している場合は、CVE-2025-29927 のテンプレートルールを有効にすることができます。仮想パッチの適用に関して、さらにサポートが必要な場合は、Fastly のセキュリティサポートチームにお問い合わせください。