Brotli vulnerável: sua aplicação também recebe dados perigosos como cliente
A revisão precisa cobrir respostas HTTP, bibliotecas Python e cópias embutidas nos runtimes, não apenas o proxy de entrada.
A CVE-2026-111497 afeta o decodificador C do Brotli e recebeu nomes como HTTP2Shell, Node2Shell e Broccoli2Shell.[2] A falha permite escrita além de um buffer ao processar um fluxo comprimido malformado, com possíveis consequências de queda, exposição de memória ou execução de código.[2] O nome mais chamativo não é um bom mapa da superfície afetada.
O que muda para quem desenvolve
O problema não depende de HTTP/2: o ponto relevante é a descompressão de conteúdo Brotli controlado por um atacante.[2] Um cliente HTTP que recebe uma resposta maliciosa também pode estar exposto.[2] Portanto, limitar a revisão aos endpoints que aceitam requisições comprimidas deixa uma parte importante da investigação de fora.
Em Python, a exposição depende da presença de um decodificador vulnerável e da configuração de bibliotecas como requests, httpx, urllib3 e aiohttp.[2] Node.js e outros produtos podem carregar cópias próprias do Brotli, sem depender exclusivamente do pacote da distribuição.[2] A análise precisa ligar dependência declarada, biblioteca carregada e caminho de execução.
A consequência prática é rever a fronteira de confiança. Uma automação que apenas consulta páginas externas não deve ser classificada como irrelevante antes de examinar o que ela descomprime.
Como aplicar
Construa um inventário por processo: runtime, versão, dependências de compressão e destinos HTTP consultados. Acrescente tarefas agendadas, integrações e coletores de conteúdo, não somente APIs públicas. Procure identificar a origem da biblioteca efetivamente utilizada em cada implantação.
Um experimento seguro é servir uma resposta Brotli válida em um ambiente controlado e observar quais clientes a descomprimem automaticamente. Compare cabeçalhos, configuração e resultado obtido. Não é necessário executar uma prova de exploração para descobrir uma rota de descompressão. O objetivo desse exercício é mapear comportamento, não declarar ausência de vulnerabilidade.
Use o resultado para escolher a atualização adequada, reconstruir os artefatos e substituir os processos afetados. A reportagem ressalta a necessidade de reconstrução de imagens e reinício após as atualizações.[2] Registre a versão novamente na implantação final, porque atualizar um arquivo de dependências não demonstra que a aplicação deixou de carregar o componente antigo.
Cuidados e limites
Entre as correções listadas estão Python Brotli 1.2.1, brotlicffi 1.2.1.0 e versões específicas das linhas de Node.js.[2] Não escolha uma versão apenas por comparação numérica entre produtos diferentes; confirme o pacote e a linha usados.
Havia provas de conceito públicas, mas a matéria não relatava exploração maliciosa em circulação.[2] Isso não permite anunciar ataques ativos nem justificar adiamento indefinido. Se usar mitigação temporária, documente quais rotas de entrada e de resposta ela cobre e quais permanecem descobertas.
Fonte
[2] Fonte: BleepingComputer