VMTech
Обсудить проект →

curl устранил уязвимость HTTP/2-загрузок с риском выполнения кода

curl устранил уязвимость HTTP/2-загрузок с риском выполнения кода

Проект curl выпустил версию 8.23.0 с исправлением CVE-2026-92392 — ошибки use-after-free в обработке HTTP/2-загрузок. Уязвимость затрагивает curl и библиотеку libcurl версий с 8.12.0 по 8.22.0; исследователь показал в PoC возможность выполнения кода на машине клиента, который отправляет файл на контролируемый сервер.

curl присвоил проблеме уровень High по собственной четырёхуровневой шкале и сократил цикл выпуска с восьми до шести недель. Это первая High-уязвимость проекта после переполнения кучи в SOCKS5, исправленного в октябре 2023 года. В релиз 8.23.0 вошли исправления 24 CVE, остальные 23 получили уровень Low.

Как возникает ошибка при загрузке по HTTP/2

Атака исходит от сервера, принимающего загрузку. Клиент должен отправлять файл размером примерно 135 КБ или больше по HTTP/2, а сертификат сервера должен успешно пройти проверки клиента. Для HTTPS libcurl по умолчанию согласовывает HTTP/2, если сервер предлагает этот протокол и библиотека собрана с его поддержкой.

Во время передачи сервер может остановить поток, установив HTTP/2-окно в ноль, частично вернуть ответ и затем сбросить поток, не закрывая соединение. libcurl пытается повторить передачу. В уязвимой последовательности очистки HTTP/2-слой раньше времени терял сведения о текущей передаче, а неотправленные данные загрузки всё ещё сбрасывались в то же соединение.

Эти байты могли интерпретироваться как новый запрос и открыть поток, сохраняющий указатель на объект easy handle. Повторная попытка завершалась через новое HTTP/1.1-соединение, приложение освобождало объект, но старое соединение продолжало хранить указатель и могло использовать его после освобождения памяти.

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

Для выполнения кода злоумышленнику необходимо знать точную версию curl, архитектуру, используемый libc-аллокатор и раскладку кучи. В описанном сценарии также требуются синхронизация двух параллельных передач и полезная нагрузка размером около 23 байтов. Даниэль Стенберг отметил, что наиболее вероятным итогом попытки атаки будет сбой приложения, поэтому проблема не получила критический уровень.

Исправление подготовил Штефан Эйссинг: в lib/multi.c изменён порядок операций, и HTTP/2-слой теперь освобождает ссылки на handle после сброса оставшихся данных загрузки. Проверяемый контекст подобных уязвимостей даёт ошибка curl среди заметных угроз недели, где ошибка curl рассматривается среди других заметных угроз недели.

Помимо 8.23.0, доступны исправленные версии старых веток: 8.14.3, 8.16.2 и 8.20.2. В Debian 13 исправление поставляется через DSA-6558-1; Debian 12 не содержит уязвимый код. Сообщений об атаках с использованием CVE-2026-92392 нет.

Что проверить организациям

Если обновление пока невозможно, curl рекомендует отключить HTTP/2 для таких сценариев: утилита curl принимает параметр --http1.1, а приложения с libcurl могут установить CURLOPT_HTTP_VERSION в значение CURL_HTTP_VERSION_1_1. Эта настройка является запросом, поскольку библиотека способна повторно использовать уже существующее соединение с другой версией протокола.

Практический шаг для бизнеса — найти зависимости curl и libcurl в приложениях и образах, обновить уязвимые сборки либо временно ограничить HTTP/2 при загрузках на внешние HTTPS-серверы. Отдельно стоит проверить, включена ли поддержка HTTP/2 при сборке: без неё описанный путь атаки недоступен.

#curl#httpsecurity#vulnerability#libcurl
Открытая аналитика
На сайте 2 просмотров
мин чтения 4 14.10.2026
Instagram

curl устранил уязвимость HTTP/2-загрузок с риском выполнения кода

Открыть публикацию в Instagram ↗