Next.js Vulnerability Allows Attackers to Trigger DoS via Cache Poisoning
2025/07/04 gbhackers — React ベースの Web フレームワークとして人気を博す Next.js において、深刻な脆弱性 CVE-2025-49826 が発見され、修正された。Vercel の報告によると、この Next.js の脆弱性はバージョン 15.1.0 以上、15.1.8 未満の範囲に存在し、キャッシュ・ポイズニングのバグを悪用する攻撃者は、影響を受けるアプリケーションにおいて、サービス拒否 (DoS) 状態を引き起こせる状況にある。

| CVE ID | Affected Versions | Severity | Impact | Fixed In |
| CVE-2025-49826 | >=15.1.0 <15.1.8 | 7.5 | DoS via cache poisoning | 15.1.8 |
技術的詳細
この脆弱性は、特定のキャッシュ・シナリオにおける、HTTP 204 レスポンスの不適切な処理に起因する。つまり、そのような条件下において、静的ページに関する 204 No Content レスポンスがキャッシュされる可能性がある。
この状態でレスポンスがキャッシュされると、そのページにアクセスする全ユーザーに対して空のレスポンスが返され、コンテンツへのアクセスが不可能となり、サービスが停止する。
この脆弱性を悪用するには、以下のすべての条件を満たす必要がある。
- アプリケーションが影響を受ける Next.js で、バージョン (>=15.1.0、<15.1.8) 実行されている。
- 対象となるルートにおいて、次回に Incremental Static Regeneration (ISR) または、スタンドアロン・モードによるキャッシュ再検証が行われる。
- 対象のルートが サーバ・サイド・レンダリング (SSR) を使用し、204 レスポンスをキャッシュするために、コンフィグされた CDN の背後で運用される。
なお、Vercel 上でホストされているユーザーに対しては、この問題の影響を及ぼさない。
この脆弱性を悪用する攻撃者は、204 レスポンスによりキャッシュ・ポイズニングを達成し、後続の全ユーザーに対して空のレスポンスを返すことで、該当する静的ページあるいは SSR ページにおいて、サービス拒否を引き起こす可能性を手にする。
この問題は CVSS スコア 7.5 と評価され、深刻度は High とされる。
修正内容と推奨対応
すでに Next.js チームは、以下の対応を行っている:
- キャッシュに対して 204 レスポンス設定すると想定される、問題のあるコード・パスを削除した。
- キャッシュへのデータ入力において、共有レスポンス・オブジェクトに依存しないようにし、コンカレント実行による競合状態を解消した。
バージョン 15.1.8 において、上記の修正がリリースされている。
バージョン 15.1.0 ~ 15.1.7 の Next.js を 、ルフホストまたはオンプレミスで使用するユーザーに強く推奨されるのは、バージョン 15.1.8 以降への速やかなアップグレードである。
それ以前のメジャーバージョンを使用している場合には、バージョンが 15.0.4 以下であることを確認すべきである。
その他の推奨事項
- Next.js を バージョン 15.1.8 以降へとアップグレードする。
- CDN の コンフィグを確認し、重要なルートに対して 204 レスポンスがキャッシュされないようにする。
- アプリケーション・ログにおいて、異常な HTTP 204 レスポンスを監視する。
Web アプリケーションを、新たな脅威から守るためには、セキュリティ・アップデートを最新状態に保つことが不可欠である。
Next.js に、キャッシュ・ポイズニングの脆弱性が発見されました。特定の条件下で 204 レスポンスがキャッシュされてしまい、ユーザーに何も表示されず、DoS 状態に陥ると、この記事は指摘しています。ご利用のチームは、ご注意ください。よろしければ、Next.js で検索も、ご参照ください。
You must be logged in to post a comment.