---
title: "Falha no Brotli CVE-2026-111497 atinge o Python"
description: "A falha no Brotli CVE-2026-111497 afeta requests, httpx e aiohttp quando o pacote Brotli está instalado. Veja como saber se você usa e como corrigir."
canonical: https://wmj.com.br/insights/falha-no-brotli-cve-2026-111497-atinge-o-python/
date: 2026-10-23
---

# Falha no Brotli CVE-2026-111497 atinge o Python

A falha no Brotli CVE-2026-111497 afeta requests, httpx e aiohttp quando o pacote Brotli está instalado. Veja como saber se você usa e como corrigir.

**Em resumo:** Em 22 de outubro de 2026, o Google divulgou a CVE-2026-111497, uma falha no Brotli, o formato de compressão usado na web, com nota 9.2 de 10. Um fluxo de dados comprimido montado de propósito corrompe a memória do programa que o descomprime e pode levar à execução de código. No Python, ficam expostos os ambientes com os pacotes Brotli ou brotlicffi instalados: com eles, requests, httpx e aiohttp passam a descomprimir respostas em Brotli. A correção é atualizar para Brotli 1.2.1 ou brotlicffi 1.2.1.0.

## O que aconteceu

O Brotli é um formato de compressão criado pelo Google e usado por navegadores e servidores para encolher páginas, com o cabeçalho `Content-Encoding: br`. Em 21 de outubro, o Google lançou as versões 1.0.10, 1.1.1 e 1.2.1 da biblioteca, e o Node.js saiu com correções no mesmo dia. No dia 22, a falha ganhou número de CVE e nota 9.2 no CVSS, a escala usada para medir a gravidade de vulnerabilidades. O crédito é de pesquisadores do Codex Security, da OpenAI.

O defeito está no decodificador. Diante de um certo trecho inválido, ele entendia que faltavam dados, em vez de acusar erro, e continuava gravando bytes num espaço pequeno de memória. Segundo o registro da CVE, um atacante remoto, sem login, consegue corromper memória, expor dados do processo, derrubar o serviço e, em potencial, executar código. A correção estava no código-fonte desde fevereiro, sem menção a segurança, mas não tinha entrado em nenhuma versão até agora.

A Imperva batizou a falha de Node2Shell, um apelido no estilo do [PHP2Shell](/insights/php2shell-falhas-criticas-no-php/), e mostrou execução de código no Node.js em laboratório, sem publicar o código. Até 23 de outubro, não havia relato de ataques, e ninguém tinha mostrado execução de código em Python.

## Onde o Python entra

O Python em si não traz Brotli. O risco está nos pacotes do PyPI que embutem a biblioteca em C: o Brotli, mantido pelo próprio Google, e o brotlicffi. As versões corrigidas, Brotli 1.2.1 e brotlicffi 1.2.1.0, saíram em 22 de outubro.

O que importa é se o pacote está instalado no ambiente, não quem pediu por ele:

- **requests e httpx** passam a anunciar `br` no cabeçalho `Accept-Encoding` e descomprimem a resposta do servidor. Um servidor malicioso, ou uma URL informada pelo usuário, entrega o fluxo montado.
- **aiohttp** faz o mesmo como cliente. Como servidor, ele descomprime o corpo das requisições por padrão, e aí basta alguém mandar um POST com `Content-Encoding: br`.
- **Scrapy,** a partir da 2.18, traz Brotli como dependência obrigatória e sempre descomprime.

Muitos pacotes instalam Brotli sem você perceber: o flask-compress e o gradio, por exemplo, como dependência obrigatória, e o `httpx[brotli]`, o `urllib3[brotli]`, o `aiohttp[speedups]` e o `whitenoise[brotli]` como extra. Um pacote que só comprime respostas, como o flask-compress, já faz o requests do mesmo ambiente descomprimir Brotli.

