Уязвимость в приложениях на базе HTTP-библиотеки Hyper

Автор Сообщение
news_bot ®

Стаж: 6 лет 2 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
07-Янв-2023 01:00

В библиотеке Hyper, предлагающей реализацию протоколов HTTP/1 и HTTP/2 на языке Rust, выявлена особенность работы с памятью, которая может использоваться для инициирования отказа в обслуживании через исчерпание доступной процессу памяти. Для эксплуатации уязвимости достаточно отправить специально оформленный HTTP-запрос уязвимому обработчику, использующему Hyper. Библиотека достаточно популярна (67 млн загрузок) и используется в качестве зависимости у 2579 проектов, представленных в каталоге crates.io.
Причиной уязвимости является отсутствие ограничений на размер ресурсов, передаваемых в HTTP-запросах и -ответах. В библиотеке Hyper для копирования запроса или тела ответа предлагается функция body::to_bytes, копирующая данные запроса и ответа целиком в один буфер без проверки размера полученных данных. Соответственно, атака сводится к передаче очень большого запроса или ответа, обработка которого приведёт к выделению буфера, не вмещающегося в доступную память. Примечательно, что указанное поведение явно описано в документации, в которой рекомендуется выполнять отдельные проверки размера, но предупреждение игнорировалось в различных продуктах, использующих Hyper (например, проблема всплыла в проектах Axum, Salvo и conduit-hyper).
В реальных условиях для атаки нет необходимости отправлять большой объём данных - так как при обработке chunked-запросов буфер выделяется на основе информации в заголовке Content-Length, для выделения большого блока памяти или аварийного завершения процесса достаточно отправить начальный пакет с большим значением в Content-Length.
===========
Источник:
OpenNet.RU
===========

Похожие новости: Теги для поиска: #_rust, #_hyper
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 25-Апр 19:30
Часовой пояс: UTC + 5