Falha crítica no decodificador Brotli (CVSS 9.2) ameaça Node.js, Python e curl

Uma vulnerabilidade crítica na amplamente usada biblioteca de compressão Brotli, do Google, identificada como CVE-2026-111497, pode permitir que um atacante trave ou até execute código em servidores e clientes que processam tráfego HTTP comprimido com Brotli. A falha, revelada inicialmente pelo projeto Node.js em 21 de outubro e confirmada como muito mais ampla até 23 de outubro, recebeu pontuação CVSS v4.0 de 9.2, classificada como crítica.
O Brotli é o formato de compressão por trás da codificação de conteúdo br, usada em toda a web moderna para reduzir o tamanho de respostas e solicitações HTTP. Como vem embutida ou vinculada estaticamente em uma enorme variedade de softwares, um bug no decodificador não fica restrito a um único projeto. A empresa de segurança Aikido, que acompanhou a propagação do problema por diferentes ecossistemas de linguagens, constatou que ele afeta a biblioteca C original do Brotli (versões 1.0.3 a 1.2.0), os pacotes brotli e brotlicffi do PyPI, a cópia embutida no Node.js, além de consumidores posteriores como os clientes HTTP de Python urllib3, requests, httpx, aiohttp e Scrapy, bem como Bun, Envoy, Istio e builds de curl e libcurl que vinculam o Brotli estaticamente. Segundo a análise da Aikido, Apache e Nginx não são afetados por padrão.
O bug é uma escrita fora dos limites de memória (CWE-787) no decodificador, acionada por um fluxo de dados Brotli malformado. Como a descompressão ocorre automaticamente sempre que um cliente ou servidor anuncia suporte à codificação br, o ataque funciona nas duas direções: um cliente malicioso pode atacar um servidor que decodifica corpos de requisição, e um servidor malicioso pode atacar um cliente que aceita respostas comprimidas, sem necessidade de autenticação. A Aikido afirma que os impactos confirmados vão de vazamentos de memória e travamentos até execução arbitrária de código, embora nenhuma exploração real da variante do Node.js tenha sido observada até 22 de outubro.
Chama atenção o fato de que o bug subjacente de segurança de memória teria sido encontrado e corrigido silenciosamente no código-fonte do Brotli em fevereiro, por engenheiros da OpenAI, sem que ninguém o sinalizasse como problema de segurança na época — o que significa que a janela vulnerável existiu por cerca de oito meses antes que esta divulgação conectasse os pontos.
Já existem patches para alguns projetos afetados, mas não para todos: Node.js 22.23.4, 24.22.1 e 26.12.1; Brotli 1.2.1 (com backports para 1.0.10 e 1.1.1 em branches mais antigos); brotlicffi 1.2.1.0; Bun 1.4.4; Envoy 1.40.0, 1.39.3, 1.38.6 e 1.37.8; e Istio 1.29.9, 1.30.6 e 1.31.2. A Aikido alerta que, até 23 de outubro, scanners de vulnerabilidade padrão como pip-audit, Dependabot e Safety ainda não sinalizavam as versões afetadas dos pacotes do PyPI, o que significa que equipes que dependem apenas de varredura automática de dependências podem não receber nenhum alerta. Como somente o pacote Brotli no PyPI registra cerca de 82,8 milhões de downloads por mês, o alcance prático de instalações sem patch provavelmente é substancial.
Para equipes que não podem aplicar o patch imediatamente, a Aikido recomenda desinstalar o Brotli ou o brotlicffi onde forem dependências opcionais, e configurar servidores para rejeitar requisições com Content-Encoding: br. A empresa adverte que simplesmente remover br do cabeçalho de saída Accept-Encoding não é suficiente por si só, já que um decodificador ainda vulnerável pode ser acionado por qualquer parte que opte por enviar uma carga comprimida com Brotli, independentemente do que foi solicitado.
Publicado originalmente por Aikido Security. Leia o artigo original para mais detalhes.
Ver fonte original