Next.jsに認証をバイパスできる脆弱性 直ちにアップデートを

人気なReactフレームワークのNext.jsに、認証チェックをバイパスできる脆弱性が見つかりました。
今回発見された脆弱性(CVE-2025-29927 / GHSA-f82v-jwr5-mffw)は、Next.jsのミドルウェアで認証を処理している場合に、ミドルウェアをバイパスすることで認証を回避できるというものです。
攻撃者はリクエストにx-middleware-subrequestヘッダーを含めることで、ミドルウェアによる認証を迂回して、本来アクセスできないコンテンツにアクセスできる可能性があります。
CVE-2025-29927の深刻度は「Critical(緊急)」に分類されており、CVSSスコアは9.1となっています。
この脆弱性の悪用には、特別な権限やユーザーの操作が不要で複雑性も低いため、攻撃リスクが非常に高いといえます。
影響を受けるバージョンは次のとおりです。
- Next.js v11.1.4からv13.5.6まで
- Next.js v14.0からv14.2.24まで
- Next.js v15.0からv15.2.2まで
CVE-2025-29927は、Next.js v14.2.25とv15.2.3で修正されています。
Next.js v13以下のバージョンにはパッチが提供されないため、v14.2.25以降またはv15.2.3以降へアップデートする必要があります。
何らかの理由でアップデートが難しい場合は、外部ユーザーからのx-middleware-subrequestヘッダーを含むリクエストを遮断することで、リスクを軽減できます。
また、Cloudflareは今回の脆弱性に対してWeb Application Firewall(WAF)の展開を予定しているとのことです。
正式な展開を待たずとも、どのプランでもCloudflareダッシュボードの[セキュリティ]>[WAF]>[ルールを作成]から手動でWAFを設定できます。
手動で設定する場合は、次の値を設定してください。
- フィールド:ヘッダー
- オペレーター:存在する
- 値:
x-middleware-subrequest - アクション:ブロック
また、WAFルールの式は次のとおりです。
(len(http.request.headers["x-middleware-subrequest"]) > 0)
なお、NetlifyでNext.jsを使っている場合は、この脆弱性の影響を受けないとのことです。
この脆弱性は、zhero;氏とinzo氏によって発見されました。
Next.jsでミドルウェアによる認証チェックを利用したアプリケーションを開発している場合は、直ちにアップデートするかWAFを設定することが推奨されます。
Vercelの対応に疑問の声も(3月23日10時17分追記)
Vercelは当初、今回の脆弱性を発表する記事のタイトルを「Vercel Firewall proactively protects against vulnerability with Middleware」(Vercelのファイアウォールはミドルウェアの脆弱性から積極的に保護します)としており、記事本文でも「Vercel customers are proactively protected by our Firewall」(Vercelのファイアウォールによって、顧客は積極的に保護されています)と記載していました。
現在は修正されていますが、脆弱性の開示というよりはまるで自社サービスの宣伝のようになっていたことで、一部のユーザーからは疑問の声が上がっています。

修正後の記事では「Vercel customers are not affected」(Vercelの顧客は影響を受けません)と記載されています。
しかし、Netlifyのように最初から影響を受けていなかったのか、それともファイアウォールによって保護されたため現在は影響を受けていない(ファイアウォールの展開までは影響を受けていた)という意味なのかは不明です。
脆弱性の開示までVercelチームが報告を受けてから23日、修正がコミットされてから5日も経っていましたが、開示までほかのプロバイダーと情報を共有しておらず、自社の顧客のみを保護していたことから、とくにホスティングプロバイダーの「中の人」を中心に批判の声が上がっています。
参考リンク
- Authorization Bypass in Next.js Middleware · CVE-2025-29927 · GitHub Advisory Database
- NVD - CVE-2025-29927
更新履歴
- 2025年3月22日23時46分:Netlifyでの影響について追記
記事をシェア
フォローして最新情報を入手
Googleの優先ソースに追加すると、このサイトの記事をGoogleで見つけやすくなります。また、ぜひXやRSSフィードもフォローしてください。
-1.png&w=1080&q=75)
生まれた時から、母国語よりも先にJavaScriptを使っていました。ネットの海のどこにもいなくてどこにでもいます。
Webフロントエンドプログラマーとして、TypeScriptを用いたWebアプリやブラウザー拡張機能を制作。Xのシャドウバン検知ツール「Shadowban Scanner」やリンクカード復活ツール「Restore Link Card」を公開し、国内外のメディアで紹介されました。iGEM 2023ではJapan-UnitedチームのWikiを制作してGrand Prizeの獲得に貢献。ブログではXやSNSの最新ニュース、不具合の検証と対処法、フロントエンド開発の知見を発信しています。






![Gboardの[フリック入力のみ]の設定画面の開き方を示したスクリーンショット](/_next/image/?url=%2Fapi%2Fmedia%2Ffile%2Fgboard-flick-only.png&w=3840&q=75)


![[新しいXチャットへようこそ]というテキストが画面に大きく表示されており、その下には次の3つの説明が表示されている。[エンドツーエンドの暗号化:メッセージは、端末にかかわらずエンドツーエンドで暗号化されています。][最先端のプライバシー:Xを含め、他の人がメッセージを読むことはできません。][パスコードを設定:メッセージを保護するため、4桁のパスコードを設定してください。]これらの説明の下には、[パスコードを作成]という大きなボタンが配置されている](/_next/image/?url=%2Fapi%2Fmedia%2Ffile%2Fwelcome-to-new-chat.png&w=1920&q=75)


