Rack — это модульный интерфейс веб-сервера Ruby. Начиная с версий 3.0.0.beta1 до 3.1.21 и от 3.2.0 до 3.2.6, Rack::Request анализирует заголовок Host с помощью регулярного выражения AUTHORITY, которое принимает символы, не разрешенные в именах хостов, соответствующих RFC, включая /, ?, # и @. Поскольку req.host возвращает полное проанализированное значение, приложения, проверяющие хосты с помощью простых проверок префиксов или суффиксов, можно обойти.
Это может привести к отравлению заголовка хоста в приложениях, которые используют req.host, req.url или req.base_url для создания ссылок, перенаправления или проверки происхождения. Эта проблема исправлена в версиях 3.1.21 и 3.2.6.
Показать оригинальное описание (EN)
Rack is a modular Ruby web server interface. From versions 3.0.0.beta1 to before 3.1.21, and 3.2.0 to before 3.2.6, Rack::Request parses the Host header using an AUTHORITY regular expression that accepts characters not permitted in RFC-compliant hostnames, including /, ?, #, and @. Because req.host returns the full parsed value, applications that validate hosts using naive prefix or suffix checks can be bypassed. This can lead to host header poisoning in applications that use req.host, req.url, or req.base_url for link generation, redirects, or origin validation. This issue has been patched in versions 3.1.21 and 3.2.6.
Характеристики атаки
Последствия
Строка CVSS v3.1
Тип уязвимости (CWE)
Уязвимые продукты 2
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
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
|