30秒で判断
- 対応すべき人: Nuxt 3系(< 3.21.10)/ 4系(< 4.5.1)を使い、サーバーアイランド(server islands)を利用したページを公開している方
- 対応不要な人: Nuxt を使っていない / サーバーアイランドを利用していない / すでに 3.21.10・4.5.1 以降を使用中の方
- 確認コマンド:
npm ls nuxtでバージョンを確認
概要
内部の island レンダラエンドポイント(/__nuxt_island/...)は、URL に含まれるハッシュを検証する前に、攻撃者が制御するリクエスト入力をデコードしハッシュ化します。認証不要の POST /__nuxt_island/<name>_<anything>.json に大きな JSON ボディ(例: 約4.6MB / 15万キー)を送ると、リクエストが 400 で拒否される前に本文が完全に読み込まれ、パース・ハッシュ計算されるため、CPU を消費させられます。無認証で成立するサービス拒否(DoS)です。
CVSSベクトル
| 指標 | 値 |
|---|---|
| 攻撃元区分 (AV) | ネットワーク (N) |
| 攻撃条件の複雑さ (AC) | 低 (L) |
| 必要な権限 (PR) | なし (N) |
| ユーザー関与 (UI) | 不要 (N) |
| 可用性 (A) | 高 (H) |
| 基本値 | 7.5 (High) |
影響を受けるソフトウェア
| 製品 | パッケージ | 影響バージョン |
|---|---|---|
| Nuxt(3系) | nuxt (npm) | < 3.21.10 |
| Nuxt(4系) | nuxt (npm) | < 4.5.1 |
修正バージョンと回避策
- 修正:
nuxtを 3.21.10 または 4.5.1 以降へアップデート - 回避策: 更新までの間、リバースプロキシで
/__nuxt_island/へのリクエストボディサイズを制限する
関連リンク
データソース: NVD (NIST), OSV (Google), GitHub Advisory Database AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
