Faraday — это уровень абстракции клиентской библиотеки HTTP, который обеспечивает общий интерфейс для многих адаптеров. До версии 2.14.1 метод build_exclusive_url Фарадея (в lib/faraday/connection.rb) использовал URI#merge Ruby для объединения базового URL-адреса соединения с путем, предоставленным пользователем. Согласно RFC 3986, URL-адреса, относящиеся к протоколу (например, //evil.com/path), рассматриваются как ссылки на сетевой путь, которые переопределяют компонент хоста/авторитета базового URL-адреса.
Это означает, что если какое-либо приложение передает контролируемые пользователем входные данные в методы get(), post(), build_url() или другие методы запроса Фарадея, злоумышленник может предоставить URL-адрес, относящийся к протоколу, например //attacker.com/endpoint, чтобы перенаправить запрос на произвольный хост, включив подделку запросов на стороне сервера (SSRF). Эта уязвимость исправлена в версии 2.14.1.
Показать оригинальное описание (EN)
Faraday is an HTTP client library abstraction layer that provides a common interface over many adapters. Prior to 2.14.1, Faraday's build_exclusive_url method (in lib/faraday/connection.rb) uses Ruby's URI#merge to combine the connection's base URL with a user-supplied path. Per RFC 3986, protocol-relative URLs (e.g. //evil.com/path) are treated as network-path references that override the base URL's host/authority component. This means that if any application passes user-controlled input to Faraday's get(), post(), build_url(), or other request methods, an attacker can supply a protocol-relative URL like //attacker.com/endpoint to redirect the request to an arbitrary host, enabling Server-Side Request Forgery (SSRF). This vulnerability is fixed in 2.14.1.
Характеристики атаки
Последствия
Строка CVSS v3.1