GitHub Advisoryadvisory · RubyGems

GHSA-22f2-v57c-j9cx Rack vulnerable to ReDoS in content type parsing (2nd degree polynomial)

MEDIUM Published 2024-02-28 Modified 2024-06-10 Official page ↗
Aliases
CVE-2024-25126
Ecosystem
RubyGems
Packages
rack
Severity
Moderate
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
Weaknesses
CWE-1333
Reviewed
2024-02-28

Affected packages

• RubyGems rack: >= 3.0.0, < 3.0.9.1 → fixed in 3.0.9.1 • RubyGems rack: >= 0.4, < 2.2.8.1 → fixed in 2.2.8.1

Description

Summary ```ruby module Rack class MediaType SPLIT_PATTERN = %r{\s*[;,]\s*} ``` The above regexp is subject to ReDos. 50K blank characters as a prefix to the header will take over 10s to split. PoC A simple HTTP request with lots of blank characters in the content-type header: ```ruby request["Content-Type"] = (" " * 50_000) + "a," ``` Impact It's a very easy to craft ReDoS. Like all ReDoS the impact is debatable.

Related

Alias · CVE (1)

  • CVE-2024-25126 Rack is a modular Ruby web server interface. vulnerability

Weakness · CWE (1)

  • CWE-1333 Inefficient Regular Expression Complexity weakness

References