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.

  • 10 Melhores Temas de Landing Page para WordPress 2025

    Descubra os 10 melhores temas grátis para landing pages no WordPress em 2025 e otimize suas conversões.

    Descubra os 10 melhores temas grátis para landing pages no WordPress em 2025 e otimize suas conversões.

    Ler notícia completa
    Banner colorido promovendo
  • Agentes de IA no Atendimento: Suporte 24/7 Sem Estresse

    Descubra como agentes de IA melhoram o atendimento ao cliente, oferecendo suporte contínuo e reduzindo o estresse dos funcionários.

    Descubra como agentes de IA melhoram o atendimento ao cliente, oferecendo suporte contínuo e reduzindo o estresse dos funcionários.

    Ler notícia completa
    Imagem abstrata de linhas curvas em tons de preto formando um túnel, com texto sobre inteligência artificial em serviços ao cliente.
  • Por que o Gemini falha em atender os usuários

    Gemini promete melhorias, mas falha em desempenho real, levantando questões sobre IA e design centrado no usuário.

    Gemini promete melhorias, mas falha em desempenho real, levantando questões sobre IA e design centrado no usuário.

    Ler notícia completa
    Robô com aparência humana apresenta um roteiro de inteligência artificial em um grande monitor para um público em uma sala de reunião.
  • Plataformas de execução para agentes em ascensão

    Com o avanço da IA de prompts únicos para comportamentos autônomos e persistentes, uma nova classe de infraestrutura está surgindo: runtimes para agentes. Diferente de aplicativos ou plataformas tradicionais, são ambientes de execução projetados para criar, executar e orquestrar agentes de IA capazes de autonomia, uso de ferramentas e colaboração. Existem dois tipos principais de […]

    Descubra as novas plataformas de execução para agentes de IA, suas funcionalidades e como estão transformando o desenvolvimento autônomo.

    Ler notícia completa
    Ilustração estilizada de um homem de camisa laranja e um robô com detalhes em vermelho, separados por um chip entre eles, fundo azul.
  • Melhores Presets de Animação de Texto para Premiere

    A animação de texto vai além da decoração. Ela controla o ritmo, mantém a atenção e adiciona ritmo à edição. Uma palavra bem sincronizada na tela pode fazer mais do que uma transição sofisticada. Seja você criador de conteúdo para YouTube, tutorias detalhados, promos de produtos, reels, vlogs ou sequências de títulos, uma boa tipografia […]

    Descubra os melhores presets de animação de texto para aprimorar seus vídeos no Premiere Pro e encantar seu público.

    Ler notícia completa
    Imagem de uma paisagem com um viaduto, em tons de cinza, com o texto
  • Liderança: Relações Pessoais com Lars Rieger

    Lars Rieger é chefe de produto na Digistore24 DACH, uma plataforma de revenda digital e marketing de afiliados. Ele começou sua carreira como gerente de projetos na Digistore24 e foi promovido a gerente de produto líder. Após uma passagem pela CarOnSale, ele voltou à Digistore24 em 2024. Em nossa conversa, Lars fala sobre a importância […]

    Lars Rieger fala sobre a importância das relações em gestão de produtos e transformação digital na Digistore24.

    Ler notícia completa
    Imagem promocional de Lars Rieger, identificado como Head of Product na Digistore24, com logo da LogRocket. Design gráfico em tons de azul com linhas geométricas.
  • Melhores Templates de Cartões de Visita para 2025

    No mundo digital, cartões de visita ainda são essenciais para networking profissional. Eles criam uma impressão duradoura e influenciam a imagem profissional. O design correto de cartões de visita é crucial para ser lembrado positivamente. O Adobe InDesign é a escolha preferida para criar cartões de visita, oferecendo controle preciso de layout e design. Com […]

    Explore mais de 30 templates de cartões de visita para InDesign em 2025, perfeitos para diversas indústrias e estilos.

    Ler notícia completa
    Pilha de cartões de visita em tons de roxo com logotipo branco
  • Destaque: Medindo o Imensurável com Paul Weston

    Paul Weston é GM & VP de Produto na HubSpot, liderando a visão e estratégia do Service Hub. Em sua conversa, ele fala sobre “medir o imensurável”, trazendo dados objetivos para elementos difíceis de quantificar. Ele destaca a importância de focar nas necessidades de um conjunto específico de clientes e como pensa em diferenciação de […]

    Paul Weston discute como medir o imensurável em UX, focando em dados objetivos e necessidades dos clientes.

    Ler notícia completa
    Texto alternativo: Imagem promocional de Paul Weston, GM e VP de Produto na HubSpot, com pano de fundo gráfico em tons de azul e logos da LogRocket e HubSpot.
  • Conversando sobre o uso de Spinners no UX

    Olha, Spinner, já passamos por muita coisa juntos… Eu sei que você está fazendo o seu melhor — girando sem parar, pacientemente preenchendo o vazio, corajosamente mascarando o caos do backend como um técnico de palco sobrecarregado em uma produção teatral falida. Mas ambos sabemos que isso não funciona mais. No início, você era reconfortante. […]

    Spinners enfrentam críticas no UX. Progressos e alternativas como barras de progresso ganham espaço.

    Ler notícia completa
    Gráfico de evolução de círculos de carregamento, variando de incompletos a completos em tons de cinza, sobre fundo preto.