
Vulnerabilidade de aceitação de dados extrínsecos não confiáveis com dados confiáveis no Nuxt3
Repositório para configurar o ambiente da vulnerabilidade de envenenamento de cache ocorrida no nuxt3 >=3.0.0 <3.16.0
Quando há uma CDN na frente do servidor nuxt e a CDN armazena apenas o caminho (excluindo a query da URL) como chave de cache, uma requisição para /?/_payload.json é armazenada na chave de cache apenas até /. Assim, quando outro usuário envia uma requisição para /, é retornada do cache a resposta de _payload.json — e não a página normal.
Se um atacante enviar requisições para /?/_payload.json a cada ciclo de expiração do cache, isso pode provocar uma vulnerabilidade de DoS em que outros usuários não conseguem receber a página normal.
https://preo123.tistory.com/19
git clone https://github.com/jiseoung/CVE-2025-27415-PoC.git
cd CVE-2025-27415-PoC
docker-compose up --build
'/' : página usada para induzir o envenenamento de cache
Na prática, se você enviar uma requisição para http://localhost/?/_payload.json para gerar o cache do caminho '/', ao acessar http://localhost/ a resposta da página '/' não é retornada; o conteúdo de _payload.json armazenado no cache é retornado como json.
'/ex' : página que executa automaticamente o ataque de envenenamento de cache
Target Origin : caminho no qual o ataque de envenenamento de cache será executado
Neste ambiente, você deve usar o contêiner nginx nuxt-nginx no host, pois o servidor de automação do ataque foi construído com Flask em outro contêiner; enviar para localhost faria com que ele fosse interpretado como o localhost desse contêiner.
Cache Interval : intervalo (em segundos) entre as requisições. Deve ser definido como um valor ligeiramente menor que o ciclo de expiração do cache da CDN.
Neste ambiente, as requisições são armazenadas em cache por 60 segundos.