Специалисты Amazon Web Services (AWS), Cloudflare и Google предупредили о 0-day проблеме HTTP/2 Rapid Reset, которую злоумышленники используют для DDoS-атак с августа текущего года. Благодаря уязвимости в протоколе HTTP/2, мощность атак, направленных на облачную инфраструктуру Google, достигла 398 млн запросов в секунду (requests per second, RPS), а атаки направленные на AWS и Cloudflare, превысили 155 млн и 201 млн запросов в секунду.
Для сравнения, прошлый рекорд составлял 71 млн запросов в секунду и был зафиксирован в начале 2023 года.
Корень новой проблемы кроется в уязвимости нулевого дня CVE-2023-44487, существование которой специалистам пришлось хранить в секрете более месяца, чтобы дать поставщикам защитных решений и прочим заинтересованным сторонам время отреагировать, прежде чем об уязвимости станет известно злоумышленникам.
Уязвимость была обнаружена в протоколе HTTP/2 и, как уже можно догадаться, ее можно использовать для организации мощных DDoS-атак. Дело в том, что важной особенностью HTTP/2 является мультиплексирование запросов в одном TCP-соединении, что реализовано в виде параллельных потоков.
Хотя для предотвращения атак в протоколе HTTP/2 предусмотрена защита в виде параметра, ограничивающего количество одновременно активных потоков, она не всегда эффективна. Поэтому разработчики протокола придумали более эффективную защитную меру — отмену запроса, которая не приводит к полному разрыву соединения, но, к сожалению, может использоваться не по назначению.
Так, клиент, желающий прервать запрос, может использовать фрейм RST_STREAM для прекращения обмена данными. Атака HTTP/2 Rapid Reset эксплуатирует именно эту особенность протокола для быстрой отправки и отмены запросов, тем самым обходя установленный сервером максимум для одновременных потоков.
«Атаки HTTP/2 Rapid Reset строятся на использовании нескольких HTTP/2-соединений и быстром чередовании запросов и отмен. Например, передается серия запросов на несколько потоков с последующей отменой для каждого из них. Целевая система будет анализировать и выполнять каждый запрос, генерируя журналы для запроса, который затем сбрасывается или отменяется клиентом», — пишут специалисты AWS.
«Протокол не требует от клиента и сервера каким-либо образом согласовывать отмену, и клиент может сделать это в одностороннем порядке, — объясняет Google. — Также клиент полагает, что отмена вступит в силу немедленно, как только сервер получит фрейм RST_STREAM, до того как будут обработаны любые другие данные этого TCP-соединения».
То есть, инициируя сотни тысяч потоков HTTP/2 и быстро отменяя их, злоумышленники могут полностью выводить сайты из строя, не превышая максимальное количество потоков, разрешенное сервером. Еще одним важным аспектом этой проблемы является то, что такие атаки могут быть реализованы силами относительно небольших ботнетов, состоящих примерно из 20 000 машин.
«Автоматизируя и масштабируя этот простой шаблон “запрос, отмена, запрос, отмена”, злоумышленники могут добиться отказ в обслуживании и отключить любой сервер или приложение, работающее со стандартной имплементацией HTTP/2», — объясняют в Cloudflare.
Также эксперты Cloudflare сообщают, что прокси-серверы или балансировщики нагрузки HTTP/2 особенно восприимчивы к таким атакам. Так, сеть компании оказалась перегружена на участке между TLS-прокси и апстримом, поэтому ущерб был нанесен еще до того, как вредоносные запросы попали под блокировку. В итоге атаки привели к увеличению количества ошибок 502 для клиентов Cloudflare.
По словам представителей Cloudflare, в конечном итоге для борьбы с атаками HTTP/2 Rapid Reset была использована система, предназначенная для обработки гиперобъемных (hyper-volumetric) атак, под названием IP Jail, которую компания расширила для охвата всей своей инфраструктуры.
Эта система помещает IP-адреса нарушителей «в тюрьму» и запрещает им использовать HTTP/2 для любого домена Cloudflare в течение определенного периода времени, при этом для реальных пользователей, использующих этот IP-адрес, производительность снижается лишь незначительно.
Компания Amazon, в свою очередь заявила, что отразила уже десятки подобных атак, однако не раскрывает подробной информации об этих инцидентах и их последствиях. Лишь подчеркивается, что доступность клиентских сервисов была сохранена.
В Google заявили, что компании удалось смягчить эти атаки, увеличив дополнительную пропускную способность на границе своей сети.
В итоге все три компании делают вывод, что наилучшим способом защиты от HTTP/2 Rapid Reset будет использование всех доступных средств защиты от HTTP-флуда, а также повышение устойчивости к DDoS-атакам посредством многогранных защитных мер.
К сожалению, поскольку данные атаки строятся на протоколе HTTP/2, не существует единого решения, позволяющего полностью блокировать этот вид DDoS’а.
«Средства защиты от этого вектора атак могут принимать различные формы, но в основном они сводятся к отслеживанию статистики соединений и использованию различных сигналов и бизнес-логики для определения полезности каждого соединения, — рассказывают инженеры Google. — Например, если соединение имеет более 100 запросов и более 50% из них отменены, оно становится кандидатом для применения ответных мер. Масштабы и тип этих ответных мер зависят от степени риска для каждой конкретной платформы, но они могут варьироваться от принудительного использования фреймов GOAWAY, до немедленного закрытия TCP-соединения.
Для защиты от варианта атаки, когда злоумышленники не отменяют запросы сразу, мы рекомендуем серверам HTTP/2 закрывать соединения, превышающие лимит одновременных потоков. Это может происходить как сразу, так и после небольшого количества повторных нарушений».