Rack — это модульный интерфейс веб-сервера Ruby. До версий 2.2.23, 3.1.21 и 3.2.6 Rack::Multipart::Parser оборачивает тело запроса в BoundedIO только при наличии CONTENT_LENGTH. Когда запрос multipart/form-data отправляется без заголовка Content-Length, например, при кодировании передачи по частям HTTP, многочастный анализ продолжается до конца потока без ограничения общего размера.
Для частей файла загруженное тело записывается непосредственно во временный файл на диске, а не ограничивается ограничением загрузки в буферизованную память. Таким образом, неаутентифицированный злоумышленник может осуществлять потоковую загрузку файла произвольного размера, состоящего из нескольких частей, и занимать неограниченное дисковое пространство. Это приводит к отказу в обслуживании для приложений 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 only wraps the request body in a BoundedIO when CONTENT_LENGTH is present. When a multipart/form-data request is sent without a Content-Length header, such as with HTTP chunked transfer encoding, multipart parsing continues until end-of-stream with no total size limit. For file parts, the uploaded body is written directly to a temporary file on disk rather than being constrained by the buffered in-memory upload limit. An unauthenticated attacker can therefore stream an arbitrarily large multipart file upload and consume unbounded disk space. This results in a denial of service condition for Rack applications that accept multipart form data. 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
|