
Proof-of-concept exploit for CVE-2026-72744, an information disclosure vulnerability in Nuxt dev server's Chrome DevTools workspace endpoint. Demonstrates the flaw and verifies the fix.
このリポジトリは、Nuxt 開発サーバーの Chrome DevTools workspace エンドポイントに存在する情報漏えい脆弱性 CVE-2026-72744 の Proof of Concept (PoC) です。
脆弱な開発サーバーは、接続元がローカルかどうかを TCP peer address ではなく、
攻撃者が指定できる Host などの HTTP ヘッダーで判定します。開発サーバーが
0.0.0.0 に bind されている場合、LAN 上の未認証攻撃者は
Host: localhost を付けたリクエストにより、プロジェクトの絶対パスと永続的な
workspace UUID を取得できます。
このPoCは、Nuxt 4.5.0(脆弱版)と4.5.1(修正版)をDockerで起動し、ホスト側 から同じリクエストを送って挙動の違いを確認します。ファイルの読み書きやコード 実行は行いません。
教育目的および許可されたセキュリティ検証にのみ使用してください。第三者の環境へ 無断でリクエストを送信しないでください。
>= 4.4.7, < 4.5.1 および >= 3.21.7, < 3.21.104.5.1 / 3.21.10experimental.chromeDevtoolsProjectSettingsrootDir の絶対パスとプロジェクト固有 workspace UUID の漏えい脆弱版の isLocalDevRequest は、Host が許可リストに入り、ブラウザー由来の
クロスサイトヘッダーがなければリクエストをローカルとして扱います。
非ブラウザークライアントはこれらのヘッダーを自由に省略・指定できるため、次の
リクエストが検査を通過します。
GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1
Host: localhost
修正版は既存のヘッダー検査に加え、実際の TCP peer address が loopback
(127.0.0.0/8 または ::1)であることを要求します。
docker compose up -d --build
| URL | バージョン | 想定結果 |
|---|---|---|
http://localhost:3000 | Nuxt 4.5.0 | HTTP 200、情報漏えい |
http://localhost:3001 | Nuxt 4.5.1 | HTTP 403 |
初回ビルドでは npm パッケージを取得するため数分かかる場合があります。
python3 exploit.py -t http://localhost:3000 --expect vulnerable
期待される出力:
[!] VULNERABLE: the endpoint disclosed workspace.root and workspace.uuid.
python3 exploit.py -t http://localhost:3001 --expect fixed
期待される出力:
[+] FIXED: the non-loopback request was rejected with HTTP 403.
curl -i -H 'Host: localhost' \
http://localhost:3000/.well-known/appspecific/com.chrome.devtools.json
curl -i -H 'Host: localhost' \
http://localhost:3001/.well-known/appspecific/com.chrome.devtools.json
Docker のポート転送を経由するため、コンテナから見た接続元は loopback では ありません。これにより単一ホスト上で LAN 攻撃相当の条件を再現できます。
docker compose down -v
exploit.py は Host: localhost を指定し、Origin、Referer、
Sec-Fetch-Site を送らずに対象エンドポイントへアクセスします。HTTP 200 の
JSONに文字列の workspace.root と workspace.uuid が含まれる場合のみ、脆弱と
判定します。HTTP 403 は修正済みの期待動作です。
Nuxt 4系は 4.5.1以降、3系は 3.21.10以降へ更新してください。更新できない
場合は開発サーバーを loopback のみに bind するか、
experimental.chromeDevtoolsProjectSettings: false を設定してください。