Причиной уязвимости является отсутствие ограничений на размер ресурсов, передаваемых в HTTP-запросах и -ответах. В библиотеке Hyper для копирования запроса или тела ответа предлагается функция body::to_bytes, копирующая данные запроса и ответа целиком в один буфер без проверки размера полученных данных. Соответственно, атака сводится к передаче очень большого запроса или ответа, обработка которого приведёт к выделению буфера, не вмещающегося в доступную память. Примечательно, что указанное поведение явно описано в документации, в которой рекомендуется выполнять отдельные проверки размера, но предупреждение игнорировалось в различных продуктах, использующих Hyper (например, проблема всплыла в проектах Axum, Salvo и conduit-hyper).
В реальных условиях для атаки нет необходимости отправлять большой объём данных — так как при обработке chunked-запросов буфер выделяется на основе информации в заголовке Content-Length, для выделения большого блока памяти или аварийного завершения процесса достаточно отправить начальный пакет с большим значением в Content-Length.
Источник: http://www.opennet.ru/opennews/art.shtml?num=58444