Req · Req · CVE-2026-49755
**Nome do Software Vulnerável e Versões Afetadas**
wojtekmach Req versões 0.1.0 a 0.6.0
**Descrição**
O manuseio inadequado de dados altamente compactados permite que servidores HTTP controlados por atacantes esgotem a memória de um cliente por meio de corpos de resposta do tipo bomba de descompressão. O pipeline de resposta padrão inclui as funções `decode body()` e `decompress body()`. A função `decode body()` processa o content-type fornecido pelo servidor e chama `:zip.extract(body, [:memory])` para application/zip, `:erl tar.extract({:binary, body}, [:memory])` para application/x-tar e `:erl tar.extract({:binary, body}, [:memory, :compressed])` para application/gzip ou .tgz. Essas operações retornam o conteúdo completo do arquivo descompactado na memória sem um limite de tamanho total. Além disso, `decompress body()` encadeia decodificadores `:zlib`, `:brotli` e `:ezstd` com base no cabeçalho content-encoding, permitindo que as respostas se expandam através de múltiplas camadas sem limite. Como essas etapas são habilitadas por padrão, uma resposta pequena pode expandir-se para vários gigabytes, travando o processo BEAM.
**Recomendações**
Atualize para a versão 0.6.1.
Como solução temporária, desabilite a decodificação automática do corpo passando `decode body: false` para `Req.new()` ou `Req.get!()` em requisições que buscam URLs influenciadas por atacantes.
Para ignorar o pipeline de descompressão de content-encoding, passe `raw: true` para garantir que o corpo da resposta permaneça como bytes brutos para verificação de tamanho antes da descompressão.