CVE-2026-18924 в Ubuntu: use-after-free в libcurl при обработке HTTP/2 Server Push

CVE: CVE-2026-18924
Продукт: Ubuntu
Дата публикации: 06.09.2026
Критичность: CRITICAL
CVSS: 9.1 (3.1)
EPSS: 0,61%; процентиль 47,13%
CISA KEV: нет подтверждения в каталоге CISA KEV

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


В libcurl обнаружена ошибка use-after-free, возникающая при обработке потоков HTTP/2 Server Push в режиме совместного использования соединений. Дефект затрагивает пакеты curl и libcurl в нескольких версиях Ubuntu, включая LTS-релизы, поддерживаемые через ESM. В материале описана механика срабатывания, перечень уязвимых версий и порядок проверки состояния системы.

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


Уязвимость связана с обращением к освобожденной памяти в клиентской библиотеке при специфической конфигурации обработки HTTP/2. Риск оценивается как критический из-за возможности удаленного воздействия без аутентификации.

  • Классификация: CWE-416 (Use After Free). Ошибка возникает в процессе очистки ресурсов, связанных с потоками Server Push.
  • CVSS 3.1: 9.1 (CRITICAL). Вектор: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H. Высокое влияние на целостность и доступность, отсутствие требований к привилегиям.
  • EPSS: 0,61% (процентиль 47,13%). Вероятность эксплуатации в ближайшие 30 дней оценивается как низкая, но ненулевая.
  • Статус: CVE находится в статусе «Undergoing Analysis». Публичный отчет на HackerOne подтверждает факт обнаружения и передачи информации разработчикам.

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


Уязвимость затрагивает исходный пакет curl и связанные бинарные компоненты в нескольких версиях Ubuntu. Список включает текущие LTS-релизы и старые версии, поддерживаемые через Ubuntu Pro (ESM).

  • Ubuntu 26.04 LTS (resolute): curl 8.18.0-1ubuntu2.5, libcurl4t64 8.18.0-1ubuntu2.5, libcurl3t64-gnutls 8.18.0-1ubuntu2.5.
  • Ubuntu 24.04 LTS (noble): curl 8.5.0-2ubuntu10.13, libcurl4t64 8.5.0-2ubuntu10.13, libcurl3t64-gnutls 8.5.0-2ubuntu10.13.
  • Ubuntu 22.04 LTS (jammy): curl 7.81.0-1ubuntu1.27, libcurl4 7.81.0-1ubuntu1.27, libcurl3-gnutls 7.81.0-1ubuntu1.27, libcurl3-nss 7.81.0-1ubuntu1.27.
  • Ubuntu 20.04 LTS (focal, ESM): curl 7.68.0-1ubuntu2.25+esm7 и связанные библиотеки.
  • Ubuntu 18.04 LTS (bionic, ESM): curl 7.58.0-2ubuntu3.24+esm12 и связанные библиотеки.
  • Ubuntu 16.04 LTS (xenial, ESM): curl 7.47.0-1ubuntu2.19+esm18 и связанные библиотеки.
  • Ubuntu 14.04 LTS (trusty, ESM): curl 7.35.0-1ubuntu2.20+esm22 и связанные библиотеки.

Полный перечень бинарных пакетов и их статусов доступен в официальном отчете Ubuntu.

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


Дефект связан с некорректным управлением жизненным циклом объектов в модуле обработки HTTP/2. Ошибка проявляется при работе с потоками Server Push, если родительский обработчик (handle) настроен на совместное использование соединений с другими обработчиками.

В процессе очистки (cleanup) ресурсов, ассоциированных с такими потоками, происходит обращение к памяти, которая уже была освобождена. Это классический сценарий use-after-free: указатель продолжает использоваться после вызова функции освобождения, что приводит к повреждению структуры данных или потенциальному выполнению произвольного кода.

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


Атакующий взаимодействует с приложением, использующим уязвимую версию libcurl, через сетевой интерфейс. Для реализации атаки не требуется аутентификация или взаимодействие с пользователем.

Механизм срабатывания зависит от конфигурации приложения: родительский обработчик libcurl должен быть настроен на шаринг соединений. При обработке специально сформированного ответа сервера, содержащего потоки HTTP/2 Server Push, библиотека переходит к этапу очистки ресурсов. На этом этапе срабатывает ошибка use-after-free, что позволяет атакующему повлиять на состояние памяти процесса.

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


Для успешной эксплуатации необходимо соблюдение ряда технических условий, связанных с конфигурацией приложения и сетевым окружением.

  • Версия библиотеки: Приложение использует уязвимую версию libcurl, указанную в списке затронутых продуктов.
  • Конфигурация libcurl: Родительский обработчик (parent handle) настроен на совместное использование соединений (share connections) с другими обработчиками.
  • Поддержка HTTP/2: Приложение и сервер поддерживают протокол HTTP/2.
  • Функция Server Push: Сервер отправляет потоки HTTP/2 Server Push, которые обрабатываются клиентской библиотекой.

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


