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

Изображение: 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: исправления нет.
Уязвимости приводят только к отказу в обслуживании. Свидетельств кражи данных или выполнения кода нет. Публичных сообщений об эксплуатации в реальных атаках также нет.



