Next.js の脆弱性レポート(CVE-2026-44581)
調査日: 2026-05-09 ステータス: Published (GitHub Advisory: Reviewed 2026-05-06)
概要
Next.js において、リクエストヘッダーから取得された不正な CSP nonce 値が安全にサニタイズされずに HTML に反映される脆弱性が存在する。共有キャッシュの背後で、汚染されたレスポンスが後続の訪問者にスクリプト実行を許可する Stored XSS が発生する可能性がある。
基本情報
| 項目 | 内容 |
|---|---|
| CVE ID | CVE-2026-44581 |
| GHSA ID | GHSA-ffhc-5mcf-pf4q |
| CVSS v3.1 スコア | 4.7 (Moderate) |
| CVSS ベクター | CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N |
| CWE | 情報なし |
| 公開日 | 2026-05-06 |
| 最終更新日 | 2026-05-06 |
影響を受けるソフトウェア
Next.js (npm)
- ベンダー: Vercel
- 影響バージョン:
>= 13.4.0, < 15.5.16/>= 16.0.0, < 16.2.5 - 修正バージョン: 15.5.16 / 16.2.5
脆弱性の詳細
Next.js では、Content Security Policy(CSP)の nonce 値をリクエストヘッダーから取得し、レンダリングされた HTML のスクリプトタグに埋め込む機能がある。この処理において、nonce 値の形式バリデーションが不十分であったため、攻撃者が不正な形式の nonce 値を含むリクエストヘッダーを送信することで、HTML に任意のコンテンツを注入できた。共有キャッシュ(CDN)の背後に配置されている場合、攻撃者が送信した不正な nonce を含むレスポンスがキャッシュされ、後続の訪問者がそのキャッシュされたレスポンスを受け取った際にスクリプトが実行される Stored XSS が成立する。修正では不正な形式の nonce 値を拒否するバリデーションが追加された。回避策として、信頼されていないトラフィックから Content-Security-Policy リクエストヘッダーを除去する設定が有効である。
対策・推奨事項
- Next.js を 15.5.16 以降または 16.2.5 以降にアップグレードする
- 不正な形式の nonce 値を拒否するバリデーションが追加される修正が含まれている
- アップグレードが即座にできない場合、リバースプロキシやエッジで信頼されていないトラフィックからの
Content-Security-Policyリクエストヘッダーを除去する回避策を適用する - CDN を使用している場合は、レスポンスのキャッシュキーに CSP 関連のヘッダーを含めないように設定を確認する
フロントエンド影響分析
Next.js はフロントエンドフレームワークであり、このセクションは必須。
| 構成 | 影響度 | 対処要否 | 備考 |
|---|---|---|---|
| SPA(クライアントサイドのみ) | 🟢 低 | 要確認 | CSP nonce を使用し、かつ共有キャッシュの背後にある場合のみ影響(AC:H) |
| SSR(サーバーサイドレンダリング) | 🟡 中 | 要確認 | キャッシュポイズニングを介した Stored XSS だが、攻撃複雑度が高く(AC:H)ユーザー操作(UI:R)が必要 |
判定の考え方
- ブラウザのセキュリティ境界: この脆弱性は最終的にブラウザ上でスクリプトが実行される XSS であるが、攻撃の起点はサーバーサイドのヘッダー処理とキャッシュポイズニングにある。CSP nonce 自体はブラウザのセキュリティ機能であるが、その nonce 値の生成過程にサニタイズ不備があったことで、CSP を回避した XSS が可能になっている。
- 実行環境: nonce 値の処理は Next.js サーバー上でランタイムに行われ、レンダリングされた HTML がキャッシュされる。SPA(静的エクスポート)でも CSP nonce を使用している場合は影響の可能性があるが、共有キャッシュが前提条件であるため影響度は低い。SSR 環境で CDN を使用している場合がもっとも影響が大きい。
- 攻撃ベクター: 認証不要(PR:N)でネットワーク経由(AV:N)から攻撃可能だが、攻撃複雑度が高く(AC:H)、ユーザー操作(UI:R)も必要である。共有キャッシュの存在が前提であり、被害者がキャッシュされた不正なレスポンスを受け取る必要がある。スコープ変更(S:C)により、影響は元のオリジンを超えて波及する可能性がある。
- ランタイム vs ビルドタイム: この脆弱性はランタイムにおけるリクエストヘッダーの処理と HTML レンダリングの問題であり、ビルドタイムには影響しない。CDN キャッシュの汚染により、サーバーが修正されてもキャッシュがパージされるまで影響が継続する可能性がある。
参考リンク
情報ソース
| ソース | 取得状況 |
|---|---|
| NVD (NIST) | ❌ 取得不可 |
| GitHub Advisory | ✅ 取得済み |
| Web検索 | ✅ 取得済み |