Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2025-29927 — Análise aprofundada e PoC para CVE-2025-29927, um bypass de autorização do middleware do Next.js via o cabeçalho x-middleware-subrequest. Inclui templates Nuclei e um script de varredura em massa para testes. | Kitploit
Ferramentas/GitHubGitHub/iteride/cve-2025-29927
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoPapers e PesquisaAprendizado e Educação
GitHubiteride/cve-2025-29927

CVE-2025-29927

Análise aprofundada e PoC para CVE-2025-29927, um bypass de autorização do middleware do Next.js via o cabeçalho x-middleware-subrequest. Inclui templates Nuclei e um script de varredura em massa para testes.

Ver Repositório
18há 1 anoAinda 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

CVE-2025-29927

Introdução

Neste documento é apresentada a pesquisa sobre a vulnerabilidade CVE-2025-29927, que afeta o mecanismo Middleware no framework Next.js.
Next.js é um framework open-source popular da Vercel para desenvolvimento de aplicações baseadas em React. Ele suporta renderização no servidor, geração estática e um sistema flexível de middleware, utilizado para roteamento, redirecionamentos, cabeçalhos de segurança e verificação de direitos de acesso.

Em março de 2025, foi identificada uma vulnerabilidade crítica CVE-2025-29927, relacionada ao processamento de um cabeçalho interno de sub-requisições.
A essência do problema é a possibilidade de contornar verificações de autorização em aplicações onde o controle de acesso é implementado exclusivamente no middleware, através da inserção de um valor específico no cabeçalho HTTP x-middleware-subrequest. Se a segurança depende apenas do middleware, um atacante pode obter acesso a rotas ou dados restritos.

Versões afetadas do Next.js e correções (de acordo com fontes públicas e materiais oficiais):

  • 11.1.4 ≤ versão < 12.3.5
  • 13.0.0 ≤ versão < 13.5.9
  • 14.0.0 ≤ versão < 14.2.25
  • 15.0.0 ≤ versão < 15.2.3

As correções estão disponíveis nos lançamentos 12.3.5 / 13.5.9 / 14.2.25 / 15.2.3.

Next.js é amplamente utilizado em produção; uma vulnerabilidade que atinge a camada de middleware (frequentemente usada para autenticação/autorização e políticas de segurança) representa um alto risco prático.


Objetivo do relatório

Analisar passo a passo a vulnerabilidade e documentar o ciclo completo de pesquisa:

Coleta e estruturação de materiais.
Sistematizar fontes públicas sobre a CVE-2025-29927; apresentar a essência do defeito, condições de disparo e versões/patches confirmados.

Determinação de CPE e condições de configuração.
Listar CPE/versões e descrever as configurações nas quais a vulnerabilidade é reproduzível (por exemplo, implantação self-hosted e autorização a nível de middleware).

Demonstração segura.
Preparar uma demonstração reproduzível em ambiente de teste (sem ações destrutivas), confirmando a bypass do middleware em versões vulneráveis.

Metodologias de verificação em massa.
Descrever e implementar três abordagens seguras:

  • nuclei (modo ativo com minimização de impacto),
  • nuclei (modo passivo baseado em versões/indícios indiretos),
  • script próprio em Python/Go (verificação ativa multi-thread em hosts de teste).

Essência da vulnerabilidade

middleware

  • Causa raiz. No Next.js, o cabeçalho interno x-middleware-subrequest é usado para rastrear sub-requisições internas e evitar recursão no middleware. Em branches vulneráveis, clientes externos podem inserir esse cabeçalho com um valor "esperado" — e o runtime pula a execução do middleware, passando a requisição diretamente ao manipulador da rota.

  • Papel do cabeçalho. O cabeçalho x-middleware-subrequest foi originalmente concebido como um indicador interno de que a requisição HTTP atual foi iniciada pelo próprio framework como uma sub-requisição intermediária, e não veio diretamente do usuário.
    Ele é necessário para o funcionamento correto dos mecanismos internos do Next.js: além do roteamento, essa flag ajuda a evitar recursão infinita, "marcando" cada camada intermediária invocada.
    Mas é exatamente essa lógica que criou uma brecha não intencional na segurança: um cliente que adicione esse cabeçalho por conta própria pode fazer o sistema tratar sua requisição como interna e assim contornar as verificações de autorização.

  • Evolução da lógica.

    • Nas versões mais antigas, o cabeçalho é interpretado como uma lista de valores separados por dois pontos, e o mecanismo o compara com o nome/caminho do middleware ativo.
    • Nas versões mais novas, foi adicionada proteção contra recursão infinita na forma de um contador de profundidade; ao atingir o limite (padrão 5), o middleware também é pulado. Esse mecanismo pode ser enganado se o cabeçalho for formatado "como se" a cadeia de sub-requisições já tivesse esgotado o limite.

