Next.jsで認証を回避できる脆弱性(03/24 追記)

自前のサーバーの (これは間違い、すべての環境で影響があります。ただしVercelその他のPaaSではすでにパッチ適用済みです) Next.jsアプリケーションに認証を回避できる脆弱性が発見されました。

バージョン12から15まで影響があります。

Vercelからパッチのあたったバージョンが提供されているので速やかにアップデートしましょう。

公式のアナウンス↓

※ 2025/03/24追記

今回の脆弱性のポイントは2つあります。

  1. ログイン状態のチェックをミドルウェアで実行していた
  2. ミドルウェアの実行を回避する方法があった

脆弱性のあったバージョンではミドルウェアの再帰呼び出しを防ぐために x-middleware-subrequest という独自のヘッダーを使っていました。curlなどを使ってこの x-middleware-subrequest ヘッダを付与してNext.jsのサイトにアクセスすると、上記の認証を確認するミドルウェアを回避することができたため、認証が必要なページが誰でも見られる状態になっていたということです。

参考:Critical Next.js Vulnerability: How a Simple Header Bypasses Authentication (CVE-2025-29927) 🕵️

puppeteer(playwright) でevaluateを実行すると `__name is not defined` エラー
macOSでアプリケーションの切り替えがもたつく場合の解決方法