Brotli: falha crítica atinge Node.js, Python, .NET e mais
|

Brotli: falha crítica atinge Node.js, Python, .NET e mais

Uma falha de gravação fora dos limites (CVSS 9.2) no decodificador Brotli atinge não só o Node.js, mas também Python, .NET, Ruby, PHP, curl e o Git for Windows — qualquer software que empacote a biblioteca Brotli do Google para descomprimir conteúdo com Accept-Encoding: br. A Imperva já reportou execução remota de código contra uma aplicação Express 5 rodando Node.js 24.22.0, embora o exploit não tenha sido publicado.

O que aconteceu

A CVE-2026-111497 foi corrigida pelo Node.js em 21 de outubro de 2026, nas versões 22.23.4, 24.22.1 e 26.12.1. O problema está no decodificador: ao receber um bloco inválido, ele trata a falha como “preciso de mais dados” em vez de erro de formato, e continua anexando bytes a um buffer interno de apenas 8 bytes — o que corrompe memória do processo e pode causar queda do serviço, vazamento de memória ou execução de código, dependendo do contexto. A falha foi reportada pela OpenAI Codex Security, Khai Tran e Sylvie Mayer.

Quem é afetado

Como o bug está na biblioteca C original do Brotli, ele se propagou para qualquer binding que a reaproveita:

  • Node.js 22.x antes de 22.23.4, 24.x antes de 24.22.1 e 26.x antes de 26.12.1 — linhas fora de suporte (como 18.x e 20.x) são afetadas e não recebem correção.
  • Python — pacotes Brotli e brotlicffi antes de 1.2.1 e 1.2.1.0, usados por urllib3, requests, httpx e aiohttp para decodificar respostas br.
  • .NET — corrigido em 8.0.33, 9.0.22 e 10.0.14.
  • Ruby (gem brotli 0.9.1), PHP (extensão brotli 0.21.1) e mitmproxy (12.3.1) já têm correção.
  • curl compilado com suporte a Brotli e usado com --compressed.
  • Git for Windows, que embute libcurl: a versão 2.56.0.windows.3 ainda trazia o Brotli 1.2.0 vulnerável; a correção só chegou na 2.56.0.windows.4, lançada em 26 de outubro.
  • DuckDB, ClickHouse e Apache Arrow seguiam sem versão corrigida nos últimos levantamentos — se o seu pipeline de dados ingere Brotli de fonte externa, trate como ainda vulnerável.

Como se proteger agora

  1. Levante o que no seu ambiente empacota Brotli — não é só “atualizar o Node”: inclui runtime .NET, ambientes Python (confira com pip-audit), gems Ruby, extensões PHP e a versão do Git for Windows nas estações.
  2. Atualize o Node.js para 22.23.4, 24.22.1 ou 26.12.1 — prioridade máxima em qualquer servidor Express/Node exposto à internet, já que é onde a Imperva demonstrou RCE.
  3. Atualize Python (Brotli/brotlicffi ≥ 1.2.1), .NET, Ruby, PHP, mitmproxy e o Git for Windows (≥ 2.56.0.windows.4) nos respectivos gerenciadores de pacote.
  4. Se não puder atualizar um serviço de borda agora, rejeite ou reescreva o cabeçalho Accept-Encoding para remover br no proxy/WAF até aplicar o patch.
  5. Para DuckDB, ClickHouse, Apache Arrow e qualquer pipeline que decodifique Brotli de origem não confiável, isole a ingestão ou desative a descompressão automática até o fornecedor liberar correção.

Perguntas frequentes

Já existe exploração confirmada em produção?
Não publicamente. A Imperva relatou RCE contra uma aplicação de teste Express 5 após várias tentativas, sem publicar o exploit, e não há registro de ataques in-the-wild até o momento.

A falha já está no catálogo KEV da CISA?
Não. Diferente do PHP2Shell (CVE-2026-109618 e CVE-2026-109619), que teve prazo federal até 29/10, a CVE-2026-111497 ainda não entrou no catálogo de vulnerabilidades exploradas da CISA — mas o CVSS 9.2 da Google e a cadeia de dependências afetadas justificam tratar como urgente.

Minha aplicação precisa estar exposta à internet para ser afetada?
Não necessariamente. Qualquer processo que decodifique Brotli vindo de uma fonte não confiável — uma resposta HTTP, um arquivo, uma mensagem de fila — está em risco, mesmo sem servir tráfego público.

Atualizar o Node.js corrige todas as dependências que usam Brotli?
Não. O Node.js embute sua própria cópia; bibliotecas Python, gems Ruby, extensões PHP e o runtime .NET carregam cópias separadas e precisam de atualização própria.

Conclusão

A CVE-2026-111497 não é um problema isolado do Node.js — é uma falha na biblioteca Brotli que se multiplicou por todo o ecossistema que a reaproveita. Trate como um levantamento de inventário, não como um único patch: cheque Node.js, Python, .NET, Ruby, PHP, curl e Git for Windows nesta ordem de exposição, e mantenha o Accept-Encoding: br fora de serviços que não puderem atualizar ainda hoje.

Gostou? Compartilhe.

Posts Similares

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *