CVE-2026-19773 в Ubuntu: критический RCE в libwebsockets, уязвимые версии и порядок обновления

CVE: CVE-2026-19773
Продукт: Ubuntu
Дата публикации: 15.09.2026
Критичность: CRITICAL
CVSS: 9.8 (3.0)
EPSS: 0,65%; процентиль 49,25%
CISA KEV: нет подтверждения в каталоге CISA KEV

Краткое описание​


В libwebsockets обнаружена критическая уязвимость, позволяющая удалённым атакующим выполнять произвольный код без аутентификации. Ubuntu выпустила обновления для всех поддерживаемых LTS-релизов. Статья разбирает механику атаки, затронутые версии пакетов и безопасные шаги по проверке и исправлению системы.

Основные характеристики​


Уязвимость позволяет злоумышленнику удалённо выполнить произвольный код на сервере, использующем libwebsockets, без необходимости аутентификации. Это создаёт прямой риск полной компрометации веб-сервисов.

  • Тип ошибки: CWE-787 (Out-of-bounds write). Ошибка записи за пределы выделенного буфера при парсинге HTTP/2.
  • CVSS 3.0: 9.8 (CRITICAL). Вектор: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H. Высокая оценка отражает удалённый доступ, простоту эксплуатации и полное воздействие на конфиденциальность, целостность и доступность.
  • Условия атаки: Удалённый доступ (Network), низкая сложность (Low), аутентификация не требуется (None), пользовательское взаимодействие не требуется (None).
  • Эксплуатация: Подтверждена Zero Day Initiative (ZDI). Номер инцидента: ZDI-CAN-31036.
  • EPSS: 0,65% (процентиль 49,25%). Вероятность эксплуатации в ближайшие 30 дней оценивается как низкая, но наличие публичного PoC повышает приоритет патча.

Какие продукты и версии затронуты​


Ubuntu подтвердила уязвимость пакета libwebsockets для всех поддерживаемых LTS-релизов. Обновления доступны через стандартные репозитории безопасности.

Затронутые версии исходного пакета libwebsockets:

  • Ubuntu 16.04 LTS (xenial): версия 1.7.1-1. Бинарные пакеты: libwebsockets7, libwebsockets-test-server, libwebsockets-test-server-common.
  • Ubuntu 18.04 LTS (bionic): версия 2.0.3-3build1. Бинарные пакеты: libwebsockets8, libwebsockets-test-server, libwebsockets-test-server-common.
  • Ubuntu 20.04 LTS (focal, ESM): версия 3.2.1-3ubuntu0.1~esm1. Бинарные пакеты: libwebsockets15, libwebsockets-test-server, libwebsockets-test-server-common.
  • Ubuntu 22.04 LTS (jammy): версия 4.0.20-2ubuntu1.1. Бинарные пакеты: libwebsockets16, libwebsockets-test-server, libwebsockets-test-server-common.
  • Ubuntu 24.04 LTS (noble, ESM): версия 4.3.3-1.1ubuntu0.1~esm1. Бинарные пакеты: libwebsockets19t64, libwebsockets-evlib-*, libwebsockets-test-server, libwebsockets-test-server-common.
  • Ubuntu 26.04 LTS (resolute): версия 4.3.5-3ubuntu1. Бинарные пакеты: libwebsockets19t64, libwebsockets-evlib-*, libwebsockets-test-server, libwebsockets-test-server-common.

Обратите внимание: для релизов 20.04 и 24.04 обновления могут требовать подписки Ubuntu Pro (ESM).

Причина уязвимости​


Причина уязвимости кроется в модуле парсинга заголовков HTTP/2, использующем сжатие HPACK. При обработке поля path в заголовке запроса библиотека некорректно валидирует длину входных данных.

Отсутствие проверки границ приводит к записи данных за пределы выделенного буфера (Out-of-Bounds Write). Это позволяет атакующему перезаписать критические структуры памяти, что в конечном итоге приводит к выполнению произвольного кода в контексте процесса, использующего libwebsockets.

Как работает атака​


Атакующий направляет на уязвимый HTTP/2-сервер специально сформированный запрос. Ключевым элементом является заголовок path, закодированный в формате HPACK.

При декодировании этого заголовка функция парсинга в libwebsockets обрабатывает данные без должной проверки границ буфера. Запись происходит за пределы выделенной области памяти. Атакующий может контролировать содержимое записи, что позволяет ему изменить указатели функций или данные стека, подставив собственный код для выполнения.

Поскольку уязвимость находится в сетевом стеке парсинга, аутентификация не требуется. Достаточно, чтобы сервер принимал HTTP/2-соединения и обрабатывал заголовки через уязвимую версию библиотеки.

Условия успешной эксплуатации​


Для успешной эксплуатации уязвимости атакующему необходимо:

  • Доступ к сети: Сервер должен быть доступен извне или из внутренней сети, где находится атакующий.
  • Поддержка HTTP/2: Серверное приложение должно использовать libwebsockets с включённой поддержкой HTTP/2.
  • Отсутствие аутентификации: Эксплуатация возможна на этапе установления соединения или при обработке запроса до проверки прав доступа, если парсинг заголовков происходит заранее.
  • Уязвимая версия: Установлена одна из перечисленных выше версий пакета libwebsockets без патча.

Возможный сценарий атаки​


Типичный сценарий атаки начинается с отправки HTTP/2-запроса на целевой сервер. Запрос содержит заголовок path с аномальной структурой, которая при декодировании HPACK вызывает переполнение буфера.

