Rack - это модульный интерфейс веб-сервера Ruby. До версий 2.2.14, 3.0.16 и 3.1.14 `Rack::QueryParser` разбирает строки запросов и тела тип…
Rack - это модульный интерфейс веб-сервера Ruby. До версий 2.2.14, 3.0.16 и 3.1.14 `Rack::QueryParser` разбирает строки запросов и тела типа `application/x-www-form-urlencoded` в структуры данных Ruby без ограничения на количество параметров, что позволяет злоумышленникам отправлять запросы с чрезвычайно большим количеством параметров. Уязвимость возникает из-за того, что `Rack::QueryParser` итерирует каждую пару ключ-значение, разделенную `&`, и добавляет ее в хэш без ограничения на общее количество параметров. Это позволяет злоумышленнику отправить один запрос, содержащий сотни тысяч (или более) параметров, что потребляет чрезмерное количество памяти и ресурсов CPU во время разбора. Злоумышленник может вызвать отказ в обслуживании, отправив специально сформированные HTTP-запросы, что может привести к исчерпанию памяти или загрузке ресурсов CPU, что приведет к зависанию или краху сервера Rack. Это приводит к полному нарушению обслуживания до перезапуска пораженного рабочего процесса. Версии 2.2.14, 3.0.16 и 3.1.14 исправляют проблему. Некоторые другие меры по смягчению последствий доступны. Можно использовать промежуточное ПО для обеспечения максимального размера строки запроса или количества параметров, или использовать обратный прокси (например, Nginx) для ограничения размеров запросов и отклонения слишком больших строк запросов или тел. Ограничение размеров тела запроса и длины строки запроса на уровне веб-сервера или CDN является эффективной мерой по смягчению последствий [1]. Источники: - [1] https://github.com/rack/rack/security/advisories/GHSA-gjh7-p2fx-99vx - [2] https://github.com/rack/rack/commit/2bb5263b464b65ba4b648996a579dbd180d2b712 - [3] https://github.com/rack/rack/commit/3f5a4249118d09d199fe480466c8c6717e43b6e3 - [4] https://github.com/rack/rack/commit/cd6b70a1f2a1016b73dc906f924869f4902c2d74
Продукт не управляет должным образом выделением ограниченного ресурса и его обслуживанием.
https://cwe.mitre.org/data/definitions/400.html →Открыть в коллекции CWE →Злоумышленник инициирует атаку исчерпания ресурсов, при которой большое количество небольших XML-сообщений доставляется с достаточно высокой частотой для обеспечения отказа в обслуживании или аварийного завершения работы цели. Транзакции, такие как повторяющиеся SOAP-транзакции, способны исчерпывать ресурсы быстрее, чем обычный флудинг, из-за дополнительных ресурсов, потребляемых протоколом SOAP, и ресурсов, необходимых для обработки SOAP-сообщений. Используемые транзакции несущественны при условии, что они вызывают потребление ресурсов на цели. Иными словами, это обычная флудинг-атака, усиленная за счёт использования сообщений, требующих дополнительной обработки на целевой стороне.
https://capec.mitre.org/data/definitions/147.html →Открыть в коллекции CAPEC →Злоумышленник пытается лишить легитимных пользователей доступа к ресурсу, непрерывно занимая конкретный ресурс с целью удержания его занятым как можно дольше. Основная цель злоумышленника состоит не в том, чтобы привести цель к аварийному завершению или проводить флудинг, что привлекло бы внимание защитников, а в том, чтобы многократно выполнять действия или эксплуатировать алгоритмические недостатки, чтобы данный ресурс оставался занятым и недоступным для легитимного пользователя. Тщательно формируя запросы, удерживающие ресурс занятым посредством, казалось бы, безобидных запросов, злоумышленник ограничивает или полностью лишает легитимных пользователей доступа к ресурсу.
https://capec.mitre.org/data/definitions/227.html →Открыть в коллекции CAPEC →Злоумышленник может реализовать атаку на программу, использующую неэффективную реализацию регулярных выражений (Regex), подобрав входные данные, приводящие к крайне неблагоприятному сценарию работы Regex. Типичный крайний сценарий характеризуется экспоненциальным временем работы относительно размера входных данных. Это объясняется тем, что большинство реализаций использует недетерминированный конечный автомат (NFA) в качестве основы алгоритма Regex, поскольку NFA допускает обратный просмотр и тем самым поддерживает более сложные регулярные выражения.
https://capec.mitre.org/data/definitions/492.html →Открыть в коллекции CAPEC →| Продукт | Вендор | Статус |
|---|---|---|
| Отслеживается | ||
| ruby-rack | Отслеживается | |
| ruby-rack | Отслеживается | |
| ruby-rack | Отслеживается | |
| ruby-rack | Отслеживается | |
| ruby-rack | Отслеживается | |
| ruby-rack | Отслеживается | |
| ruby-rack | Отслеживается | |
| ruby-rack | Отслеживается | |
| ruby-rack | Отслеживается | |
| ruby-rack | Отслеживается | |
| ruby-rack | Отслеживается | |
| rack | * | Отслеживается |