Ошибки в реализациях HTTP/3 позволяют вывести сервер из строя одним соединением

Ошибки в реализациях HTTP3 позволяют вывести сервер из строя одним соединением

Изображение: OpenAI

Уязвимости обработки заголовков позволяют без авторизации вывести HTTP/3-сервер из строя одним соединением, выяснила компания по информационной безопасности FoxIO. Исследователи нашли проблемы в семи из десяти проверенных реализаций, в том числе в библиотеках распространённых серверов и прокси, и опубликовали рабочий код атак.

В тестах FoxIO с настройками по умолчанию расход памяти Bun достигал 4000-кратного объёма присланных данных. Поток размером около 516 КБ вводил его экспериментальный HTTP/3-сервер в бесконечный цикл, блокируя новые запросы.

QPACK сжимает заголовки запросов в HTTP/3. Уязвимые реализации ограничивают размер сжатых заголовков, но не распакованных, либо проверяют лимит слишком поздно. Один из способов атаки использует короткие ссылки на повторяющееся поле: сервер многократно восстанавливает его полный текст в памяти. Библиотеку lsquic используют LiteSpeed Web Server и OpenLiteSpeed, а на quic-go работают: Caddy, Traefik и cloudflared.

По данным The Hacker News, на 22 октября состояние исправлений следующее:

  • quic-go: исправление выпущено;
  • Cloudflare quiche: исправление выпущено;
  • lsquic: исправление выпущено;
  • Wireshark: исправление выпущено. Здесь ошибка обрушает анализатор HTTP/3 при расшифровке трафика с помощью журнала ключей или секретов в файле захвата;
  • Bun: исправления нет, FoxIO рекомендует не открывать доступ к HTTP/3-серверу из интернета;
  • h3, библиотека на Rust: исправления нет, FoxIO рекомендует задать разумный лимит через max_field_section_size;
  • aioquic: исправления нет.

Уязвимости приводят только к отказу в обслуживании. Свидетельств кражи данных или выполнения кода нет. Публичных сообщений об эксплуатации в реальных атаках также нет.

Сергей
Автор: Сергей
Пишу о кибербезопасности и информационных технологиях на простом и понятном языке
Комментарии:

Как мы обрабатываем данные: политика обработки персональных данных