Impacto

  • Confidencialidade e integridade. Acesso não autorizado a páginas ou APIs protegidas quando o controle de acesso é implementado apenas a nível de middleware; potencial modificação de dados através de endpoints protegidos.
  • Disponibilidade. Efeitos colaterais como cache poisoning podem levar a cache incorreto e degradação da disponibilidade em algumas configurações.

CPE e condições de configuração

CPE oficial (CPE 2.3)

Os registros atuais do NVD indicam o produto Vercel Next.js com o software alvo node.js. Para os branches vulneráveis, as seguintes configurações são aplicadas (faixas de versão definidas ao nível das configurações CPE no NVD):

CPE URIFaixa de versão vulnerável
cpe:2.3:a:vercel:next.js:*:*:*:*:*:node.js:*:*11.1.4 ≤ v < 12.3.5
cpe:2.3:a:vercel:next.js:*:*:*:*:*:node.js:*:*13.0.0 ≤ v < 13.5.9
cpe:2.3:a:vercel:next.js:*:*:*:*:*:node.js:*:*14.0.0 ≤ v < 14.2.25
cpe:2.3:a:vercel:next.js:*:*:*:*:*:node.js:*:*15.0.0 ≤ v < 15.2.3

Nota: na descrição da CVE também é indicado que, em geral, "a partir de 11.1.4 até 12.3.5 / 13.5.9 / 14.2.25 / 15.2.3" a vulnerabilidade é reproduzível se as condições abaixo forem atendidas.

Condições de relevância em ambiente de produção

  • O controle de acesso (autenticação/autorização) é implementado no middleware e não é duplicado nos manipuladores/backend.
  • Implantação self-hosted (por exemplo, next start, compilação com output: 'standalone') ou qualquer ambiente onde o middleware é executado em requisições de entrada sem filtragem perimetral de cabeçalhos internos.
  • Ausência de mecanismos externos que descartem requisições de usuário com x-middleware-subrequest (por exemplo, regras de WAF).

Mecanismo interno do x-middleware-subrequest

Para evitar recursão infinita do código intermediário, o runtime forma e lê o cabeçalho interno:

  1. O valor do cabeçalho é interpretado como uma string com elementos separados por dois pontos : — obtendo um array de "sub-requisições".
  2. Em seguida, o runtime verifica:
    • se o nome/caminho do middleware atual aparece nesse array (em branches antigos isso levava à omissão imediata via NextResponse.next()),
    • ou se a profundidade máxima de recursão foi atingida (em branches novos é aplicado um limite, padrão 5), e então o middleware também é pulado.
  3. Para proteção contra falsificação, nos patches foi adicionado um identificador de sub-requisição separado (x-middleware-subrequest-id), vinculado à sessão atual do processo; se não coincidir, o x-middleware-subrequest de entrada é limpo no lado do servidor.

Método de exploração

O atacante envia uma requisição HTTP para a aplicação Next.js alvo, adicionando o cabeçalho interno x-middleware-subrequest.
No valor, especifica o caminho para o arquivo de middleware — por exemplo pages/_middleware, middleware ou src/middleware.
O valor necessário depende da versão do Next.js e da estrutura do projeto.

Quando essa requisição chega à aplicação, a lógica interna do framework a interpreta como uma sub-requisição interna e assume que a camada intermediária já foi executada.
Como resultado, as verificações de autenticação e autorização que normalmente ocorrem no middleware são efetivamente ignoradas.


PoC / Exploit

Importante: este material é fornecido exclusivamente para verificação do patch e modelagem de risco em ambiente de teste fechado.
Qualquer verificação em infraestrutura de produção só é possível com autorização do proprietário dos recursos.

Princípio geral

Baixar ferramenta