Rack is vulnerable to a memory-exhaustion DoS through unbounded URL-encoded body parsing
21Vexday Risk Score
Sem sinal de exploração. Nenhum artefato público de exploração conhecido até agora.
ssvc Trackcvss 7.5epss 0.6%
probabilidade de exploração
0.6%top 54% das CVEs
exploração observada
nãonenhuma fonte reporta
Em resumo
Servidores Rack podem ser derrubados enviando requisições com dados de formulário muito grandes que consomem toda a memória disponível. Um atacante pode enviar formulários URL-encoded gigantescos, fazendo o servidor ficar sem memória e parar de responder.
Detalhe técnico
Rack::Request#POST nas versões anteriores a 2.2.20, 3.1.18 e 3.2.3 realiza buffer ilimitado de corpos de requisição application/x-www-form-urlencoded via rack.input.read(nil), sem limites de tamanho impostos. Um atacante remoto não autenticado pode enviar uma requisição POST grande com Content-Type: application/x-www-form-urlencoded para esgotar a memória do servidor e causar negação de serviço. A mitigação requer atualização para versões corrigidas e imposição de limites de tamanho de corpo na camada de proxy/servidor web.
Resumo gerado e traduzido por IA a partir da descrição oficial.
Rack is a modular Ruby web server interface. Prior to versions 2.2.20, 3.1.18, and 3.2.3, `Rack::Request#POST` reads the entire request body into memory for `Content-Type: application/x-www-form-urlencoded`, calling `rack.input.read(nil)` without enforcing a length or cap. Large request bodies can therefore be buffered completely into process memory before parsing, leading to denial of service (DoS) through memory exhaustion. Users should upgrade to Rack version 2.2.20, 3.1.18, or 3.2.3, anu of which enforces form parameter limits using `query_parser.bytesize_limit`, preventing unbounded reads of `application/x-www-form-urlencoded` bodies. Additionally, enforce strict maximum body size at the proxy or web server layer (e.g., Nginx `client_max_body_size`, Apache `LimitRequestBody`).
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H