Categorias do Site

Vulnerabilidade no middleware do Next.js

Vulnerabilidade crítica no Next.js permite burlar segurança. Atualize para a versão corrigida e proteja suas rotas.

Imagem abstrata com fundo em gradientes de rosa e roxo e logo preto com letra 'N' em branco no centro.

Resumo: Uma vulnerabilidade crítica de autenticação no Next.js (CVE-2025-29927) permite que invasores ignorem verificações de middleware ao falsificar o cabeçalho x-middleware-subrequest. Afeta versões de 11.1.4 até início da 15.x. Hospedagens gerenciadas, como Vercel, estão seguras, mas apps autohospedados que dependem de middleware para controle de acesso estão em risco. Atualize para uma versão corrigida (13.5.6, 14.2.24, 15.2.2+) ou adicione verificações de autenticação diretamente nas rotas protegidas se não puder atualizar ainda.


Vulnerabilidade no Middleware do Next.js

O Next.js esteve recentemente no centro de uma grande controvérsia de desenvolvimento web devido a uma vulnerabilidade crítica que permite que usuários não autenticados ignorem seus mecanismos de autorização. Esta vulnerabilidade foi atribuída à referência CVE-2025-29927 e possui uma pontuação CVSS 3.1 de 9.1.

A vulnerabilidade afeta todas as versões do Next.js da 11.1.4 até (mas não incluindo) as versões corrigidas: 13.5.6, 14.2.24 e 15.2.2.

O que é esta vulnerabilidade?

Descoberta por dois pesquisadores de segurança, zhero e inzo, ao analisar o código-fonte do Next.js, essa vulnerabilidade permite que invasores ignorem verificações de segurança manipulando um cabeçalho HTTP interno chamado x-middleware-subrequest. O middleware geralmente é onde são realizadas essas verificações para garantir que os usuários possam acessar certas páginas e redirecioná-los com base em seu papel.

Por exemplo, ao criar um aplicativo SaaS, você normalmente verificaria no middleware se um usuário é um cliente pagante antes de permitir o acesso a recursos pagos ou redirecioná-lo para a página de preços caso não seja:

// middleware.js

import { NextResponse } from 'next/server';

// Funções auxiliares
async function isValidSession(sessionToken) {
  …
}

async function isPaidUser(sessionToken) {
  …
}

export async function middleware(request) {

  const { pathname } = request.nextUrl;

  // Caminhos para o painel de controle e página de preços
  const dashboardPath = '/dashboard';
  const pricingPath = '/pricing';

  // Verifique se o usuário está tentando acessar o painel ou qualquer área de recursos pagos
  if (path.startsWith(dashboardPath) || path.startsWith('/paid-features')) {
    // Obtenha o cookie da sessão
    const session = request.cookies.get('session')?.value;

    // Se a sessão não for válida, redirecione para login
    if (!session || !(await isValidSession(session))) {
      return NextResponse.redirect(new URL('/login', request.url));
    }

    // Verifique se o usuário é um usuário pagante
    if (!(await isPaidUser(session))) {
      // Se não for um usuário pagante, redirecione para a página de preços
      return NextResponse.redirect(new URL(pricingPath, request.url));
    }

    // Se o usuário tiver uma sessão válida e for um usuário pagante, permita o acesso
    return NextResponse.next();
  }

  // Para outros caminhos, continue com a solicitação
  return NextResponse.next();
}

Esta vulnerabilidade de middleware dá aos invasores uma maneira de ignorar essas verificações e acessar rotas protegidas em seu aplicativo, basicamente permitindo que usem recursos pagos sem pagar.

Como a vulnerabilidade funciona

A vulnerabilidade gira em torno do cabeçalho x-middleware-subrequest, que é destinado a prevenir recursão infinita de middleware. Ao adicionar manualmente este cabeçalho com o valor correto, um invasor pode enganar o Next.js fazendo-o pensar que o middleware já foi executado cinco vezes, quando na verdade não foi executado nenhuma vez.

Como corrigir e evitar a vulnerabilidade

Atualize para a versão mais recente do Next.js (v15). Se não puder atualizar, adicione verificações de segurança extras diretamente dentro das rotas protegidas. Por exemplo, em uma página de administração, faça:

import { getServerSession } from 'next-auth/next';
import { authOptions } from '@/app/api/auth/[...nextauth]/route';
import { redirect } from 'next/navigation';

export default async function DashboardPage() {

  const session = await getServerSession(authOptions);

  // Verificação da sessão
  if (!session) {
    redirect('/api/auth/signin');
  }

  // Verificação de integridade da sessão
  const isSessionValid = verifySessionIntegrity(session);
  if (!isSessionValid) {
    redirect('/api/auth/signout?error=session-integrity');
  }

  return (
     …
      );
}

// Função auxiliar
async function verifySessionIntegrity(session) {
  // Verifique sinais de adulteração da sessão
  if (!session.user?.email || !session.user?.id) return false;

  // Compare com o registro do banco de dados para consistência
  const userRecord = await getUserFromDb(session.user.id);
  if (!userRecord) return false;

  return true;
}

