CVE-2026-90678 в Ubuntu: HTTP request smuggling через QUIC, уязвимые версии и защита

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 до актуальной версии.

Официальные источники​


  1. NVD — CVE-2026-90678
  2. Ubuntu OSV — CVE-2026-90678
  3. FIRST EPSS — CVE-2026-90678

История обновлений статьи​


  • 17.09.2026 — Опубликована первая версия материала.
 
Назад
Верх Низ