概要
Nuxt の experimental.componentIslands が有効な場合(Nuxt 4 ではデフォルト)、pages/ 配下の .server.vue ファイルは page_<routeName> というキーで server island として自動登録され、/__nuxt_island/:name エンドポイント経由で SSR レンダリングされます。
この修正以前は、該当エンドポイント経由のリクエストが Vue Router を初期化せずに SSR レンダラーでページコンポーネントを直接レンダリングしていました。そのため、definePageMeta({ middleware }) で宣言したルートミドルウェア(認証チェックなど)が実行されませんでした。
認証ミドルウェアを definePageMeta で設定している .server.vue ページは、/__nuxt_island/page_* 経由で保護をバイパスされる可能性があります。
CVSSベクトル
| 項目 | 値 |
|---|---|
| CVSSスコア | 5.3(CVSS v4.0 推定) |
| 深刻度 | Medium |
| 攻撃元区分 | ネットワーク |
| 攻撃条件の複雑さ | 低 |
| 必要な特権 | 不要 |
| CWE | CWE-862(認証の欠如) |
影響を受けるソフトウェア
| 製品 | ベンダー | 影響バージョン |
|---|---|---|
| nuxt | Nuxt Team | v3.21.5 以前、v4.4.5 以前 |
| @nuxt/nitro-server | Nuxt Team | 同上 |
修正バージョンと回避策
- 修正バージョン: nuxt v3.21.6 / v4.4.6 以降
- 回避策:
.server.vueページに認証ミドルウェアのみで保護している場合は、サーバーサイドのルートハンドラーレベルでも追加の認証チェックを実装する
関連リンク
データソース: OSV (Google), GitHub Advisory Database AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
