Значительная уязвимость была обнаружена в ряде реализаций протокола HTTP/2, которая облегчает проведение атак типа отказ в обслуживании (DoS). Новый метод атаки, получивший наименование MadeYouReset, позволяет злоумышленникам перегружать сервер множеством запросов, обходя существующие ограничения на количество одновременно обрабатываемых потоков.
Суть уязвимости заключается в возможности клиента инициировать чрезмерное число параллельных потоков в рамках одного HTTP/2-соединения, игнорируя лимит SETTINGS_MAX_CONCURRENT_STREAMS. Это достигается за счёт сброса каждого потока на ранней стадии его жизненного цикла. Такой приём позволяет атакующему непрерывно отправлять запросы без ожидания ответа от сервера, что снижает зависимость от времени отклика (RTT) и минимизирует затраты на проведение атаки. В то же время сервер вынужден расходовать вычислительные ресурсы, обрабатывая каждый входящий поток — от выделения памяти под структуру до разбора заголовков и поиска соответствующего ресурса.
Особую угрозу данный метод представляет для обратных прокси-серверов. Даже если поток в итоге сбрасывается, прокси может успеть перенаправить запрос на внутренний сервер, тем самым распространяя нагрузку на инфраструктуру бэкенда.
Атака MadeYouReset перекликается с ранее известной уязвимостью Rapid Reset (CVE-2023-44487), однако имеет и ключевые отличия. В новом варианте сброс потока инициируется не клиентом, а сервером, в ответ на некорректные управляющие кадры протокола. Спецификация HTTP/2 допускает возможность сброса с обеих сторон, но в ряде реализаций сервер продолжает обработку даже после начала сброса, что и создаёт уязвимость.
Для успешной эксплуатации злоумышленник сначала отправляет валидный запрос, который проходит полную обработку сервером. Затем, следом, передаёт некорректную последовательность управляющих кадров, нарушая работу соединения. В результате поток, уже принятый сервером, переводится в состояние сброса (RST_STREAM), но ресурсы на его обработку уже были потрачены.
Уязвимость подтверждена в нескольких популярных HTTP-серверах и программных продуктах, включая Apache Tomcat, Netty, Eclipse Jetty, Fastly, Varnish, lighttpd и Zephyr RTOS. Также проблема проявляется на ряде ресурсов и серверной инфраструктуре Mozilla. Вместе с тем, такие решения как Apache httpd, Apache Traffic Server, Node.js, LiteSpeed и HAProxy оказались невосприимчивыми к данной уязвимости. Статус влияния на nginx в настоящее время остаётся неясным.