Сценарий начинается с того, что уязвимое приложение инициирует соединение с удаленным сервером, поддерживающим HTTP/2. Атакующий контролирует этот сервер или перехватывает трафик, чтобы отправить специфический набор заголовков и данных Server Push.

При получении этих данных libcurl обрабатывает потоки. После завершения обработки или при закрытии соединения запускается процесс очистки ресурсов.

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

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


Существует публичный отчет об уязвимости, опубликованный на платформе HackerOne (отчет 3916059). Это подтверждает, что уязвимость была обнаружена и передана разработчикам.

Статус CVE в NVD — «Undergoing Analysis», что означает, что окончательная оценка и детали могут быть уточнены. Наличие отчета на HackerOne свидетельствует о техническом описании и, вероятно, PoC (proof of concept), однако подтвержденная массовая эксплуатация в реальных атаках на данный момент не зафиксирована в каталоге CISA KEV.

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


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

  • Аномальные сетевые соединения: Необычные исходящие соединения из процессов, использующих libcurl, на нестандартные порты или IP-адреса.
  • Сегфолты (Segfaults): Частые падения процессов с ошибками сегментации, особенно при обработке HTTP/2-трафика.
  • Изменение целостности бинарников: Проверка контрольных сумм пакетов curl и libcurl на соответствие официальным репозиториям Ubuntu.

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


Для обнаружения потенциальной эксплуатации или аномального поведения, связанного с CVE-2026-18924, рекомендуется использовать следующие методы мониторинга.

  • Мониторинг журналов приложений: Анализ логов приложений, использующих libcurl, на предмет ошибок памяти, аварийных остановок или необычных сообщений об ошибках при обработке HTTP/2.
  • Сетевой анализ: Использование IDS/IPS для отслеживания аномальных паттернов HTTP/2 Server Push, которые могут быть использованы для триггера уязвимости.
  • Мониторинг целостности системы: Регулярная проверка установленных версий пакетов curl и libcurl на соответствие исправленным версиям.

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


Для проверки текущей версии установленных пакетов curl и libcurl в системе Ubuntu используйте следующие команды. Замените <имя-пакета> на конкретное имя пакета (например, curl, libcurl4, libcurl3-gnutls), если требуется проверка конкретного компонента.

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

# Проверка версии ядра
uname -r

# Проверка версии установленного пакета curl
apt-cache policy curl

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

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

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


Основным и рекомендуемым методом устранения уязвимости является обновление пакетов curl и связанных библиотек libcurl до исправленных версий, предоставленных в официальных репозиториях Ubuntu.

  • Для Ubuntu 22.04 LTS, 24.04 LTS и 26.04 LTS: Выполните стандартное обновление системы через apt.
  • Для Ubuntu 18.04 LTS, 20.04 LTS и более старых версий: Требуется активная подписка Ubuntu Pro (ESM) для получения обновлений безопасности. Убедитесь, что подписка активна, и выполните обновление.

Bash:
# Обновление пакетов
dpkg --list | grep curl
sudo apt update
sudo apt upgrade curl libcurl4 libcurl3-gnutls

После обновления перезапустите приложения, использующие libcurl, чтобы изменения вступили в силу.

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


Пока обновление не установлено, можно рассмотреть следующие временные меры для снижения риска, хотя они не устраняют уязвимость полностью.

  • Отключение HTTP/2: Если конфигурация приложения позволяет, отключите поддержку HTTP/2 в клиенте libcurl, чтобы избежать обработки потоков Server Push.
  • Изоляция приложений: Ограничьте сетевой доступ для приложений, использующих уязвимую версию libcurl, только к доверенным серверам.
  • Мониторинг: Усиленный мониторинг процессов, использующих libcurl, на предмет аномального поведения и падений.

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


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

  • Проверка версий пакетов: Используйте команду apt-cache policy curl и аналогичные для других пакетов libcurl, чтобы убедиться, что установлена версия, отличная от уязвимых.
  • Проверка статуса безопасности: Выполните ubuntu-security-status для подтверждения, что все известные уязвимости в системе устранены.
  • Тестирование: Проведите функциональное тестирование приложений, использующих libcurl, для подтверждения корректной работы после обновления.

Вывод​


CVE-2026-18924 представляет собой критическую уязвимость в libcurl, требующую оперативного внимания администраторов Ubuntu.

Несмотря на низкую текущую вероятность эксплуатации (EPSS 0,61%), высокий CVSS-скор (9.1) и возможность удаленного воздействия делают обновление пакетов приоритетной задачей.

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

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


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

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


  • 10.09.2026 — Опубликована первая версия материала.
  • 11.09.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
 
Последнее редактирование:
Назад
Верх Низ