Серия уязвимостей в протоколе HTTP/2 может привести к атакам на отказ в обслуживании (DoS) и способна вывести из строя веб-серверы при помощи одного TCP-соединения

Проблемы, получившее общее название Continuation Flood были обнаружены исследователем Баркетом Новотарски (Barket Nowotarski). Он утверждает, что уязвимости связаны с использованием фреймов HTTP/2 CONTINUATION, которые во многих имплементациях протокола не ограничиваются и не проверяются должным образом. Об этом сообщает портал Хакер.ru со ссылкой на личный блог исследователя.

Так, сообщения HTTP/2 содержат секции заголовков и трейлеров, сериализованные в блоки. В ходе передачи такие блоки могут быть фрагментированы в несколько фреймов, а фреймы CONTINUATION используются для объединения потока.

Как объясняет Новотарски, отсутствие должной проверки фреймов позволяет злоумышленникам отправлять чрезвычайно длинные строки фреймов, просто не устанавливая флаг END_HEADERS. В результате это может приводить к сбоям в работе сервера из-за исчерпания ресурсов, которые уйдет на обработку этих фреймов.

Исследователь предупредил, что в некоторых имплементациях вывести сервер из строя можно при помощи всего одного TCP-соединения HTTP/2.

Эксперты Координационного центра CERT (CERT-CC) уже публиковали предупреждение, посвященное Continuation Flood. Уязвимостям в различных имплементациях HTTP/2 были присвоены собственные идентификаторы CVE:

  • CVE-2024-27983 — затрагивает HTTP/2-сервер Node.js. Отправка нескольких HTTP/2-фреймов может спровоцировать утечку памяти из-за состояния гонки, что приводит к потенциальному отказу в облуживании;
  • CVE-2024-27919 — затрагивает oghttp-кодек Envoy. Провоцирует неограниченное потребление памяти, так как не сбрасывает запрос в случае исчерпания лимита header map;
  • CVE-2024-2758 — затрагивает к Tempesta FW. Ограничения не позволяют эффективно предотвращать атаки пустыми фреймами CONTINUATION, что потенциально может привести к отказу в обслуживании;
  • CVE-2024-2653 — затрагивает amphp/http. Собирает фреймы CONTINUATION в неограниченный буфер, что чревато аварийным завершением работы в случае превышении лимита на размера заголовка;
  • CVE-2023-45288 — затрагивает Go-пакеты net/http и net/http2. Позволяет злоумышленнику отправлять большой набор заголовков, что приводит к перерасходу ресурсов процессора;
  • CVE-2024-28182 — затрагивает имплементации, использующие библиотеку nghttp2, которая продолжает получать фреймы CONTINUATION, пока это не приведет к отказу в обслуживании;
  • CVE-2024-27316 — затрагивает Apache Httpd. Можно отправлять непрерывный поток фреймов CONTINUATION без установленного флага END_HEADERS;
  • CVE-2024-31309 — затрагивает Apache Traffic Server. Атака Continuation Flood может привести к перерасходу ресурсов сервера;
  • CVE-2024-30255 — затрагивает Envoy версии 1.29.2 и более ранних. Истощает ресурсы процессора потоком фреймов CONTINUATION.

По данным CERT-CC, уязвимость перед Continuation Flood и хотя бы одной из перечисленных CVE уже подтвердили создатели Red Hat, SUSE Linux, Arista Networks, Apache HTTP Server Project, nghttp2, Node.js, AMPHP и языка программирования Go.

«Учитывая, значимость затронутых проектов, а также тот факт, что, по данным Cloudflare Radar, на HTTP-трафик приходится свыше 70% от всех интернет-коммуникаций, можно предположить, что большая часть интернета уязвима перед легко эксплуатируемой уязвимостью: во многих случаях достаточно одного TCP-соединения, чтобы обрушить сервер», — предупреждает Новотарски.

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

С заботой о вашей безопасности, команда Origin Security

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *