Rack — это модульный интерфейс веб-сервера Ruby. До версий 2.2.23, 3.1.21 и 3.2.6 Rack::Multipart::Parser извлекает параметр границы из multipart/form-data с помощью жадного регулярного выражения. Если заголовок Content-Type содержит несколько граничных параметров, Rack выбирает последний, а не первый.
В развертываниях, где восходящий прокси-сервер, WAF или посредник интерпретирует первый граничный параметр, это несоответствие может позволить злоумышленнику переправить составной контент мимо восходящей проверки и заставить Rack проанализировать структуру тела, отличную от проверенной посредником. Эта проблема исправлена в версиях 2.2.23, 3.1.21 и 3.2.6.
Показать оригинальное описание (EN)
Rack is a modular Ruby web server interface. Prior to versions 2.2.23, 3.1.21, and 3.2.6, Rack::Multipart::Parser extracts the boundary parameter from multipart/form-data using a greedy regular expression. When a Content-Type header contains multiple boundary parameters, Rack selects the last one rather than the first. In deployments where an upstream proxy, WAF, or intermediary interprets the first boundary parameter, this mismatch can allow an attacker to smuggle multipart content past upstream inspection and have Rack parse a different body structure than the intermediary validated. This issue has been patched in versions 2.2.23, 3.1.21, and 3.2.6.
Характеристики атаки
Последствия
Строка CVSS v3.1
Тип уязвимости (CWE)
Уязвимые продукты 3
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Rack Rack
cpe:2.3:a:rack:rack:*:*:*:*:*:ruby:*:*
|
— |
2.2.23
|
|
Rack Rack
cpe:2.3:a:rack:rack:*:*:*:*:*:ruby:*:*
|
3.0.0
|
3.1.21
|
|
Rack Rack
cpe:2.3:a:rack:rack:*:*:*:*:*:ruby:*:*
|
3.2.0
|
3.2.6
|