HTTP2Shell: Falha no Brotli Afeta Node, Python e Mais

HTTP2Shell: Falha no Brotli Afeta Node, Python e Mais

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.

Código de programação na tela de um notebook
A falha está no decodificador do Brotli, usado por várias linguagens. Foto: Daniil Komov / Pexels.

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.

💡 Dica Iazando: Em 23 de outubro, as bases de alertas ainda não ligavam a falha aos pacotes Brotli e brotlicffi do PyPI. Ou seja, pip-audit, Dependabot e Safety podem não avisar nada. Rode “pip show brotli brotlicffi” em cada ambiente e confira a versão na mão.
Cadeado representando segurança digital
Atualizar as dependências é a principal defesa contra o HTTP2Shell. Foto: Nathan Thomas / Pexels.

E se não der para atualizar agora?

A Aikido lista medidas para reduzir a exposição enquanto a atualização não sai:

1

Remova o Brotli onde ele for opcional
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.
2

Bloqueie requisições comprimidas com Brotli
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.
3

Cuide também das requisições de saída
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 navegador do meu computador está vulnerável?

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.