[緊急] Nuxtの認証バイパス脆弱性 GHSA-hxvh-4h3w-prp9 (CVE-2026-71315) を理解し、即座に対応しよう
はじめに:Nuxtにおける高深刻度な認証バイパスの危険性
日本のフロントエンドエンジニアの皆さん、こんにちは。今回はNuxtアプリケーションに影響を及ぼす、非常に深刻度の高い脆弱性「GHSA-hxvh-4h3w-prp9 (CVE-2026-71315)」について解説します。この脆弱性は、特定の条件でNuxtのルートルール、特にappMiddlewareによる認証ゲートがサイレントにバイパスされ、保護されたはずのページが未認証のユーザーに公開されてしまう可能性を秘めています。直ちに影響を理解し、適切な対策を講じることが重要です。
脆弱性の概要:なぜ認証がバイパスされるのか?
この脆弱性の根本原因は、Nuxtがルートルールをマッチングする際の内部的な大文字・小文字処理の不整合にあります。
Nuxtはデフォルトで、vue-routerの挙動に合わせてパスの大文字・小文字を区別しない(`sensitive: false`)ルーティングを行います。以前の修正(GHSA-mm7m-92g8-7m47 / CVE-2026-53721)では、ルックアップされるリクエストパスを小文字に変換してからルートルールとのマッチングを試みていました。
しかし、問題はここからです。ルートルールの**キー**(例えば `routeRules: { '/Admin/dashboard': { appMiddleware: 'auth' } }` の `/Admin/dashboard` 部分や、`pages/Admin.vue` のようなPascalCase/camelCaseのファイル名から派生するルール)は、大文字・小文字がそのまま保持されていました。結果として、ルックアップパスは小文字に変換されるのに対し、ルールキーには大文字が含まれるため、両者が決してマッチしないという状況が発生しました。
これにより、`/Admin/dashboard` や `/Dashboard/**` のような大文字を含むパスに対するルートルールは、サイレントにドロップされ、Nuxtによる保護が一切適用されないままページがレンダリングされてしまいます。
この脆弱性の最も重大な結果は、認証バイパスです。例えば、管理画面へのアクセスを制限するために `routeRules: { '/Admin/dashboard': { appMiddleware: 'auth' } }` のように `appMiddleware` を認証ゲートとして設定していたとします。この脆弱性がある場合、`/Admin/dashboard`、`/admin/dashboard`、`/ADMIN/dashboard` のいずれのパスでアクセスしても、認証ミドルウェアが適用されず、認証されていないユーザーが保護されたページ(およびそのSSRで取得されたデータ)にアクセスできてしまいます。
認証以外にも、クライアントリダイレクトミドルウェア、アプリサイドの `ssr: false` の決定、`prerender`、ペイロードハンドリングといったNuxtの他のアプリレベルのルートルールも、同様に無効化される可能性があります。
なお、サーバーサイドで発行される `headers`、`redirect`、`proxy` はNitroのケースセンシティブなルーティングによって処理されるため、この脆弱性の影響を受けません。影響を受けるのはNuxtのアプリレベルの挙動のみです。
影響を受けるバージョンと修正
Nuxt 3.x および Nuxt 4.x の以下のバージョンがこの脆弱性の影響を受けます。
具体的な影響バージョン範囲は、各メジャーバージョンの修正バージョンリリース以前の全てです。
この脆弱性は以下のバージョンで修正されています。
修正内容は、ルートルールマッチャーが、ルックアップパスと同様にコンパイルされたルールキーもケースフォールドする(小文字に変換する)ようになった点です。これにより、ルックアップパスとルールキーの正規化が対称になり、正しくマッチするようになります。`router.options.sensitive: true` を設定している場合は、大文字・小文字が両側で保持されるため、完全に一致するパスのみがマッチします。
あなたのプロジェクトへの影響確認と対策
最も推奨される対策は、Nuxtを修正済みバージョンにアップグレードすることです。
一時的な回避策 (アップグレードが難しい場合)
直ちにアップグレードが難しい場合でも、以下のいずれかの方法で脆弱性を一時的に回避できます。ただし、これらはあくまで一時的な措置であり、可能な限り早くアップグレードを実施してください。
まとめ
NuxtのGHSA-hxvh-4h3w-prp9 (CVE-2026-71315) 脆弱性は、特に認証ゲートがappMiddlewareによって設定されている場合に、深刻な認証バイパスを引き起こす可能性があります。フロントエンドエンジニアとして、この脆弱性を理解し、自身のプロジェクトが影響を受けていないかを確認し、速やかに修正済みバージョンへのアップグレード、または適切な回避策を講じることが、アプリケーションの安全性を確保するために不可欠です。
常に最新のセキュリティ情報をチェックし、依存ライブラリのアップデートを怠らないようにしましょう。