Next.js の認証バイパス脆弱性を検知・緩和する

ミドルウェアがバイパスされると、アプリケーションが通常のセキュリティルーチンを実行せず、不正アクセスが生じる可能性があります。
ミドルウェアがバイパスされると、アプリケーションが通常のセキュリティルーチンを実行せず、不正アクセスが生じる可能性があります。

エグゼクティブサマリー

  • 2025 年 3 月 21 日、 Next.js の深刻な認証バイパスの脆弱性が新たに CVE‑2025‑29927 として公開され、CVSS スコア 9.1 が割り当てられました。この脆弱性は、攻撃者がフレームワークのミドルウェア処理の欠陥を悪用して認証と認可のチェックをバイパスし、機密ルートに不正アクセスすることを可能にしてしまいます。

  • この脆弱性が悪用されると、認証が行われることなく、保護されたルートへの不正アクセスが許可される可能性があります。

  • Akamai Security Intelligence Group(SIG)は、この脆弱性に対する初期の攻撃の試行が、潜在的なサーバーを標的にしていることを確認しています。

  • このブログ記事では、Akamai の研究者が、脆弱性、悪用手法、検知戦略に関する詳細な情報を提供します。 

  • Akamai Adaptive Security Engine Rapid Rule は、Akamai App & API Protector のお客様に自動的に保護を適用します。 

CVE-2025-29927 とは?

CVE-2025‑29927 は、Next.js の認証バイパスにおける脆弱性です。Next.js は、Web サイトの読み込み時間を短縮し、SEO の価値を高めるために広く使用されているオープンソースの React フレームワークです。この脆弱性は 2025 年 3 月 21 日に公開され、9.1 CVSS という非常に深刻な評価が割り当てられました。悪用された場合、攻撃者は内部使用のみを目的としたヘッダーをスプーフィングすることで、ミドルウェアベースのセキュリティチェックを回避できてしまいます。

Next.js は、リクエストの処理中に無限ループを回避するためにヘッダーを使用します。しかし、その値はミドルウェアファイルのパスから予測可能なため、攻撃者が容易に模倣する可能性があります。 攻撃者は、HTTP リクエストに正しいヘッダー値を含めることでアプリケーションを騙し、認証と認可のチェックをスキップさせ、保護されたリソースにアクセスできるようになります

脆弱性の詳細

Next.js は、着信する HTTP リクエストがメインアプリケーションのロジックに到達する前に処理する方法としてミドルウェアを使用します。ミドルウェアは通常、認証、認可、およびセキュリティヘッダーの設定などの重要なタスクを実行します。このフレームワークは、「x‑middleware‑subrequest」と呼ばれる内部ヘッダーを使用して、これらのプロセスや内部リクエストフローを管理し、リクエスト処理中の無限再帰などの問題を防いでいます。

問題の核心は、「x‑middleware‑subrequest」ヘッダーの不適切な検証にあります。このヘッダーは内部使用のみを目的としていますが、その値は予測可能で、多くの場合、ミドルウェアファイルの場所や名前に基づくものです。その結果、 攻撃者は、このリクエストヘッダーを模倣する単純なリクエストを作成し、システムを騙し、リクエストを内部リクエストとして処理させることで、重要なチェックをバイパスします

ミドルウェアがバイパスされると、アプリケーションは通常のセキュリティルーチン(ID や役割の検証など)を実行しないため、アプリケーションの機密性の高い部分や制限された部分への不正アクセスにつながる可能性があります。この脆弱性が特に危険なのは、すべての条件が満たされると、事前認証が行われずに悪用される可能性がある点です。

CVE-2025-2927 は、Next.js の複数のバージョンに影響を与えます。攻撃方法はバージョンによって若干異なりますが、問題の核心は一貫しています。古いバージョンでは、 _middleware という値を含む、巧妙に細工されたリクエストヘッダーを悪用した攻撃ですが、新しいバージョンでは、更新されたミドルウェアファイル構造と命名規則に添って名づけられた middleware または src/middleware が悪用されます。

この脆弱性は、Next.js バージョン 14.2.25 および 15.2.3 では修正されていますが、バージョン 14.2.25 以前(14.x の場合)およびバージョン 15.2.3(15.x の場合)、バージョン 11.1.4~13.5.6 を 実行中のサーバー では、 脆弱性がすべて解消していない可能性があります

観測された攻撃トラフィック

Akamai SIG は、この脆弱性に対する初期の攻撃の試行が、潜在的なサーバーを標的にしていることを確認しています。特定されたペイロードのうち、注目すべき技術の 1 つは、 x-middleware-request ヘッダーと src/middleware:src/middleware:src/middleware:src/middleware:src/middlewareの値を使うことです。

このアプローチでは、1 つのリクエスト内で複数の内部サブリクエストをシミュレートし、Next.js の内部リダイレクトロジックをトリガーします。これは、複数の公開されている 概念実証攻撃 とよく似ています(図 1)。

This approach simulates multiple internal subrequests within a single request, triggering Next.js’s internal redirect logic — closely resembling several publicly available proof-of-concept exploits (Figure 1). Fig. 1: Examples of a common attack variant

また、旧バージョンの Next.js を標的としたその他の攻撃も観察されました。図 2 が示すのは、ペイロード pages/_middleware=を使用したバリアントです。

Figure 2 illustrates a variant that used the payload pages/_middleware=. Fig 2: Another example of a common attack variant

Akamai App & API Protector による緩和

2025 年 3 月 24 日、Akamai の脅威リサーチチームは、CVE を検出する Adaptive Security Engine Rapid Rule も展開しました(図 3)。

  • 3000958 — Next.js ミドルウェア認証バイパス(CVE-2025-2927)

On March 24, 2025, Akamai Threat Research Team also deployed an Adaptive Security Engine Rapid Rule that detects the CVE (Figure 3). Fig 3. Rapid Rule trigger as seen in Web Security Analytics

App & API Protector のお客様は、この新しいルールによって完全な保護が保証されます(図 4)。

On March 24, 2025, Akamai Threat Research Team also deployed an Adaptive Security Engine Rapid Rule for App & API Protector customers to provide them with full coverage (Figure 4). Fig. 4: Adaptive Security Engine Rapid Rule provides full coverage to App & API Protector customers

Rapid Rule のバージョン 1 では、デフォルトアクションが Alertに設定されています。攻撃の試行をブロックするには、トリガーを確認してフォールス・ポジティブ(誤検出)を排除した後で、このルールアクションを Deny に設定します。

ただし、私たちは、ミドルウェア名を値として合法的にこのヘッダーを使用しているお客様がいることを確認しています。 このため、このルールアクションを Deny に変更する際は、さらに詳しい分析を実施したり追加の条件を適用したりしないことをお勧めします

まとめ

Akamai SIG は、お客様とセキュリティコミュニティ全体のために、このような脅威の監視、報告、緩和策作成を継続します。Akamai SIG からのよりタイムリーなニュースを確認するには、Akamai の リサーチホームページ をご覧になって、 ソーシャルメディアをフォローしてください。