A vulnerabilidade é séria para aplicativos que expõem dados sensíveis, como relatórios internos ou documentos confidenciais, que não estão estritamente vinculados a uma conta de usuário.

  • Vulnerabilidade no middleware do Next.js

    Vulnerabilidade crítica no Next.js permite burlar segurança. Atualize para a versão corrigida e proteja suas rotas.

    Vulnerabilidade crítica no Next.js permite burlar segurança. Atualize para a versão corrigida e proteja suas rotas.

    Ler notícia completa
    Imagem abstrata com fundo em gradientes de rosa e roxo e logo preto com letra 'N' em branco no centro.
  • Design de Conteúdo é Essencial no UX

    Design de conteúdo guia usuários e melhora UX, integrando pesquisa e dados para experiências digitais claras e relevantes.

    Design de conteúdo guia usuários e melhora UX, integrando pesquisa e dados para experiências digitais claras e relevantes.

    Ler notícia completa
    Ícone de livros roxos sobre fundo bege com padrões abstratos de fumaça em tons de marrom e dourado.
  • O que faz um gerente de UX?

    Descubra o papel crucial do gerente de UX nas empresas e como ele pode impactar produtos e equipes.

    Descubra o papel crucial do gerente de UX nas empresas e como ele pode impactar produtos e equipes.

    Ler notícia completa
    Ícone de usuário roxo com engrenagem sobre fundo holográfico iridescente.
  • 20+ Templates Gratuitos de Brochura InDesign 2025

    Está procurando uma maneira rápida de criar brochuras para promover seu negócio, serviços ou produtos? Conheça estes templates gratuitos para Adobe InDesign! Com esses modelos, você não precisa criar do zero. Basta preencher os campos em branco e personalizar o design. A facilidade de uso torna esses templates a solução perfeita para atrair um público […]

    Descubra mais de 20 templates gratuitos de brochura para InDesign em 2025. Ideal para criativos promoverem negócios e serviços.

    Ler notícia completa
    Layout de várias páginas de uma revista de design de interiores mostradas sobre um fundo de mármore, com o ícone do Adobe InDesign no canto.
  • OpenAI Codex: Revolução ou Risco para Desenvolvedores?

    Codex da OpenAI chegou oficialmente, prometendo transformar a forma como escrevemos código. O Codex da OpenAI é um avanço audacioso no desenvolvimento de software assistido por inteligência artificial. Para desenvolvedores, é como ter um copiloto capaz de escrever código, depurar problemas e até gerar pull requests. No entanto, embora o Codex pareça um sonho para […]

    OpenAI Codex promete transformar o desenvolvimento, mas apresenta desafios de segurança, ética e dependência excessiva.

    Ler notícia completa
    Interface de software com um painel central rotulado
  • Novidades do Node.js 24: Atualizações e Expectativas

    O Node.js 24 foi lançado oficialmente em 6 de maio de 2025, trazendo atualizações focadas em inovação e estabilidade a longo prazo. Ele entrará em LTS (Suporte de Longo Prazo) em outubro de 2025, tornando-se uma versão chave para adoção em ambientes de produção. Este artigo explora os principais novos recursos e orienta sobre como […]

    Node.js 24 lançado com melhorias de performance e segurança. Atualize seus projetos para aproveitar as novas funcionalidades.

    Ler notícia completa
    Logotipo verde do Node.js sobre brotos de planta crescendo na terra, simbolizando crescimento e desenvolvimento, com um fundo desfocado de luz solar.
  • Entendendo o Sobrealinhamento em IA

    O que é o sobrealinhamento? Sobrealinhamento descreve uma falha de alinhamento em interações humano-IA, ocorrendo quando sistemas de IA dependem excessivamente da expertise ou percepções do usuário sem validação independente. Isso pode reforçar suposições incorretas, gerando um ciclo prejudicial de esforço cognitivo e emocional. Como o sobrealinhamento funciona? Sistemas de IA, como GPT-4 e 4.5, […]

    Sobrealinhamento em IA: riscos, impactos psicológicos e como mitigar.

    Ler notícia completa
    Diagrama mostrando ciclo de feedback falho intitulado
  • 3 estudos de caso: quando rapidez não é o melhor

    No desenvolvimento de produtos, a velocidade é muitas vezes celebrada. Muitas empresas acreditam que quanto mais rápido lançam, mais rapidamente recebem feedback e se adaptam ao mercado. No entanto, essa pressa pode levar a problemas como dívida técnica, experiências ruins para o usuário e equipes sobrecarregadas, ameaçando a viabilidade do produto a longo prazo. Este […]

    Rapidez nem sempre é ideal no desenvolvimento de produtos. Veja 3 casos que mostram os riscos de decisões rápidas.

    Ler notícia completa
    Ícone de ampulheta com relógio sobre fundo decorativo azul e roxo que apresenta um padrão de círculos sobrepostos.
  • Como especializações podem afetar sua carreira

    Quando ferramentas de IA generativa como ChatGPT e Midjourney começaram a ganhar atenção, muitos designers ficaram nervosos. Especialmente os especialistas em UI, que sentiram a pressão. Designers que construíram suas carreiras criando interfaces perfeitas foram comparados a sistemas de IA que poderiam fazer o mesmo em segundos. O que antes parecia uma vantagem competitiva — […]

    Especializações em design podem limitar sua carreira. Descubra como expandir suas habilidades e garantir crescimento futuro.

    Ler notícia completa
    Ícones de uma figura humana roxa e uma figura humana vermelha com design de circuito, sobre fundo azul texturizado com efeito aquarela.