После успешного переполнения атакующий получает контроль над потоком выполнения процесса. Это позволяет выполнить произвольный код, например, создать обратное соединение (reverse shell) или установить бэкдор. Поскольку аутентификация не требуется, атака может быть автоматизирована и запущена массово.

Важно: конкретный payload зависит от архитектуры системы и версии библиотеки, но общий принцип — манипуляция данными заголовка для нарушения целостности памяти.

Есть ли публичный эксплойт​


Zero Day Initiative (ZDI) подтвердила эксплуатацию уязвимости и присвоила ей номер ZDI-CAN-31036. Публично доступен технический отчёт и ссылка на исправляющий коммит в репозитории libwebsockets.

Наличие публичного PoC (Proof of Concept) означает, что атакующие могут легко воспроизвести атаку. Однако в каталоге CISA KEV (Known Exploited Vulnerabilities) CVE-2026-19773 на момент публикации данных не числится, что может указывать на то, что массовая эксплуатация в дикой природе пока не зафиксирована или не подтверждена CISA.

Признаки эксплуатации​


Специфичные индикаторы компрометации (IOC) для этой уязвимости не опубликованы в доступных источниках. Однако можно использовать общие признаки аномальной активности:

  • Аномальные HTTP/2-запросы: Запросы с некорректно закодированными заголовками HPACK, особенно в поле path.
  • Сегфолты (Segfaults) в веб-сервере: Внезапное завершение процесса с ошибкой памяти при обработке определённых запросов.
  • Неожиданные процессы: Запуск интерпретаторов (bash, sh) или сетевых утилит из контекста веб-сервера.
  • Изменения в файловой системе: Создание новых файлов в каталогах веб-сервера или в /tmp.

Эти признаки неспецифичны и требуют корреляции с другими событиями безопасности.

Как обнаружить атаку​


Для обнаружения атаки рекомендуется:

  • Мониторинг логов веб-сервера: Искать запросы, вызывающие ошибки парсинга или сегфолты. В логах libwebsockets могут появляться сообщения о некорректных данных.
  • Сетевой анализ: Фильтрация HTTP/2-трафика на предмет аномальных заголовков. Использование WAF с поддержкой HTTP/2 для блокировки подозрительных запросов.
  • Мониторинг процессов: Использование EDR-агентов для отслеживания аномального поведения процессов, использующих libwebsockets.
  • Регулярное сканирование: Проверка установленных версий пакетов на соответствие списку уязвимых версий.

Как проверить свою версию​


Для проверки текущей версии пакета libwebsockets на Ubuntu используйте следующие команды:

Bash:
# Проверка версии ОС
cat /etc/os-release

# Проверка версии ядра (для контекста)
uname -r

# Проверка версии установленного пакета libwebsockets
# Замените <имя-пакета> на фактическое имя бинарного пакета (например, libwebsockets16)
apt-cache policy libwebsockets

# Проверка статуса безопасности системы
ubuntu-security-status

Команда apt-cache policy покажет установленную версию и доступные обновления. Если версия совпадает с одной из уязвимых, перечисленных в разделе «Затронутые продукты», требуется обновление.

Исправление​


Единственный надёжный способ устранения уязвимости — обновление пакета libwebsockets до исправленной версии.

  1. Обновите систему:

    Bash:
    sudo apt update
    sudo apt upgrade
  2. Проверьте наличие обновлений для ESM (для 20.04/24.04):
    Если у вас нет подписки Ubuntu Pro, активируйте её или обновите через ESM-репозитории.
  3. Перезапустите сервисы:
    После обновления перезапустите все сервисы, использующие libwebsockets, чтобы загрузить новую версию библиотеки.

    Bash:
    sudo systemctl restart <имя-сервиса>

Обратитесь к официальному отчёту Ubuntu для получения точных номеров исправленных версий: Ubuntu Security Notice.

Временные меры защиты​


Пока обновление не установлено, можно применить временные меры:

  • Отключение HTTP/2: Если возможно, отключите поддержку HTTP/2 в конфигурации веб-сервера. Это уберёт вектор атаки, но снизит производительность.
  • Использование WAF: Настройте WAF для блокировки запросов с аномальными заголовками HTTP/2.
  • Ограничение доступа: Ограничьте доступ к серверу только из доверенных сетей, если это возможно.

Эти меры не устраняют уязвимость, но снижают вероятность успешной атаки.

Как проверить устранение уязвимости​


После обновления проверьте, что уязвимость устранена:

  1. Проверка версии пакета:

    Bash:
    apt-cache policy libwebsockets

    Убедитесь, что версия отличается от уязвимых, перечисленных выше.
  2. Проверка статуса безопасности:

    Bash:
    ubuntu-security-status

    Команда должна не показывать CVE-2026-19773 в списке уязвимостей.
  3. Функциональное тестирование:
    Убедитесь, что веб-сервисы работают корректно после обновления. Проведите регрессионное тестирование HTTP/2-функций, если они используются.

Вывод​


CVE-2026-19773 представляет критическую угрозу для всех систем, использующих libwebsockets с поддержкой HTTP/2. Наличие публичного PoC и отсутствие необходимости в аутентификации делают эту уязвимость приоритетной для патча.

Администраторам Ubuntu следует немедленно обновить пакет libwebsockets до исправленной версии, проверить статус безопасности системы и при необходимости применить временные меры защиты. Игнорирование этого обновления может привести к полной компрометации сервера.

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


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

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


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