Rack — это модульный интерфейс веб-сервера Ruby. Начиная с версий 3.0.0.beta1 и до 3.1.21 и от 3.2.0 до 3.2.6, Rack::Utils.forwarded_values анализирует заголовок RFC 7239 Forwarded, разделяя его на точки с запятой перед обработкой значений строки в кавычках. Поскольку значения в кавычках могут по закону содержать точки с запятой, Rack может интерпретировать заголовок как несколько пересылаемых директив, а не как одну кавычку для значения.
В развертываниях, где восходящий прокси-сервер, WAF или посредник проверяет или сохраняет указанные пересылаемые значения по-разному, это несоответствие может позволить злоумышленнику переправить хост, прототип, параметры for или by через одно значение заголовка. Эта проблема исправлена в версиях 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::Utils.forwarded_values parses the RFC 7239 Forwarded header by splitting on semicolons before handling quoted-string values. Because quoted values may legally contain semicolons, a header can be interpreted by Rack as multiple Forwarded directives rather than as a single quoted for value. In deployments where an upstream proxy, WAF, or intermediary validates or preserves quoted Forwarded values differently, this discrepancy can allow an attacker to smuggle host, proto, for, or by parameters through a single header value. This issue has been patched in versions 3.1.21 and 3.2.6.
Характеристики атаки
Последствия
Строка CVSS v3.1