CVE: CVE-2026-18924
Продукт: Ubuntu
Дата публикации: 06.09.2026
Критичность: CRITICAL
CVSS: 9.1 (3.1)
EPSS: 0,61%; процентиль 47,10%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В libcurl обнаружен дефект, приводящий к use-after-free при обработке потоков HTTP/2 Server Push в режиме общего использования соединений. Уязвимость затрагивает широкий спектр версий Ubuntu, включая LTS-релизы и системы, поддерживаемые через Ubuntu Pro. В материале описаны технические причины ошибки, условия эксплуатации и порядок проверки установленных пакетов.
Основные характеристики
Дефект позволяет нарушителю повлиять на память процесса, использующего libcurl, что может привести к выполнению кода или сбою службы. Риск оценивается как критический, поскольку атака возможна удалённо без предварительной аутентификации.
- Тип ошибки: CWE-416 (Use After Free). Обращение к освобождённой памяти приводит к непредсказуемому поведению программы.
- CVSS: 9.1 (CRITICAL). Вектор:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H. Высокая оценка обусловлена удалённым доступом и отсутствием требований к пользователю.
- Эксплуатация: Подтверждена через HackerOne, но массовая эксплуатация в дикой природе не зафиксирована.
- EPSS: 0,61% (процентиль 47,10%). Вероятность эксплуатации в ближайшие 30 дней оценивается как низкая, но не нулевая.
Какие продукты и версии затронуты
Уязвимость затрагивает пакет
curl и связанные библиотеки libcurl в дистрибутивах Ubuntu. Список включает как текущие LTS-релизы, так и версии, поддерживаемые через Ubuntu Pro (ESM).- Ubuntu 26.04 LTS (resolute):
curl8.18.0-1ubuntu2.5,libcurl3t64-gnutls,libcurl4t64.
- Ubuntu 24.04 LTS (noble):
curl8.5.0-2ubuntu10.13,libcurl3t64-gnutls,libcurl4t64.
- Ubuntu 22.04 LTS (jammy):
curl7.81.0-1ubuntu1.27,libcurl3-gnutls,libcurl3-nss,libcurl4.
- Ubuntu 20.04 LTS (focal, ESM):
curl7.68.0-1ubuntu2.25+esm7,libcurl3-gnutls,libcurl3-nss,libcurl4.
- Ubuntu 18.04 LTS (bionic, ESM):
curl7.58.0-2ubuntu3.24+esm12,libcurl3-gnutls,libcurl3-nss,libcurl4.
- Ubuntu 16.04 LTS (xenial, ESM):
curl7.47.0-1ubuntu2.19+esm18,libcurl3,libcurl3-gnutls,libcurl3-nss.
- Ubuntu 14.04 LTS (trusty, ESM):
curl7.35.0-1ubuntu2.20+esm22,libcurl3,libcurl3-gnutls,libcurl3-nss.
Причина уязвимости
Причина дефекта кроется в некорректном управлении жизненным циклом объектов при обработке потоков HTTP/2 Server Push. Если родительский обработчик (handle) настроен на шаринг соединений с другими обработчиками, возникает конфликт в очистке ресурсов.
В процессе очистки (cleanup) libcurl обращается к памяти, которая уже была освобождена ранее. Это классический сценарий use-after-free: указатель продолжает использоваться после вызова
free() или аналогичной операции. В результате нарушается целостность структуры данных, что может быть использовано для перезаписи указателей и управления потоком выполнения программы.Как работает атака
Атака реализуется через сетевой канал. Злоумышленник отправляет специально сформированный HTTP/2-запрос, инициирующий Server Push. Ключевым условием является использование клиентом libcurl в режиме, где соединения разделяются между несколькими обработчиками.
При обработке такого потока libcurl попадает в ветку кода, где происходит преждевременное освобождение памяти, связанной с потоком. Последующее обращение к этой памяти в процессе очистки соединения приводит к повреждению кучи. Атакующий может контролировать содержимое освобождённого блока, чтобы подменить указатели на функции или данные, что в итоге приводит к выполнению произвольного кода в контексте процесса, использующего libcurl.
Условия успешной эксплуатации
Для успешной эксплуатации уязвимости необходимо соблюдение ряда условий, связанных с конфигурацией клиента и сетевым доступом.
- Доступ к клиенту: Атакующий должен иметь возможность отправлять HTTP/2-запросы на уязвимый сервис или приложение, использующее libcurl.
- Конфигурация libcurl: Клиент должен быть настроен на использование HTTP/2 и иметь активный режим шаринга соединений (shared connections) между обработчиками.
- Отсутствие защиты: Сервер или прокси, стоящий перед приложением, не должен отсекать или модифицировать HTTP/2 Server Push таким образом, чтобы предотвратить срабатывание дефекта.
Возможный сценарий атаки
Типичный сценарий предполагает, что уязвимое приложение (например, веб-сервер или бот) делает исходящие HTTP/2-запросы к внешнему ресурсу, управляемому атакующим. Атакующий сервер отправляет клиенту Server Push с аномальными параметрами.
Клиент libcurl обрабатывает эти данные и, из-за ошибки в логике очистки при шаринге соединений, обращается к освобождённой памяти. Если атакующему удалось подготовить кучу (heap grooming), он может перехватить управление процессом. Результатом становится выполнение кода атакующего, что позволяет ему получить доступ к данным приложения или установить бэкенд-доступ к системе.
Есть ли публичный эксплойт
Существует публичный отчёт об уязвимости на платформе HackerOne, что подтверждает наличие технического описания и, вероятно, PoC (Proof of Concept). Однако в доступных официальных источниках нет данных о массовой эксплуатации в реальных атаках или о появлении готовых эксплойтов в публичных репозиториях.
Наличие отчёта на HackerOne означает, что уязвимость была обнаружена и передана разработчикам. Отсутствие сведений о массовом использовании не гарантирует, что эксплойт не существует, но указывает на то, что он пока не стал широко доступным инструментом для атакующих.
Признаки эксплуатации
Специфичных индикаторов компрометации (IOC) именно для CVE-2026-18924 в доступных источниках не опубликовано. Поэтому для мониторинга следует использовать общие признаки аномального поведения приложений, использующих libcurl.
- Сегфолты (Segfaults): Внезапные падения процессов, использующих libcurl, особенно при обработке HTTP/2-трафика.
- Аномальные исходящие соединения: Необычные запросы к внешним ресурсам, которые не соответствуют логике работы приложения.
- Изменение целостности бинарников: Если в системе обнаружены новые файлы или модифицированные библиотеки, связанные с curl, это может указывать на успешную эксплуатацию.
Как обнаружить атаку
Обнаружение атаки затруднено из-за отсутствия специфичных сигнатур. Рекомендуется внедрить мониторинг на уровне приложений и сети.
- Логи приложений: Анализ логов на предмет ошибок памяти (memory errors), core dump'ов или нештатных завершений процессов.
- Сетевой анализ: Мониторинг HTTP/2-трафика на предмет аномальных Server Push-сообщений, особенно если приложение не должно их получать.
- Инструменты защиты: Использование WAF или сетевых шлюзов, способных фильтровать подозрительные HTTP/2-запросы, может снизить риск успешной атаки.
Как проверить свою версию
Для проверки версии установленных пакетов curl и libcurl в Ubuntu используйте следующие команды. Замените
<имя-пакета> на конкретное имя пакета (например, curl или libcurl4), если требуется проверка конкретного компонента.
Bash:
cat /etc/os-release
uname -r
apt-cache policy curl
ubuntu-security-status
Команда
apt-cache policy curl покажет установленную версию и доступные обновления. ubuntu-security-status поможет проверить, есть ли для системы критические обновления безопасности.Исправление
Единственным надёжным способом устранения уязвимости является обновление пакетов
curl и libcurl до версий, содержащих исправление. Для систем, поддерживаемых через Ubuntu Pro (ESM), обновления доступны в соответствующих репозиториях.- Обновление пакетов: Выполните
sudo apt update && sudo apt upgradeдля установки последних версий пакетов.
- Ubuntu Pro: Если вы используете ESM-релизы (14.04, 16.04, 18.04, 20.04), убедитесь, что подписка активна и обновления загружаются из ESM-репозиториев.
- Перезапуск сервисов: После обновления перезапустите все сервисы, использующие libcurl, чтобы изменения вступили в силу.
Временные меры защиты
Пока обновление не установлено, можно снизить риск, ограничив использование уязвимых функций libcurl.
- Отключение HTTP/2: Если возможно, настройте приложения на использование только HTTP/1.1. Это исключит срабатывание дефекта, связанного с Server Push.
- Ограничение шаринга соединений: Измените конфигурацию приложений, чтобы избежать использования shared connections между обработчиками libcurl, если это технически допустимо.
- Сетевые фильтры: Настройте WAF или прокси для блокировки HTTP/2 Server Push, если приложение не использует эту функциональность.
Как проверить устранение уязвимости
После обновления пакетов необходимо убедиться, что уязвимые версии более не присутствуют в системе.
- Проверка версий: Используйте
apt-cache policy curlиdpkg -l | grep curlдля подтверждения, что установлены исправленные версии.
- Тестирование: Проведите функциональное тестирование приложений, чтобы убедиться, что они корректно работают с новыми версиями библиотек.
- Мониторинг: Продолжайте отслеживать логи на предмет аномального поведения в течение нескольких дней после обновления.
Вывод
CVE-2026-18924 представляет собой серьёзную угрозу для систем, использующих libcurl в режиме HTTP/2 с шарингом соединений. Высокий CVSS-скор и возможность удалённой атаки делают обновление пакетов приоритетной задачей. Администраторам Ubuntu следует проверить версии установленных пакетов, применить доступные обновления и при необходимости временно ограничить использование HTTP/2 Server Push до полного устранения уязвимости.
Официальные источники
История обновлений статьи
- 10.09.2026 — Опубликована первая версия материала.
