Уязвимость в curl возрастом 25 лет: рекордные 18 CVE в релизе 8.21.0

📋 Кратко

В июне 2026 года разработчики curl выпустили рекордный патч, исправивший 18 уязвимостей за один релиз. Самая старая из них — CVE-2026-8932 — скрывалась в коде с марта 2001 года и позволяла обходить аутентификацию mTLS за счёт некорректного переиспользования соединений при смене клиентского сертификата. Уязвимость обнаружила ИИ-платформа AISLE. Разбираем технические детали, механизм эксплуатации и последствия для экосистемы безопасности приложений.

Иллюстрация к статье

В конце июня 2026 года экосистема безопасности приложений получила удар, который назревал четверть века. Разработчики curl — утилиты и библиотеки, установленной на более чем 30 миллиардах устройств по всему миру, — выпустили релиз 8.21.0, исправляющий рекордные 18 уязвимостей за один раз. Никогда прежде в истории проекта не закрывали столько дыр в одном обновлении.

Центральное место в этом списке занимает CVE-2026-8932 — уязвимость, которая впервые появилась в curl версии 7.7 от 22 марта 2001 года и оставалась необнаруженной более 25 лет. Она позволяет обходить взаимную аутентификацию TLS (mTLS) за счёт некорректного переиспользования соединений после смены клиентского сертификата или закрытого ключа. По сути, атакующий мог выдать себя за легитимного клиента, просто дождавшись, пока библиотека libcurl переиспользует уже установленное соединение после изменения учётных данных.

Это событие — не просто очередной CVE. Это сигнал о системных проблемах в фундаментальной инфраструктуре интернета. curl входит в состав операционных систем, контейнеров, сборочных пайплайнов, менеджеров пакетов, автомобильных систем и IoT-устройств. Большинство разработчиков даже не подозревают, что их приложения используют libcurl — она встроена в бесчисленное количество продуктов. Уязвимость в таком компоненте имеет эффект домино, затрагивая всю цепочку поставки программного обеспечения.

⚠ Ключевая статистика: curl используется на 30+ миллиардах устройств. Релиз 8.21.0 исправил 18 CVE — рекорд за всю 28-летнюю историю проекта. Уязвимость CVE-2026-8932 продержалась в коде 25 лет и 3 месяца — с 22 марта 2001 года по 24 июня 2026 года.
Иллюстрация к статье

CVE-2026-8932: механизм обхода аутентификации mTLS

Суть уязвимости CVE-2026-8932 заключается в логике управления соединениями внутри libcurl. Когда приложение использует взаимную аутентификацию TLS (mTLS), curl устанавливает защищённое соединение, при котором обе стороны предъявляют сертификаты. Проблема возникает при повторном использовании соединения: если клиент меняет сертификат или закрытый ключ, libcurl по-прежнему может извлечь из пула существующее соединение, созданное со старыми учётными данными.

Сценарий эксплуатации выглядит следующим образом:

  • Этап 1: Приложение аутентифицируется на сервере с использованием сертификата А и устанавливает mTLS-соединение.
  • Этап 2: Приложение меняет сертификат на сертификат Б (например, после ротации ключей или смены клиента).
  • Этап 3: При повторном запросе к тому же серверу libcurl извлекает из пула соединение, созданное с сертификатом А, и повторно использует его — сервер продолжает считать клиентом с сертификатом А.
  • Этап 4: Если сертификат А был скомпрометирован или отозван, атакующий получает доступ к ресурсам, используя старые учётные данные.

Эксплуатация уязвимости возможна как со стороны клиента (переиспользование соединения со старыми credentials), так и со стороны сервера, если серверная часть также использует libcurl для обратных вызовов. Официальный advisory от команды curl характеризует проблему как обход аутентификации средней степени серьёзности, однако в контексте mTLS-инфраструктур — систем непрерывной интеграции, API-шлюзов, микросервисных архитектур — потенциальный ущерб значительно выше.

🔬 Техническая деталь: Уязвимость затрагивает именно libcurl, а не утилиту командной строки curl. Это означает, что проблема существует внутри встроенных продуктов, где конечные пользователи не имеют прямой видимости и не могут самостоятельно установить патч. Особенно критично для IoT-устройств и встраиваемых систем, где обновление прошивки — сложный и редкий процесс.

Рекордный релиз curl 8.21.0: 18 CVE за один раз

24 июня 2026 года основатель и главный разработчик curl Даниэль Стенберг объявил о выпуске версии 8.21.0. В примечаниях к релизу перечислены 18 исправленных уязвимостей — абсолютный рекорд. Предыдущий максимум составлял 9 CVE в одном релизе (curl 7.84.0, август 2022 года).

Шесть из 18 CVE обнаружила платформа AISLE — ИИ-система, агностичная к модели, которая специализируется на поиске уязвимостей в коде. Следующая по результативности организация обнаружила 3 CVE. Исследователи, использующие Anthropic и OpenAI, нашли по 1 CVE каждая. Помимо CVE-2026-8932, команда AISLE выявила:

  • CVE-2026-8926 — путаница с учётными данными в .netrc: неверный пароль пользователя выбирался для того же хоста
  • CVE-2026-8925 — двойное освобождение памяти (double-free) GSASL-контекста в протоколах SASL
  • CVE-2026-9080 — use-after-free при вызове curl_easy_pause() внутри колбэка сокета
  • CVE-2026-9547 — некорректная проверка хоста SSH: отвергнутые типы серверных ключей принимались через libssh
  • CVE-2026-10536 — use-after-free при сбросе и очистке дескрипторов зависимостей HTTP/2

