Релиз curl 8.23.0 закрыл одну из самых опасных ошибок последних лет: уязвимость CVE-2026-92392, связанную с обработкой HTTP/2. Для обычного пользователя это не повод паниковать, но для разработчиков, администраторов и всех, кто использует libcurl в своих сервисах, новость важная.

Проблема затронула код на C, где ошибки работы с памятью могут обернуться не только падением программы, но и захватом управления. В curl нашли именно такой случай: висячий указатель оставался после освобождения памяти, а затем программа снова обращалась к уже пустому месту.

Что это за уязвимость

Речь идёт о классе ошибок use-after-free — «использование после освобождения». Программа уже отдала участок памяти системе, но продолжила считать, что данные там ещё живы.

В curl это случилось в цепочке обработки HTTP/2-загрузок. Если сервер и клиент сходились на HTTP/2, библиотека могла потерять корректную связь между потоком данных и объектом, который его обслуживал.

Итог — опасная путаница в памяти. В лучшем случае всё заканчивалось аварийным завершением, в худшем — появлялась возможность подменить управление потоком выполнения.

Как это работало технически

HTTP/2 умеет вести несколько передач по одному соединению. Для этого curl использует два уровня объектов: easy handle для отдельной передачи и multi handle для управления несколькими потоками сразу.

Сбой возникал в момент, когда передача завершалась с ошибкой, а приложение уже освобождало easy handle. Внутри libcurl при этом оставалась ссылка на него, и позже библиотека могла снова обратиться к уже удалённому объекту.

Дальше всё развивалось неприятно: libcurl принимала данные, записывала их в область, где раньше лежал handle, и затем пыталась вызвать функцию через перезаписанный указатель. Именно так ошибка памяти превращалась в потенциальное удалённое выполнение кода.

Подобные баги особенно опасны в инфраструктурном софте. Мы уже видели, как похожие дыры бьют по серверным компонентам в историях вроде уязвимости в Ghostscript или цепочки ошибок в OpenBSD.

Почему это опасно

Сама по себе ошибка ещё не означает немедленный взлом. Но если злоумышленник может управлять содержимым памяти и последовательностью выделений, шанс на успешную атаку растёт.

Разработчики curl отдельно отмечают, что на практике собрать рабочую атаку сложно. Нужны подходящий размер выгрузки, определённая архитектура, совпадение поведения TLS и HTTP/2, а также удачная раскладка памяти в конкретной системе.

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

Как понять, касается ли это вас

Если вы просто пользуетесь браузером, мессенджерами или обычными сайтами, угроза для вас косвенная. Гораздо больше рискуют те, кто собирает приложения с libcurl, запускает сетевые сервисы или встраивает эту библиотеку в свои продукты.

Проверьте, не используется ли curl или libcurl в вашем программном стеке, контейнерах, CI/CD-сборках и серверных утилитах. Если да, версия 8.23.0 и новее уже закрывает проблему.

Отдельно стоит проверить сборки, где библиотека входит в состав сторонних пакетов. Такие баги часто живут не в самом приложении, а в зависимости, о которой вспоминают только после инцидента.

Как защититься

Первый шаг простой: обновить curl и libcurl до версии 8.23.0 или новее. Это тот случай, когда затягивать не стоит.

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

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

Что сделать прямо сейчас

  • Проверить, использует ли ваш софт curl или libcurl.
  • Обновить curl до версии 8.23.0 или новее.
  • Обновить пакеты и образы, где библиотека идёт зависимостью.
  • Пересобрать сервисы, если curl встроен в ваш стек.
  • Проверить, нет ли сбоев и падений в логах после работы с HTTPS и HTTP/2.
  • Для рабочих устройств заранее настроить защиту сетевого трафика через freedome.space как один из слоёв против пассивного перехвата.
Поделиться: