オープンソースのウェブ開発フレームワークである「Next.js」に、重大な脆弱(ぜいじゃく)性が存在したことが発見されました。この脆弱性を使用すれば攻撃者が認証チェックを回避することが可能であったことが明らかになっています。

Next.js and the corrupt middleware: the authorizing artifact - zhero_web_security

https://zhero-web-sec.github.io/research-and-things/nextjs-and-the-corrupt-middleware

Critical flaw in Next.js lets hackers bypass authorization

https://www.bleepingcomputer.com/news/security/critical-flaw-in-nextjs-lets-hackers-bypass-authorization/

Next.js team fixes vuln that allows auth bypass when middleware is used, revises documentation recommending this method • DEVCLASS

https://devclass.com/2025/03/24/next-js-team-fixes-vuln-that-allows-authorization-bypass-when-middleware-is-used-hastily-revises-documentation-recommending-this-method/

Next.js and the corrupt middleware: the authorizing artifact

https://simonwillison.net/2025/Mar/23/nextjs-and-the-corrupt-middleware/

Next.jsは、フルスタックウェブアプリケーションを構築するためのReactフレームワークで、パッケージ管理ツールのnpmでは毎週900万回以上ダウンロードされるほどの人気を博しています。フロントエンドおよびフルスタックの開発者は、Reactを使用してウェブアプリを構築するためにNext.jsを使用しており、サイトやアプリの構築にNext.jsを使用している有名企業には、TikTok、Twitch、Hulu、Netflix、Uber、Nikeなどがあります。

そんなNext.jsのバージョン14.2.25およびバージョン15.2.3以前では、ミドルウェアで認証チェックが行われる場合、Next.jsアプリケーション内で認証チェックをバイパスできるという脆弱性が存在しました。これが今回報告された脆弱性の「CVE-2025-29927」です。この脆弱性により、攻撃者は重要なセキュリティチェックを通過せずに宛先パスに到達するリクエストを送信できるようになります。

CVE-2025-29927 | Next.js

https://nextjs.org/blog/cve-2025-29927



NVD - CVE-2025-29927

https://nvd.nist.gov/vuln/detail/CVE-2025-29927



Next.jsでは、ミドルウェアコンポーネントのリクエストがアプリケーションルーティングシステムに到達する前に実行され、認証・承認・ログ記録・エラー処理・ユーザーのリダイレクト・ジオブロック・レート制限の適用などを実施します。

ミドルウェアコンポーネント自身が再トリガーする無限ループを防ぐため、Next.jsはミドルウェア関数を適用するかどうかを指定する「x-middleware-subrequest」というヘッダーを採用しています。「x-middleware-subrequest」は受信リクエストの処理を担当する「runMiddleware」関数によって取得されるのですが、特定の値を持つ「x-middleware-subrequest」が検出されると、ミドルウェア実行チェーン全体がバイパスされ、リクエストが宛先に転送されてしまいます。つまり、攻撃者は正しい値を持つヘッダーを含むリクエストを手動で送信することで、保護メカニズムをバイパスすることができてしまうわけです。

「CVE-2025-29927」を発見したのは、研究者のAllam Rachid氏とAllam Yasser氏です。両氏は「ヘッダーとその値は、ルールを上書きできるユニバーサルキーとして機能します」と発言しています。

Next.jsのセキュリティ情報によると、「CVE-2025-29927」は「output: standalone」設定かつ「next start」を使用するセルフホストバージョンにのみ影響すると明記されています。VercelおよびNerlifyでホストされている、または静的エクスポートとしてデプロイされているNext.jsアプリは影響を受けません。ただし、ミドルウェアが認証や​​セキュリティチェックに使用され、アプリケーションの後半で検証が行われない環境も影響を受けます。

開発者からは「どうしてこんな脆弱性が見逃されていたんだろう?驚きです。『このヘッダーが存在するかどうかをチェックするだけで、残りのミドルウェアは無視できます』だなんて」というコメントや、「これはまさに、JavaScriptエコシステム全体がいかに未熟であるかを示しており、Vercelの誇大宣伝と陶酔(とうすい)がその不器用さに拍車をかけている理由でもあります」という指摘もあります。

なお、「CVE-2025-29927」に対処するため、Vercelは2025年3月18日にNext.jsの修正バージョンとして15.2.3をリリースしました。この修正パッチを適用できない場合、「x-middleware-subrequest」を含む外部ユーザーリクエストをブロックすることが推奨されています。