Samuel Arendt

Next.js 16.4.5 e 15.5.29 corrigem cache que pode vazar dados entre clientes

Em 3 de novembro de 2026, o time do Next.js publicou as versões 16.4.5 (Active LTS) e 15.5.29 (Maintenance LTS) com correções para sete vulnerabilidades. Uma é classificada como alta e seis como médias. Quatro delas fazem o cache entregar a uma pessoa um conteúdo gerado para outra: outro cliente, outro idioma ou outro usuário. O aviso prévio, de 27 de outubro, falava em sete falhas médias; a classificação alta apareceu só na publicação final.

Quatro falhas no cache e três fora dele

A falha alta (GHSA-mfr8-8qww-v76h) atinge aplicações com Cache Components ligado quando a mesma função use cache é chamada diretamente e também de dentro de unstable_cache, e essa função lê um parâmetro de rota raiz, como o identificador de um cliente. Durante o preenchimento do cache, uma chamada concorrente pode receber o resultado de outra requisição sem conferir esse parâmetro. O resultado fica guardado e continua sendo servido até a entrada ser revalidada ou descartada. Se o parâmetro separa clientes numa aplicação multi-inquilino (vários clientes no mesmo sistema), o resultado pode conter dados de outro cliente.

As outras três falhas de cache são médias:

  • funções use cache aninhadas podem servir conteúdo gerado para um valor de parâmetro raiz (cliente, site ou idioma) a quem pediu outro (GHSA-vc7v-qv4w-wrv8);
  • argumentos binários diferentes passados a uma função use cache podem gerar a mesma identidade de cache, o que permite receber o resultado de outro usuário ou fazer o próprio resultado ser entregue a outra pessoa (GHSA-rhh4-g77r-r9qj);
  • em aplicações auto-hospedadas com next start, Cache Components ligado e Partial Prefetching desligado ou não configurado, uma requisição sem login pode contaminar a estrutura de página compartilhada e causar conteúdo errado ou 404 persistente em outras URLs. Essa falha depende de um formato de rota específico, descrito no anúncio.

Fora do cache, a release corrige:

  • em aplicações auto-hospedadas, uma resposta obtida por fetch e devolvida sem alteração pode chegar ao cliente errado quando há um proxy reverso HTTP/1.1 que enfileira requisições na mesma conexão com o backend (GHSA-pc58-hwjq-p385);
  • rotas Edge que definem cookies com NextResponse.cookies.set() expõem o valor do cookie num cabeçalho interno legível por JavaScript da mesma origem, mesmo com HttpOnly. O impacto exige que já exista JavaScript do atacante rodando no site (GHSA-f3mh-rxg3-f5g2);
  • uma imagem de origem permitida pode passar como AVIF e driblar images.dangerouslyAllowSVG: false, chegando a um decodificador de SVG que a aplicação quis excluir (GHSA-7qx7-33qx-rqx2).

Quem precisa olhar primeiro

Pelo texto do anúncio, as falhas de cache só valem para quem usa Cache Components e a diretiva use cache. O risco concreto aparece quando o cache separa dados por cliente, idioma ou usuário: SaaS com vários clientes na mesma aplicação, sites multi-idioma ou multimarca servidos pelo mesmo projeto e áreas logadas que guardam respostas por usuário.

Duas falhas mencionam explicitamente aplicações auto-hospedadas, ou seja, rodando com next start em servidor ou contêiner próprio. Times com proxy reverso próprio na frente do Next.js estão nesse grupo. O anúncio não diz se aplicações hospedadas na Vercel ou em outras plataformas recebem alguma proteção no provedor.

Quem ainda está no Next.js 14 ou anterior não aparece na lista de versões corrigidas. O Next.js 14 saiu de suporte em 26 de outubro de 2025, segundo o endoflife.date.

O que fazer e até quando

Atualizar para 16.4.5 quem está no 16 e para 15.5.29 quem está no 15. Não há prazo formal, mas os detalhes das falhas já são públicos desde 3 de novembro. Para quem tem cache separado por cliente ou usuário, a atualização não deveria esperar a próxima janela de manutenção.

Depois da atualização, as entradas de cache gravadas antes dela continuam lá. A falha alta descreve resultados que ficam guardados até revalidação ou descarte. Minha leitura é que, onde o cache separa clientes, vale invalidar essas entradas depois do deploy, para não continuar servindo uma resposta que já foi gravada errada.

Para quem está no 15, a política de suporte do Next.js estendeu as correções de segurança dessa versão até 31 de janeiro de 2027. A data original era 21 de outubro de 2026. Isso dá menos de três meses para planejar a passagem para o 16. Como discuti em Uma versão suportada ainda exige uma decisão de migração, a data do fim do suporte é o limite; o trabalho de descobrir o que quebra precisa começar antes dela.

Para quem está no 14 ou anterior, não há patch nesta release. A saída é migrar.

O que ainda não está claro

O anúncio não lista as faixas de versões afetadas por falha; essa informação fica nos avisos individuais no GitHub. Também não informa se alguma das falhas foi explorada antes da correção. E a falha de contaminação da estrutura de página compartilhada aparece no anúncio sem identificador GHSA, então ainda não há um aviso próprio para consultar.

Se a sua empresa está avaliando algo parecido, me chama no LinkedIn ou no WhatsApp.

Referências

Parede de caixas postais metálicas numeradas, lado a lado, com a pintura azul desgastada e marcas de ferrugem

Foto de Yoav Hornung no Unsplash

#Operações, #Radar