CVE: CVE-2026-90678
Продукт: Ubuntu
Дата публикации: 13.09.2026
Критичность: HIGH
CVSS: 7.5 (3.1)
EPSS: 0,52%; процентиль 42,91%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
Уязвимость в HAProxy позволяет удалённому клиенту обходить правила безопасности и перехватывать данные других пользователей при использовании HTTP/3. Статья разбирает механику атаки, затронутые версии Ubuntu и способы проверки исправления.
Основные характеристики
Риск связан с рассинхронизацией протоколов HTTP/3 и HTTP/1.1, что ведёт к HTTP request smuggling. Атака не требует авторизации, но имеет высокую сложность из-за зависимости от состояния пула соединений.
- Тип ошибки: CWE-130 (HTTP Request Smuggling).
- CVSS 3.1: 7.5 (HIGH), вектор
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:H/A:L.
- Условия атаки: Сеть (AV:N), высокая сложность (AC:H), без привилегий (PR:N).
- Эксплуатация: Не детерминированная, зависит от гонок в пуле соединений.
- EPSS: 0,52% (процентиль 42,91%).
Какие продукты и версии затронуты
Уязвимость затрагивает HAProxy версии 3.3.0–3.4.4 и 3.5-dev1–3.5-dev5. В дистрибутивах Ubuntu пакет
haproxy в версиях, указанных в базе OSV, помечен как затронутый, однако фактическая подверженность зависит от конфигурации (наличие QUIC и HTTP/1.1 на бэкенде).- Ubuntu 16.04 LTS (Pro): haproxy 1.6.3-1ubuntu0.3+esm2.
- Ubuntu 18.04 LTS (Pro): haproxy 1.8.8-1ubuntu0.13+esm3.
- Ubuntu 20.04 LTS: haproxy 2.0.33-0ubuntu0.1.
- Ubuntu 22.04 LTS: haproxy 2.4.30-0ubuntu0.22.04.2.
- Ubuntu 24.04 LTS: haproxy 2.8.16-0ubuntu0.24.04.3.
- Ubuntu 26.04 LTS: haproxy 3.2.9-1ubuntu2.2.
Версии 3.2.x и более ранние не содержат уязвимого механизма, введённого в 3.3-dev10.
Причина уязвимости
Причина кроется в некорректной обработке заголовков DATA-фреймов HTTP/3. Мультплексор HAProxy записывает длину, объявленную в заголовке фрейма, в оценку известного входного потока до фактического получения данных.
Когда этот поток транслируется на бэкенд по HTTP/1.1 с chunked transfer coding, объявленная длина используется как размер чанка. Если клиент завершает поток, не передав все данные, HAProxy возвращает соединение в пул в рассинхронизированном состоянии, где объявленный чанк больше фактически записанных байтов.
Как работает атака
Атакующий отправляет HTTP/3-запрос без заголовка Content-Length, но с DATA-фреймом, в котором объявлена длина, превышающая реальный объём данных. После отправки части данных он закрывает поток.
HAProxy транслирует это на бэкенд как HTTP/1.1-запрос с chunked encoding, где размер чанка соответствует объявленной в QUIC длине. Поскольку данные не дошли, соединение в пуле остаётся в состоянии, ожидающем дополнительные байты. Следующий запрос другого пользователя, использующий это соединение, будет интерпретирован как продолжение тела атакующего запроса.
Условия успешной эксплуатации
Для успешной эксплуатации необходимо соблюдение ряда строгих условий, что объясняет высокую сложность атаки (AC:H).
- HAProxy должен быть собран с поддержкой QUIC.
- Конфигурация должна включать QUIC bind listener.
- Трафик должен транслироваться на бэкенд по HTTP/1.1.
- На бэкенде должен использоваться chunked transfer coding.
- Должно происходить повторное использование соединений (connection reuse) в пуле бэкенда.
Возможный сценарий атаки
Сценарий предполагает, что атакующий находит момент, когда соединение в пуле бэкенда будет переиспользовано. Он отправляет «несовершенный» запрос через HTTP/3, который рассинхронизирует соединение.
Когда легитимный пользователь отправляет запрос, который попадает на это же соединение, его данные (включая строку запроса и заголовки Authorization) поглощаются как тело запроса атакующего. Это позволяет атакующему обойти правила
http-request deny на основе пути, так как «смуггл-запрос» не проходит через анализатор HTTP HAProxy.Есть ли публичный эксплойт
Публичный эксплойт в виде готового PoC или подтверждённой эксплуатации в реальных атаках в переданных источниках не указан. Официальные ссылки ведут на коммит исправления и CHANGELOG, что подтверждает наличие технического описания и патча.
Отсутствие сведений о массовой эксплуатации не означает, что эксплойт недоступен. Механизм описан детально, что позволяет разработать PoC при наличии целевой конфигурации.
Признаки эксплуатации
Специфичные IOC для этой уязвимости в источниках не раскрыты. Общие признаки аномалий в логах HAProxy или бэкенда могут включать неожиданные 400/404 ошибки или потерю запросов, но они неспецифичны.
- Несоответствие между длиной тела запроса и фактическими данными в логах бэкенда.
- Внезапное увеличение количества ошибок 400 Bad Request на бэкенде.
- Запросы, которые не логируются в HAProxy, но присутствуют в логах бэкенда.
Как обнаружить атаку
Обнаружение затруднено из-за природы request smuggling. Рекомендуется мониторинг логов бэкенда на предмет аномальных запросов, которые не имеют соответствующих записей в логах фронтенда.
- Сравнение логов HAProxy и бэкенда по идентификаторам сессий или временным меткам.
- Поиск запросов с некорректным chunked encoding в логах бэкенда.
- Мониторинг аномальной нагрузки на пул соединений.
Как проверить свою версию
Для проверки установленной версии HAProxy в Ubuntu используйте следующие команды. Замените
<имя-пакета> на haproxy.
Bash:
cat /etc/os-release
uname -r
apt-cache policy haproxy
ubuntu-security-status
Команда
apt-cache policy haproxy покажет установленную и доступную версии пакета. Сравните её с версиями, указанными в разделе «Какие продукты и версии затронуты».Исправление
Основной способ устранения — обновление пакета
haproxy до версии, содержащей исправление. Официальный коммит исправления доступен в репозитории HAProxy.- Обновите пакет через
apt update && apt upgrade haproxy.
- Убедитесь, что версия HAProxy не входит в диапазон 3.3.0–3.4.4 или 3.5-dev1–3.5-dev5.
- Если обновление невозможно, рассмотрите временные меры, описанные ниже.
Временные меры защиты
Если обновление отложено, можно снизить риск, изменив конфигурацию.
- Отключите поддержку QUIC/HTTP/3, если она не требуется.
- Отключите повторное использование соединений (connection reuse) на бэкенде.
- Избегайте использования chunked transfer coding на бэкенде, если это возможно.
- Ограничьте доступ к HTTP/3-интерфейсу по IP-адресам или через WAF.
Как проверить устранение уязвимости
После обновления проверьте версию пакета и статус безопасности.
Bash:
apt-cache policy haproxy
ubuntu-security-status
Убедитесь, что версия пакета не входит в уязвимый диапазон. Проверьте логи HAProxy на предмет ошибок после перезапуска сервиса.
Вывод
CVE-2026-90678 представляет серьёзный риск для конфигураций HAProxy с HTTP/3 и HTTP/1.1-бэкендами. Хотя атака сложна и не детерминирована, её последствия (обход правил, перехват данных) критичны. Администраторам Ubuntu рекомендуется проверить конфигурацию и обновить пакет
haproxy до актуальной версии.Официальные источники
История обновлений статьи
- 17.09.2026 — Опубликована первая версия материала.
