Skip to main content

CVE-2025-29927: desvio de autorização no middleware do Next.js

Escrito por
blog feature code vulnerability warning

23 de março de 2025

0 minutos de leitura

The CRITICAL Next.js Vulnerability you NEED to be aware of...

CVE-2025-29927: desvio de autorização no middleware do Next.js

Na manhã de sexta-feira, 21 de março de 2025, às 9h UTC, foi publicado um aviso de segurança referente à CVE-2025-29927. O aviso apontou uma vulnerabilidade crítica, com gravidade 9,1, em aplicações Next.js amplamente utilizadas.

Versões do Next.js consideradas vulneráveis:

  • Versões 15.x do Next.js anteriores à 15.2.3

  • Versões 14.x do Next.js anteriores à 14.2.25

  • Versões 13.x do Next.js anteriores à 13.5.9

  • Todas as versões do Next.js até a versão corrigida 13.5.9 são consideradas vulneráveis, mas o comunicado de vulnerabilidade da Vercel observou que uma solução alternativa ou uma correção retroportada poderia ser lançada em breve.

Recomendamos que todos os desenvolvedores atualizem para a versão mais recente do Next.js que inclui a correção e a implantem para evitar o desvio crítico de autorização e outras formas de contornar a lógica do middleware.

Escopo do impacto da CVE-2025-29927

A Vercel anunciou que essa vulnerabilidade não afeta aplicações hospedadas na plataforma de hospedagem da Vercel.

A Netlify, outra plataforma popular de hospedagem na web, anunciou que essa vulnerabilidade não afeta aplicações implantadas na Netlify.

A Cloudflare, frequentemente usada como CDN, mas que também pode hospedar aplicações Next.js, permite que os desenvolvedores ativem uma regra de WAF gerenciada como solução alternativa opcional.

Sobre o middleware do Next.js

O conceito de middleware do Next.js foi inspirado no framework de aplicações web Express. A ideia do middleware é definir um predicado HTTP que pode modificar e redirecionar uma solicitação HTTP recebida, além de determinar como ela será processada por um servidor Node.js.

A definição de middleware do Next.js segue uma assinatura de função semelhante à do Express: recebe um objeto de solicitação HTTP (NextRequest) e retorna um NextResponse para forçar um comportamento específico, como retornar uma resposta HTTP 401 Unauthorized, redirecionar a solicitação ou permitir que o processamento continue por meio da diretiva NextResponse.next().

    export function middleware(req: NextRequest) {
      const token = req.cookies.get("auth-token")?.value;

      // Define protected routes
      const protectedRoutes = ["/admin"];

      if (protectedRoutes.some((route) => req.nextUrl.pathname.startsWith(route))) {
if (!token) {
  // Redirect to login page if not authorized
  const loginUrl = new URL("/login", req.nextUrl.origin);
  return NextResponse.redirect(loginUrl);
}
      }

      // Allow request to proceed
      return NextResponse.next();
    }

Como mencionado na documentação oficial do Next.js, os desenvolvedores costumam usar middleware para tomar decisões de autenticação e autorização, como validar um cookie ou JWT na solicitação antes de permitir o acesso a rotas restritas e protegidas.

Documentação do Next.js para casos de uso de middleware

Desvio de autorização no Next.js

Os pesquisadores de segurança Allam Rachid e Allam Yasser, que investigaram e relataram essa vulnerabilidade (assim como vulnerabilidades anteriores do Next.js), demonstraram como clientes externos podem contornar a lógica do middleware ao enviar solicitações a rotas protegidas pelo Next.js por meio dele.

Para contornar o middleware, os clientes precisam incluir o seguinte cabeçalho HTTP nas solicitações:

    x-middleware-subrequest: middleware

A lógica do Next.js processa o cabeçalho HTTP x-middleware-subrequest para decidir como e quando permitir que as solicitações prossigam sem passar pelo middleware, evitando loops infinitos. No entanto, essa lógica apresenta falhas nas versões vulneráveis do Next.js mencionadas acima e permite que qualquer solicitação recebida por um servidor Next.js contorne o middleware se o cabeçalho HTTP x-middleware-subrequest estiver presente com um valor específico.

Observação para reproduzir o problema: o valor exato do cabeçalho HTTP varia de acordo com a versão do Next.js.

Fui afetado pela CVE-2025-29927, o desvio de autorização do Next.js?

Os desenvolvedores que usam o Snyk Open Source para detectar vulnerabilidades em dependências no IDE, no Git SCM, no CI ou no fluxo de monitoramento da Snyk receberão um alerta sobre a CVE-2025-29927, como mostra este repositório do GitHub importado para projetos da Snyk:

Painel de segurança mostrando o projeto vulnerable-nextjs-14-CVE-2025-29927 com um problema crítico no package.json.

Os detalhes da vulnerabilidade do Next.js na Snyk indicam um caminho de atualização (por exemplo, next@14.2.25, no meu caso). Além disso, os usuários da Snyk podem corrigir rapidamente a vulnerabilidade com um clique (ou optar por automatizar todo o processo):

Detalhes da vulnerabilidade CVE-2025-29927 no Next.js identificada pela Snyk, com instruções para corrigi-la

É provável que você esteja usando uma versão afetada e vulnerável ao desvio de autorização no Next.js se:

  • Você estiver usando versões do Next.js da 11.1.4 à 13.5.6

  • Você estiver hospedando por conta própria versões vulneráveis do Next.js (14.x < 14.2.25 ou 15.x < 15.2.3)

Como corrigir a CVE-2025-29927 e soluções alternativas

Há correções e medidas de mitigação disponíveis, dependendo da versão do Next.js que você usa e de onde faz a implantação:

  • Atualize para uma versão corrigida do Next.js usando a versão mais recente dos ramos 14.x ou 15.x.

  • Aplique uma regra de firewall que impeça solicitações HTTP externas com o cabeçalho x-middleware-subrequest de chegar à infraestrutura interna da aplicação Next.js.

  • As implantações na Vercel e na Netlify não são afetadas, conforme informado por essas plataformas de hospedagem em nuvem.

Conheça o cenário atual da segurança de código aberto

Entenda as tendências e abordagens atuais para proteger softwares de código aberto e a cadeia de suprimentos.

Leia mais

illustration hero ai
Blog

PHP corrige duas vulnerabilidades críticas de RCE sem autenticação (CVE-2026-109618, CVE-2026-109619): [atualizado para CVE-2026-115560]

Duas falhas críticas no ciclo de requisições do PHP podem permitir execução remota de código sem autenticação. Atualize para uma versão corrigida ou instale um backport do fornecedor para versões mais antigas.

blog feature ai lilac
Blog

Transforme seu backlog de vulnerabilidades em pull requests com remediação agentiva

O Evo Remediation Agent está em Open Preview e traz a resolução automatizada de dependências para o Evo Agentic AppSec. Agora, as equipes de AppSec podem executar campanhas contínuas de remediação

AI Background min crop
Blog

A IA está acionando todos os riscos que você aceitou: sete insights do painel de segurança de IA sem filtros

A IA está tornando os ataques mais baratos e rápidos, expondo riscos que as organizações já carregam. Quatro líderes de segurança explicam por que a defesa na velocidade das máquinas e a correção mais rápida são essenciais.