Uma falha numa biblioteca de compressão que quase ninguém conhece pelo nome pode permitir que um invasor execute código no seu servidor. O apelido do problema mudou em poucos dias: começou como Node2Shell e virou HTTP2Shell.
A vulnerabilidade, registrada como CVE-2026-111497, está no decodificador do Brotli, formato de compressão do Google usado em boa parte da web. Ela recebeu nota 9,2 de 10 na escala CVSS v4.0, considerada crítica.
Abaixo você entende o que aconteceu, quem está exposto, quais versões corrigem o problema e o que fazer se não der para atualizar agora. As informações vêm do alerta da empresa de segurança Aikido, atualizado em 24 de outubro.
O que é o Brotli e por que ele está em todo lugar
O Brotli é um algoritmo de compressão sem perdas criado pelo Google. Ele deixa os dados menores para enviar pela internet, e o programa do outro lado descompacta e recupera o conteúdo original.
É muito usado para comprimir páginas web: HTML, CSS e JavaScript. Se você já viu “br” nas ferramentas de desenvolvedor do navegador, era o Brotli trabalhando.
Justamente por estar embutido em tantas bibliotecas, uma falha nele não fica restrita a um único produto. Cada projeto que carrega uma cópia própria do Brotli precisa lançar a sua atualização.
HTTP2Shell: o que aconteceu, dia a dia
Segundo a Aikido, o Node.js divulgou a falha na quarta-feira, com o apelido “node2shell”. No dia seguinte, o Python lançou uma atualização de segurança para o mesmo problema.
Na sexta-feira, 23 de outubro, ficou claro que o defeito atinge outras linguagens e aplicações que usam HTTP, e que nem todas tinham correção pronta. Daí o novo apelido, HTTP2Shell.
Um detalhe chama atenção: a OpenAI informou ter descoberto a falha em fevereiro. A causa foi corrigida no código-fonte do Brotli na época, mas ninguém percebeu que era um problema de segurança, e nenhuma versão oficial saiu com a correção até agora.

Como a falha funciona e quem está exposto
O defeito é uma escrita fora dos limites da memória no decodificador do Brotli, das versões 1.0.3 a 1.2.0, em todas as plataformas. O decodificador continua aceitando bytes quando deveria rejeitar os dados, e esses bytes transbordam um pequeno espaço de trabalho.
Com isso, um atacante remoto e sem login pode enviar um conteúdo comprimido malicioso para corromper a memória, vazar dados, derrubar o processo ou, potencialmente, executar o próprio código.
Segundo a descrição da OpenAI citada pela Aikido, o ataque funciona nos dois sentidos: um cliente malicioso pode tomar um servidor sem correção, e um servidor malicioso pode tomar um cliente que aceite respostas comprimidas.
No Python, você está exposto se tiver o pacote Brotli 1.2.0 ou anterior, ou o brotlicffi 1.2.0.x, instalado em qualquer ambiente. Clientes HTTP populares como requests, httpx e aiohttp carregam esses pacotes automaticamente quando eles estão presentes.
Versões corrigidas: o que atualizar
Esta é a lista de correções revisada pela Aikido em 23 de outubro:
| Projeto | Versões com correção | Observação |
|---|---|---|
| Node.js | 22.23.4 · 24.22.1 · 26.12.1 | Use uma linha de versão com suporte |
| Brotli (Google, original) | 1.0.10 · 1.1.1 · 1.2.1 | Escolha a correção do seu ramo |
| Pacotes Python | Brotli 1.2.1 e brotlicffi 1.2.1.0 | Atualize em todos os ambientes |
| Bun | 1.4.4 | Recompile executáveis que embutem o Bun |
| Envoy | 1.40.0 · 1.39.3 · 1.38.6 · 1.37.8 | O ramo 1.36 não tem mais suporte |
| Istio | 1.29.9 · 1.30.6 · 1.31.2 | O ramo 1.29 chegou ao fim da vida |
Depois de atualizar, regenere os arquivos de travamento de dependências (lockfiles), reconstrua as imagens de contêiner, publique de novo e reinicie os serviços. Pacotes do sistema operacional devem ser atualizados pelo gerenciador da distribuição.
A boa notícia para quem tem site em hospedagem comum: segundo a Aikido, o módulo padrão mod_brotli do Apache e o Nginx não decodificam Brotli por padrão.

E se não der para atualizar agora?
A Aikido lista medidas para reduzir a exposição enquanto a atualização não sai:
Em aplicações Python, desinstale Brotli e brotlicffi e tire extras como httpx[brotli] das dependências. Requests, httpx e urllib3 continuam funcionando com gzip e deflate.
No proxy reverso, balanceador ou middleware, rejeite requisições cujo cabeçalho Content-Encoding contenha “br”, antes que o corpo chegue a um decodificador vulnerável.
Tire “br” do Accept-Encoding e rejeite respostas com Content-Encoding “br” antes da descompactação. Só mudar o Accept-Encoding não basta: um servidor malicioso pode mandar Brotli mesmo assim.
Vale lembrar que remover os pacotes Python não elimina cópias do Brotli embutidas em outros programas. Mantenha essas barreiras até confirmar que tudo foi corrigido.
Ataques pela cadeia de dependências têm sido frequentes. Veja também o caso do LiteLLM comprometido no PyPI e as falhas críticas corrigidas no PHP nesta mesma semana.
Perguntas frequentes
Meu site WordPress está em risco?
Segundo a Aikido, Apache e Nginx não decodificam Brotli por padrão. O risco maior está em aplicações Node.js, Python e serviços que recebem ou baixam conteúdo comprimido com Brotli.
O alerta da Aikido foca em servidores, bibliotecas e runtimes. Mantenha o navegador e o sistema atualizados, como sempre, e aplique as atualizações de segurança assim que forem oferecidas.
Como sei se uso Brotli no meu projeto?
Procure por brotli e brotlicffi nas dependências e nos lockfiles, inclusive as indiretas. No Node.js, a versão do runtime é o que importa, porque o Brotli vem embutido.
Por que a falha demorou tanto para ser corrigida?
A causa foi corrigida no código em fevereiro, mas não foi reconhecida como falha de segurança e nenhuma versão oficial saiu com a correção até agora, segundo a Aikido.
Conclusão
O HTTP2Shell mostra como uma peça pequena e invisível da internet pode virar uma porta de entrada crítica. Se você mantém aplicações Node.js ou Python, atualize hoje e não confie só nas ferramentas automáticas de alerta.
Quer reforçar a segurança do código que você escreve com ajuda de IA? Leia sobre as 5 falhas de segurança que a IA deixa no seu código.
