注目★★★★★GitHub Advisory
Nuxt の島コンポーネント、v-for 暴走で メモリ枯渇可能 — 認証なしで攻撃可能
30秒で把握
- 1Nuxt 島コンポーネントの v-for 反復が暴走・認証なしで メモリ枯渇 DoS 可能
- 2count=40000000 で 130 バイト リクエストから ワーカー クラッシュ実証・即座の対応必要
- 3Nuxt 4.5.1 / 3.21.10 で修正・反復上限 100000 に制限・未更新は body-size キャップを即設定
要約
Nuxt の島 (island) / サーバーコンポーネント内で `v-for` ループが props に紐付く場合、認証なしの攻撃者が任意の大きな数値を送信してメモリを枯渇させ、サーバーをクラッシュできる脆弱性が判明した。攻撃者は島の URL ハッシュ (非秘密の要求ダイジェスト) を計算して有効な props を偽造でき、count=8000000 で約 143 MB、count=40000000 では約 130 バイトのリクエストからワーカーのメモリ枯渇を引き起こせた。修正は Nuxt 4.5.1 と 3.21.10 で配信済みで、v-for の反復回数を最大 10 万に制限した。未更新環境は島レンダリングの上流に body-size リミットを設定するか、コンポーネント内で `Math.min(count, 1000)` 等による制限が必要。
あなたへの影響
Nuxt を本番運用するチームは、島コンポーネント機能を使用している場合。
推奨:直ちに 4.5.1 または 3.21.10 への更新を確認し、未対応環境は /__nuxt_island/ への body-size キャップを nginx / Cloudflare 等のリバースプロキシで即座に設定すべき。