脆弱性・CVE速報深刻度: 中

Nuxt に Medium の脆弱性 4 件(CVE-2026-119198〜119201): 開発サーバーから秘密情報やファイルが読め、ドットセグメントで server/middleware を回避。nuxt 4.6.3 で修正

目次(5)

CVE-2026-119198

CVE-2026-119199

CVE-2026-119200

CVE-2026-119201

Web アプリのフレームワーク Nuxt に、2026 年 10 月 30 日(UTC)に 4 件の脆弱性が公開されました。いずれも GitHub Advisory では Medium です。3 件は開発用サーバー(nuxt dev)、1 件は server/middleware などのパス判定に関わります。CISA の KEV には載っていません。EPSS は 0.21〜0.35% です(10/30 時点)。修正版の nuxt 4.6.3 は 10/27 に公開されています。

4 件の内容

CVE対象内容CVSS v3.1
CVE-2026-119198@nuxt/vite-builder 4.6.0〜4.6.2開発サーバーの HMR ソケット経由で、絶対パスを指定して任意のファイルを読める5.9
CVE-2026-119199@nuxt/vite-builder 3.0.0 以上 4.6.3 未満開発用の Nitro バンドルが取得でき、非公開の runtimeConfig の値が漏れる5.9
CVE-2026-119200nuxt/@nuxt/nitro-server 4.6.0〜4.6.2/%2e/admin のようなパスで server/middleware やルートルールを回避して、ページを表示できる6.5
CVE-2026-119201@nuxt/vite-builder 4.6.0〜4.6.2自動生成される開発用 appSecret が取得でき、セッション Cookie を偽造できる4.8

開発サーバーの 3 件(119198・119199・119201)

  • 共通の条件は、開発サーバーに直接 HTTP でつなげることです。nuxt dev は既定では localhost だけで待ち受けるため、主な影響は --host、公開したコンテナのポート、トンネルなどでネットワークに出してしまった場合です。別サイトの Web ページがブラウザ経由で読むことはできないと、勧告は述べています。本番ビルドは影響を受けません。
  • CVE-2026-119198: 勧告によると、HMR ソケットに送るエラー通知の末尾に絶対パスを付けると、サーバーがそのファイルを読んでエラー報告に載せます。SSH 鍵、.env、クラウドの認証情報など、開発プロセスが読めるファイルが対象です。Vite 側のファイル許可リストを通らない経路です。
  • CVE-2026-119199: .nuxt/dev/index.mjs が Vite 経由で取得でき、nuxt.config に書いた非公開の runtimeConfig(.env から読んだ値を含む)が入っています。Nuxt 3 は更新終了のため修正されません。Nitro 3 の構成は影響を受けません。
  • CVE-2026-119201: appSecret を設定していないと、.nuxt/app-secret に開発用の秘密が作られ、取得できます。useSession の既定のパスワードも導けるため、その開発サーバーが受け付けるセッション Cookie を偽造できます。

パスの判定を回避する 1 件(119200)

  • 4.6.0 以降、Nuxt はページを表示する前に . と ..(%2e の形も含む)を解決しますが、Nitro のルーティング、ルートルール、server/middleware は解決前のパスを見ます。そのため /admin は 401 でも、/%2e/admin は middleware を通らずに admin.vue が表示されます。
  • 認証なしで、パスで判定している middleware、redirect・headers のルートルール(CSP などのヘッダーも付かない)を回避できます。
  • 影響しないもの: server/api と server/routes の API ハンドラー、definePageMeta と appMiddleware、Nuxt 3.x と 4.0.0〜4.5.x(この形のリクエストは 404)。
  • ブラウザは送る前にドットセグメントを解決するため、パスをそのまま送れるクライアントが必要です。

対応

  1. nuxt を 4.6.3 以降に更新します(@nuxt/vite-builder も 4.6.3 に上がります)。
  2. 更新できない場合、開発サーバーを信頼できないネットワークに出しません(--host、--tunnel、ポートの公開を避ける)。NUXT_APP_SECRET に 32 文字以上のランダムな値を設定します。
  3. 開発サーバーが外から届く状態で古い版を動かしていた場合は、そのマシンで読めるファイルが漏れた可能性があるとして、SSH 鍵や .env の秘密を入れ替えます。.nuxt/app-secret は削除すると次回起動時に再生成されます。
  4. 119200 の暫定策は、他の middleware より前に動く server/middleware/0.dot-segments.ts で . や .. を含むパスを 404 にすることです。パスを正規化するリバースプロキシや CDN も同じ効果があります。

未確認の点

  • NVD の記載は確認できていません(公開直後)。
  • 悪用の報告は見つかっていません(KEV 掲載なし、EPSS は低い水準)。
  • 119199 は 3.0.0 以降が範囲ですが、Nuxt 3 には修正が出ません。使い続ける場合は、開発サーバーを外に出さない対応が必要です。

この記事について

出典

この記事を共有