Уязвимость в протоколе HTTP/2, задействованная в крупнейшей DDoS-атаке

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 3258
Зарегистрирован: 20.08.2022

#

Уязвимость в протоколе HTTP/2, задействованная в крупнейшей DDoS-атаке
Дата публикации:Tue, 10 Oct 2023 23:24:22 +0300




Компания Google зафиксировала крупнейшую DDoS-атаку на свою инфраструктуру, интенсивность которой составила 398 миллионов запросов в секунду. Для сравнения новая атака в 7 раз превосходит по интенсивности прошлую рекордную DDoS-атаку, в которой злоумышленникам удалось сформировать поток из 47 миллионов запросов в секунду. Помимо Google с атакой также столкнулись компании Amazon и Сloudflare. Возможность совершения новой атаки связана с выявлением в протоколе HTTP/2 уязвимости (CVE-2023-44487), позволяющей при минимальной нагрузке на клиента направлять огромный поток запросов на сервер.




Новая техника атаки получила название "Rapid Reset" и вызвана тем, что предоставляемые в HTTP/2 средства мультиплексирования каналов связи дают возможность сформировать поток запросов в рамках уже установленного соединения, без открытия новых сетевых соединений и не дожидаясь подтверждения получения пакетов.





По аналогии с ранее применявшимися методами проведения атак на HTTP/2, в новой атаке также создаётся большое число потоков в рамках одного соединения. Ключевым отличием новой атаки стало то, что вместо ожидания ответа следом за каждым отправленным запросом направляется кадр с флагом RST_STREAM, сразу отменяющим запрос. Отмена запроса на ранней стадии позволяет избавиться от обратного трафика в сторону клиента и обойти присутствующие на HTTP-серверах ограничения на максимально возможное число потоков, одновременно отрытых в рамках одного соединения по HTTP/2. Таким образом, в новой атаке объём направляемых на HTTP-сервер запросов перестаёт зависеть от задержек между отправкой запроса и получением ответа (RTT, round-trip time) и упирается только в пропускную способность канала связи.

Изображение


Так как для проведения атаки на стороне клиента достаточно просто отправлять запросы, не получая ответов, атака может быть проведена с минимальными накладными расходами. Например, зафиксированная компанией Сloudflare атака в 201 млн запросов в секунду была проведена при помощи относительно небольшого ботнета в 20 тысяч компьютеров. На стороне сервера затраты на обработку поступающих запросов существенно выше, несмотря на их отмену, так как необходимо выполнять такие операции, как выделение структур данных под новые потоки, разбор запроса, распаковка заголовка и сопоставление URL с ресурсом. При атаке на обратные прокси, атака может распространиться на бэкенды, так как прокси может успеть перенаправить запрос на бэкенд до обработки кадра RST_STREAM.





Атака может быть совершена только на уязвимые серверы с поддержкой HTTP/2 (скрипт для проверки проявления уязвимости в серверах, инструментарий для совершения атаки). Подверженность уязвимости и наличие исправлений для HTTP-серверов и прокси:
  • nginx (анонс, пояснение, что уязвимость в полной мере не проявляется в nginx в конфигурации по умолчанию, так как атака упрётся в лимит на число запросов на соединение (т.e. после каждых 1000 запросов соединение будет сбрасываться). В исправлении добавлена дополнительная защита по ограничению интенсивности запросов через директиву "limit_req").

    В HAProxy эффективная защита от превышения лимита на число потоков HTTP/2 была добавлена ещё в 2018 году и действует начиная с версии 1.9-dev.


    Apache httpd (создаётся определённая нагрузка на httpd, но она не распространяется на бэкенды и ограничивается действующими с 2016 года лимитами на соединения клиентов).
    mod_h2 для Apache httpd.

    caddy
    envoy
    golang (проблема
    устранена в выпусках Go 1.21.3 и 1.20.10).
    h2o (патч).
    grpc-go
    hyper (уязвимость не проявляется).

    jetty (исправлено в 12.0.2,
    11.0.17,
    10.0.17 и 9.4.53.v20231009).
    netty
    nghttp2 (исправлено в версии 1.57.0).

    Facebook proxygen
    .NET и ASP.NET Core (уязвимости подвержен http-сервер ASP.NET Core Kestrel).

    Node.js
    proxygen
    swift-nio-http2 (исправлено в версии 1.28.0).
    Apache Tomcat (исправлено в версиях
    11.0.0-M12,
    10.1.14,
    9.0.81,
    8.5.94).
    Apache Traffic Server (исправлено в ветке 9.2.x).



Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=59901

Жизнь за Нер'зула!

Ответить