Em 14 de outubro o Next.js publicou a 16.4.1 e a 15.5.28 com duas correções críticas de execução remota de código e uma de negação de serviço, e o PgBouncer 1.26.1 corrigiu um bypass de autenticação SCRAM; se você usa qualquer um dos dois, revise a sua versão hoje.
1. Next.js: a atualização fora de ciclo de 14 de outubro#
Em 14 de outubro de 2026 o Next.js publicou uma atualização de segurança fora de ciclo com duas correções adiadas da versão de setembro por atrasos em dependências de terceiros. As versões corrigidas são a 16.4.1 (linha de suporte ativo) e a 15.5.28 (linha de manutenção). Para instalá-las: npm install [email protected] ou npm install [email protected].
| Falha | Gravidade | Quem fica exposto | Identificador |
|---|---|---|---|
| Execução remota de código sem autenticação em funções use cache que devolvem arrays tipados | Crítica | App Router com Cache Components; sem solução alternativa | GHSA-673q-mjm6-r5xr |
| Execução remota de código na API de otimização de imagens com SVG | Crítica | Next.js em Linux com glibc; solução alternativa: sharp 0.35.5 ou superior | CVE-2026-96889 |
| Negação de serviço no App Router com Server Actions | Alta | Apps com pelo menos uma Server Action; o Pages Router não é afetado | GHSA-p3m5-59mp-jv5r |
Para a execução remota de código em use cache, o Next.js indica que não há solução alternativa e que é preciso atualizar mesmo que a sua aplicação não tenha funções parecidas. Para a de imagens com SVG, a solução alternativa é usar sharp 0.35.5 ou superior; atualizar o Next.js faz o gerenciador de pacotes instalar uma versão corrigida.
Documentação: Next.js: atualização de segurança de 14 de outubro de 2026 (inglês) ↗
2. Next.js: a versão de setembro#
Em 30 de setembro de 2026 o Next.js já havia publicado correções nas versões 16.3.8 e 15.5.27. As falhas são em sua maioria de gravidade média e dependem de configurações concretas. A tabela indica quem cada uma afeta.
| Falha | Gravidade | Quem fica exposto |
|---|---|---|
| SSRF na otimização de imagens (CVE-2026-94483) | Alta | Apps com images.remotePatterns configurado |
| Envenenamento de cache SSG/ISR no Pages Router auto-hospedado (CVE-2026-94543) | Média | Auto-hospedado; a Vercel não é afetada |
| Envenenamento de cache com página curinga na raiz (CVE-2026-94484) | Média | Páginas SSG/ISR com rota curinga na raiz |
| Vazamento em rotas de imagens de metadados (CVE-2026-94485) | Média | App Router compilado com webpack; o Turbopack não é afetado |
| Vazamento entre valores de parâmetros raiz em use cache aninhado (GHSA-h694-7cp9-m8p3) | Média | Com Cache Components |
| Conteúdo do Draft Mode vazado de use cache (CVE-2026-94544) | Média | Com Cache Components e prévias em Draft Mode |
| Vazamento no endpoint MCP do servidor de desenvolvimento (CVE-2026-94486) | Baixa | Só com next dev |
Quem estiver na 16.3.8 tem as correções de setembro mas não as de outubro, que só foram publicadas na 16.4.1 e na 15.5.28.
Documentação: Next.js: versão de segurança de setembro de 2026 (inglês) ↗
3. PgBouncer 1.26.1#
O PgBouncer 1.26.1 foi publicado em 14 de outubro de 2026 e corrige três vulnerabilidades. A mais séria é um bypass de autenticação: um cliente que conhece a senha de um usuário do arquivo de autenticação pode entrar como outro usuário SCRAM, incluindo administradores. O registro de mudanças não indica pontuação de gravidade.
| CVE | Tipo | Versões afetadas | Condição |
|---|---|---|---|
| CVE-2026-107350 | Bypass de autenticação | 1.17.0 a 1.26.0 | Ambos os usuários usam SCRAM; o atacante conhece a senha de um usuário do auth_file |
| CVE-2026-107349 | Negação de serviço | 1.20.0 a 1.26.0 | ignore_startup_parameters não vazio e sem options |
| CVE-2026-107348 | Negação de serviço | 1.21.0 a 1.26.0 | max_packet_size de 2147483649 ou mais; o padrão não é afetado |
Se você usa o PgBouncer com SCRAM para vários usuários, priorize esta atualização. A versão 1.26.1 é a mais recente segundo o registro de mudanças.
Documentação: PgBouncer: registro de mudanças (inglês) ↗ · PostgreSQL: notícias (inglês) ↗
4. Verifique as suas versões#
O script compara uma versão do Next.js com as versões corrigidas dos avisos e uma do PgBouncer com as faixas afetadas que o seu registro de mudanças publica. Uma linha do Next.js sem versão corrigida nos avisos (por exemplo a 16.2) é tratada como «atualize para a 16.4.1», porque os avisos não listam uma versão corrigida para ela.
import re
L = {"ok": "em dia", "next": "atualize para %s", "newer": "linha mais nova que as corrigidas: revise os avisos"}
def parse(version):
return tuple(int(n) for n in re.findall(r"\d+", version)[:3])
def next_action(version):
major, minor, patch = parse(version)
if (major, minor) > (16, 4):
return L["newer"]
if (major, minor) == (16, 4):
return L["ok"] if patch >= 1 else L["next"] % "16.4.1"
if (major, minor) == (15, 5):
return L["ok"] if patch >= 28 else L["next"] % "15.5.28"
return L["next"] % "16.4.1" # linhas sem versão corrigida nos avisos
PGBOUNCER = { # CVE: (primeira versão afetada, última afetada)
"CVE-2026-107350": ((1, 17, 0), (1, 26, 0)),
"CVE-2026-107349": ((1, 20, 0), (1, 26, 0)),
"CVE-2026-107348": ((1, 21, 0), (1, 26, 0)),
}
def pgbouncer_cves(version):
v = parse(version)
return [cve for cve, (first, last) in PGBOUNCER.items() if first <= v <= last]
for v in ["16.2.12", "16.3.8", "16.4.0", "16.4.1", "15.5.27", "15.5.28"]:
print("next", v, "->", next_action(v))
for v in ["1.19.1", "1.22.0", "1.26.0", "1.26.1"]:
print("pgbouncer", v, "->", pgbouncer_cves(v))5. O que fazer hoje#
- Revise a versão do Next.js em cada projeto com npm ls next e atualize para a 16.4.1 ou a 15.5.28.
- Se não puder atualizar de imediato e usa next/image com SVG, fixe o sharp em 0.35.5 ou superior.
- Veja se usa use cache (Cache Components) ou Server Actions: são as superfícies das falhas mais graves.
- Atualize o PgBouncer para 1.26.1, sobretudo se ele autentica vários usuários com SCRAM.
- Reconstrua e implante de novo: atualizar o package.json não basta até que a imagem ou o servidor use a nova versão.
- Anote no seu inventário quais projetos foram corrigidos e a data.
Nós aplicamos na Codifly: o site estava na 16.2.12 e o subimos para a 16.4.1 depois que os testes e a compilação passaram.
Para se aprofundarPor que seu build funciona local, mas falha no deploy
6. Mantenha seus números em dia#
As versões e os identificadores são os dos avisos publicados até 19 de outubro de 2026. Podem aparecer novas correções; revise os avisos oficiais do Next.js e do PostgreSQL com regularidade.
- Assine os avisos de segurança do Next.js e do PgBouncer.
- Automatize um alerta quando a sua versão ficar abaixo da corrigida.
- Teste em um ambiente de testes antes de promover para produção.
Fontes e escopo
Documentação consultada em 19 de outubro de 2026. Os exemplos e critérios de decisão são propostas editoriais; adapte-os ao contrato da sua aplicação e valide-os no seu ambiente de testes autorizado.