Django, Flask, FastAPI e uvicorn não descomprimem o corpo das requisições por conta própria. Nesses, a exposição vem do lado cliente da aplicação, ou de um middleware que descomprime.

## Como verificar

Em cada ambiente virtual e dentro de cada container:

```bash
python -m pip show brotli brotlicffi
```

Se nada aparecer, o ambiente não tem a biblioteca. Se aparecer, o campo `Required-by` mostra quem puxou o pacote. Com o uv, use `uv tree --invert --package brotli`.

No começo do dia 23 de outubro, ferramentas como pip-audit e Dependabot ainda não marcavam os pacotes do Python; os avisos com eles entraram ao longo do dia. Não espere o alerta: confira à mão.

No Debian, o `python3-brotli` vem do pacote `brotli`, já corrigido em 23 de outubro: `1.0.9-2+deb12u1` no Debian 12 e `1.1.0-2+deb13u1` no Debian 13. O número da versão de origem não muda; o que mostra a correção é o final `+deb`. No Ubuntu, a falha ainda estava em avaliação.

## O que fazer

- **Atualize o pacote.** Rode `python -m pip install --upgrade "brotli>=1.2.1"` ou `python -m pip install --upgrade "brotlicffi>=1.2.1.0"`, conforme o que estiver instalado. Atualize o arquivo de dependências, reconstrua as imagens de container e reinicie o serviço.
- **Se você não precisa de Brotli,** remova com `python -m pip uninstall brotli brotlicffi` e tire o extra que o instala. Sem o pacote, requests, httpx e aiohttp deixam de descomprimir Brotli.
- **No servidor, recuse requisições com corpo em Brotli** antes que cheguem à aplicação. No Nginx, por exemplo, dentro do bloco `server`:

```nginx
if ($http_content_encoding ~* "br") {
    return 415;
}
```

- **No cliente, tirar `br` do `Accept-Encoding` não basta.** Um servidor malicioso pode mandar Brotli mesmo assim, e a biblioteca descomprime pelo que o servidor declarou. Enquanto não atualiza, a saída segura é remover o pacote.
- **Se você também roda Node.js,** atualize para 22.23.4, 24.22.1 ou 26.12.1. Quem fica exposto e o passo a passo estão no nosso post sobre as [correções de segurança do Node.js](/insights/node-js-corrige-10-falhas-de-seguranca-o-que-fazer/).

## Próximos passos

É a terceira correção urgente no Python nesta semana, depois das [três falhas no Pillow](/insights/tres-falhas-no-pillow-atualize-para-o-13-0-0/) e das [versões de emergência do Python](/insights/versoes-de-emergencia-do-python-atualize-o-pip/), que pedem a atualização do pip. Se vai mexer nos ambientes para atualizar o Brotli, aproveite e confira os três de uma vez.

Falhas em bibliotecas embutidas, como esta, passam despercebidas porque ninguém lembra que elas estão lá. Se quiser ajuda para mapear as dependências dos seus sistemas em Python e mantê-las em dia, fale com a gente sobre [desenvolvimento web sob medida](/servicos/desenvolvimento-web/). Para os servidores, veja a nossa [gestão de servidores](/servicos/gestao-de-servidores/).

## Fontes

- [CVE-2026-111497 no registro da CVE](https://www.cve.org/CVERecord?id=CVE-2026-111497)
- [Google Brotli 1.2.1, com a correção](https://github.com/google/brotli/releases/tag/v1.2.1)
- [GHSA-9v8h-qqgm-4m35, com os pacotes do PyPI afetados](https://github.com/advisories/GHSA-9v8h-qqgm-4m35)
- [Node.js: correções de segurança de outubro de 2026](https://nodejs.org/en/blog/vulnerability/october-2026-security-releases)
- [Imperva: Node2Shell, do Brotli à execução remota de código](https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/)
- [Patch the Planet: orientações para o Brotli](https://patchtheplanet.org/brotli)
