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.
A simple HTTP request with lots of blank characters in the content-type header:
request["Content-Type"] = (" " * 50_000) + "a,"
It's a very easy to craft ReDoS. Like all ReDoS the impact is debatable.
{
"nvd_published_at": "2024-02-29T00:15:51Z",
"severity": "MODERATE",
"github_reviewed_at": "2024-02-28T22:57:26Z",
"github_reviewed": true,
"cwe_ids": [
"CWE-1333"
]
}