30秒で判断
- 対応すべき人: Nuxt を利用し、
runtimeCompiler: trueを有効化しており、server island コンポーネントが props を動的コンポーネント解決(<component :is>/resolveDynamicComponent/h())に渡している開発者 - 対応不要な人:
runtimeCompilerを有効にしていない(既定は無効)、または 3.21.10 / 4.5.1 以降を利用中の開発者 - 確認方法:
nuxt.configのvue.runtimeCompiler設定と、Nuxt のバージョンを確認
概要
Nuxt の server island は /__nuxt_island/ エンドポイント経由で props を受け取ります。runtimeCompiler: true(既定は無効)が有効で、かつ server island コンポーネントが props を Vue の動的コンポーネント解決へ渡している場合、攻撃者が island の props に template キーを注入することで、Nitro プロセス上でのサーバーサイド任意コード実行(RCE)に至る可能性があります。
既定設定では runtimeCompiler は無効のため影響を受けませんが、SSRで動的テンプレートを扱う目的で有効化している場合は注意が必要です。
CVSSベクトル
| 指標 | 値 |
|---|---|
| Attack Vector | Network |
| Attack Complexity | High |
| Privileges Required | None |
| User Interaction | None |
| Scope | Unchanged |
| Confidentiality Impact | High |
| Integrity Impact | High |
| Availability Impact | High |
| CVSSスコア | 8.1 (High) |
影響を受けるソフトウェア
| 製品 | エコシステム | バージョン |
|---|---|---|
| nuxt | npm | < 3.21.10(3.x系) |
| nuxt | npm | < 4.5.1(4.x系) |
修正バージョンと回避策
Nuxt 3.21.10 および 4.5.1 で修正されています。アップデートを推奨します。回避策として、runtimeCompiler を無効化する(既定に戻す)ことや、server island の props をそのまま動的コンポーネント解決へ渡さないことが有効です。
関連リンク
データソース: NVD (NIST), GitHub Advisory Database AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
