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.

  • 20 Mitos de Design de Rodapé e Como Corrigi-los

    Descubra como transformar o rodapé do seu site em uma ferramenta estratégica e envolvente. Desmitifique ideias ultrapassadas.

    Descubra como transformar o rodapé do seu site em uma ferramenta estratégica e envolvente. Desmitifique ideias ultrapassadas.

    Ler notícia completa
  • Perigos do BaaS e código vibe no backend

    Descubra os riscos escondidos do BaaS e código vibe no backend e como evitá-los para proteger sua aplicação.

    Descubra os riscos escondidos do BaaS e código vibe no backend e como evitá-los para proteger sua aplicação.

    Ler notícia completa
    Ícone de monitor com símbolo de interrogação e engrenagem sobre fundo de textura de mármore preto arranhado.
  • Redesign de Páginas de Suporte que Melhoraram a UX

    Transforme o suporte com redesigns inteligentes que melhoram a experiência do usuário e reduzem a necessidade de suporte ao vivo.

    Transforme o suporte com redesigns inteligentes que melhoram a experiência do usuário e reduzem a necessidade de suporte ao vivo.

    Ler notícia completa
    Ícone de janela de navegador com fones de ouvido roxos e um ponto de interrogação, sobre fundo colorido em movimento.
  • Nova identidade visual do cartão de Zurique

    A maioria dos passes de cidade parece algo que você guardaria na carteira e esqueceria. O Cartão de Zurique recebeu um tratamento oposto—graças ao Studio Marcus Kraft, agora parece uma peça de design que você realmente quer exibir. O redesign é centrado em uma forma estilizada de cartão, e é surpreendentemente versátil. Em um pôster, […]

    Cartão de Zurique ganha novo design flexível e atraente, oferecendo transporte gratuito e acesso a museus.

    Ler notícia completa
    Um folheto
  • Ferramentas de IA falham em contexto: soluções

    Atualmente, no desenvolvimento de software, muitos enfrentam um problema comum ao usarem ferramentas de IA para ajudar na codificação. Embora essas ferramentas possam sugerir soluções, frequentemente introduzem novos bugs, exigindo mais tempo de depuração. A pesquisa Stack Overflow 2025 indica que a confiança dos desenvolvedores na precisão da IA caiu para 33% devido à ineficiência […]

    Ferramentas de IA em programação falham em contexto. Descubra como contornar esse problema e otimizar seu uso.

    Ler notícia completa
    Ícone de rosto humano recortado em perfil com engrenagem e circuito integrado sobre fundo texturizado cinza, simbolizando tecnologia e inteligência.
  • Ações Photoshop para Efeitos de Esboço em 2025

    Transformar suas fotografias em esboços é uma excelente maneira de adicionar um toque artístico único ao seu trabalho. Mas como fazer isso sem desenhar manualmente cada imagem? A resposta está nas ações do Photoshop. Esta coleção de ações de Photoshop oferece várias opções para converter fotos em belos esboços. Elas simplificam o processo, garantindo que […]

    Descubra ações do Photoshop que transformam fotos em esboços artísticos de forma fácil e rápida.

    Ler notícia completa
    Desenho em azul de duas mulheres estilizadas, uma olhando de lado com expressão séria e a outra posando com um chapéu largo e um vestido justo. Logotipo do Photoshop no canto.
  • Erro ao Ignorar Pesquisa UX em Robo Advisor

    Às vezes, o sucesso do produto depende do comportamento do usuário. Nosso produto não estava quebrado, mas os usuários não estavam prontos para comprar. Nosso erro foi não entender os usuários. Criamos um robo advisor sem pesquisa de usuário, resultando em baixa adoção e zero impacto na receita. Após seis meses, implementamos um recurso de […]

    Descubra como a falta de pesquisa UX sabotou nosso projeto de robo advisor e a importância de ouvir os usuários.

    Ler notícia completa
    Ilustração estilizada de livros empilhados em tons de roxo, sobre fundo texturizado que imita papel envelhecido.
  • A transição silenciosa para Vite e seu impacto

    Este ano, Vite ultrapassou 140 milhões de downloads semanais, superando o Webpack e continuando sua tendência de crescimento. É surpreendente, considerando que Webpack foi o principal bundler para JavaScript por muito tempo. Com o Vite, os desenvolvedores agora desfrutam de tempos de construção mais rápidos e recargas automáticas instantâneas. Para entender essa mudança, vamos observar […]

    Vite é adotado em larga escala, ultrapassando Webpack com sua rapidez e simplicidade. Descubra o impacto dessa transição.

    Ler notícia completa
    Logo colorido em forma de raio sobre um fundo de folha verde com listras brancas.
  • O colapso do Stack Overflow e o impacto da IA

    A programação sempre foi um desafio complexo, e os desenvolvedores frequentemente recorrem a comunidades online, como o Stack Overflow, para encontrar soluções para problemas de desenvolvimento. No entanto, com o lançamento do ChatGPT no final de 2022, o uso do Stack Overflow começou a diminuir. Ferramentas de IA generativa passaram a oferecer respostas instantâneas para […]

    Stack Overflow em declínio com a ascensão da IA. Como a mudança afeta a programação e o futuro das comunidades de desenvolvedores.

    Ler notícia completa
    Logotipo estilizado de cor laranja sobre fundo texturizado preto que lembra uma superfície rochosa ou um muro descascado.