セキュリティ

数年前からNext.jsに存在していた重大な脆弱性によりハッカーがミドルウェアベースの認証を回避できていたことが明らかに、Vercelは3月18日に脆弱性を修正


オープンソースのウェブ開発フレームワークである「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」を含む外部ユーザーリクエストをブロックすることが推奨されています。

この記事のタイトルとURLをコピーする

・関連記事
共同編集可能で全ブラウザで動くWYSIWYGのリッチテキストエディタを簡単に作成できる「Tiptap」を使って実際に共同編集してみた - GIGAZINE

いい感じのUIをサクッと作れるReact用ライブラリ「Tremor」を使ってみた - GIGAZINE

「Webpack」より700倍高速な次世代バンドルツール「Turbopack」が登場 - GIGAZINE

月間500万PV&転送量80TBのサイトをたった4万円で維持する方法 - GIGAZINE

Lighthouseで満点を獲得したハイパーパフォーマンスのサイトのコードがGithubで公開中 - GIGAZINE

in ソフトウェア,   セキュリティ, Posted by logu_ii

You can read the machine translated English article A critical vulnerability in Next.js that….