Кроме шести CVE, AISLE сообщила о трёх дополнительных проблемах безопасности памяти: чтении за пределами кучи (heap out-of-bounds read) в urlapi, а также use-after-free и double-free в обработке HSTS. Все находки были переданы через HackerOne и исправлены в релизе 8.21.0.

Волна обнаружений началась 11 мая 2026 года, когда Стенберг объявил, что модель Mythos от Anthropic (доступная на платформе Anthropic Cloud) нашла одну уязвимость. Это заявление спровоцировало лавину отчётов о безопасности, и в итоге число CVE достигло рекордных 18. Качественный состав уязвимостей говорит о том, что поверхностные проблемы в curl уже исправлены — новые ошибки сконцентрированы в тонких и редко используемых участках кода: работа с состоянием соединений, старые протокольные пути, граничные случаи переиспользования.

Роль ИИ в обнаружении: AISLE, Mythos и новая эра поиска уязвимостей

Рекордный релиз curl 8.21.0 примечателен не только числом CVE, но и тем, как они были найдены. Основной движущей силой стали ИИ-системы анализа кода. Производительность AISLE — 6 CVE — демонстрирует, что специализированные ИИ-агенты, агностичные к модели, способны находить ошибки эффективнее, чем человеческие исследователи или универсальные языковые модели.

AISLE использует мультиагентный подход: множество ИИ-агентов на разных моделях одновременно анализируют код, перекрёстно проверяют находки и верифицируют результаты. Каждый агент фокусируется на определённом классе уязвимостей — проблемы памяти, логические ошибки, некорректная обработка состояний. Это позволило обнаружить уязвимости в самых неочевидных местах: от mTLS-соединений до обработки зависимостей HTTP/2.

Важно отметить, что AISLE — не единственная ИИ-система, показавшая результат. Исследователи, использовавшие Anthropic Claude и OpenAI GPT, также нашли критические ошибки. Это подтверждает тренд: ИИ-ассистированный поиск уязвимостей становится стандартом в индустрии. Для проектов уровня curl — критической инфраструктуры — регулярное ИИ-сканирование должно стать обязательной практикой, а не разовой акцией.

Последствия для цепочки поставки и безопасности приложений

curl — это не просто утилита. Это инфраструктурный слой, от которого зависят миллионы приложений. Уязвимости в libcurl имеют каскадный эффект:

  • CI/CD-пайплайны: curl используется на каждом этапе — от загрузки зависимостей до деплоя артефактов. Скомпрометированный curl может привести к подмене артефактов и внедрению вредоносного кода в сборочные цепочки.
  • Контейнеры и образы: базовые образы Linux включают curl по умолчанию. Организации, использующие непропатченные образы, остаются уязвимыми даже после обновления хост-системы.
  • Менеджеры пакетов: npm, pip, apt, apk, brew — все используют libcurl для загрузки пакетов по HTTPS с mTLS-аутентификацией.
  • IoT и встраиваемые системы: обновление curl в таких устройствах — сложный процесс, часто требующий перепрошивки. Многие устройства могут остаться уязвимыми навсегда.
  • SDK и библиотеки: разработчики, использующие libcurl в своих продуктах, должны пересобрать и перевыпустить пакеты — и убедить клиентов их установить.

Для DevSecOps-команд это означает необходимость срочного аудита всех зависимых компонентов. CVE-2026-8932 — классический пример supply chain-уязвимости: проблема в фундаментальной библиотеке, которую тысячи вендоров встраивают в свои продукты, часто не подозревая о её существовании.

Методы защиты и практические рекомендации

Для минимизации рисков, связанных с CVE-2026-8932 и другими уязвимостями curl, необходимо выполнить следующие шаги:

  1. Обновить curl до версии 8.21.0 или выше на всех системах — серверах, рабочих станциях, контейнерах, CI/CD-агентах. Команда: curl --version — проверьте версию; обновление через пакетный менеджер системы.
  2. Провести аудит базовых образов контейнеров. Пересобрать образы на основе актуальных дистрибутивов с curl 8.21.0. Убедиться, что образы в registry не содержат уязвимых версий.
  3. Выполнить перелинковку приложений. Разработчики, использующие libcurl как shared library, должны перелинковать приложения с исправленной версией. Для статической линковки — пересобрать бинарные файлы.
  4. Проверить mTLS-инфраструктуру. Проанализировать логику переиспользования соединений в приложениях с взаимной аутентификацией. Рассмотреть принудительное закрытие пула соединений при смене сертификатов.
  5. Внедрить регулярное ИИ-сканирование кода в процессы DevSecOps. Опыт AISLE показывает, что автоматизированный поиск уязвимостей находит ошибки, которые пропускают традиционные SAST-инструменты.
  6. Активировать уведомления CVE для критических зависимостей. Подписаться на рассылку curl (curl-announce) и отслеживать GitHub Advisory Database на предмет CVE, затрагивающих используемые библиотеки.
  7. Разработать план реагирования для supply chain-уязвимостей. CVE-2026-8932 показала, что уязвимость может существовать десятилетиями и быть обнаружена единомоментно — вместе с десятками других. Процесс обновления должен занимать часы, а не дни.

📚 Читайте также

📖 Термины

Devsecops · Supply Chain Attack · Пентест

🔗 Источники