Реклама
Перетяжка // Коробка 3.0

curl 8.22.0 закрыл девять уязвимостей и отказался от TLS-SRP

Девять CVE в curl и libcurl, одна в wcurl, 302 исправления и первые шаги к удалению NTLM, SMB и HTTP/2 Server Push.

Обложка: curl 8.22.0 закрыл девять уязвимостей и отказался от TLS-SRP

2 сентября вышел curl 8.22.0. Вместе с релизом проект опубликовал десять новых CVE: девять закрыты в самом curl и libcurl, десятая касается обёртки wcurl. Это значит, что обновлять нужно не только консольную утилиту, но и всё, что линкуется с libcurl: языковые биндинги, пакетные менеджеры, мобильные и десктопные приложения, образы контейнеров.

По классификации самого проекта восемь из десяти уязвимостей имеют низкую серьёзность и две среднюю: CVE-2026-19931 про повторное использование соединения с Negotiate-аутентификацией и CVE-2026-80256 в wcurl. Критических нет, но набор показательный: проблемы найдены в проверке сертификатов, в куках и в аутентификации, то есть в местах, где curl обычно доверяют без оглядки.

Ключевые выводы
  • curl 8.22.0 вышел 2 сентября 2026 года, это 276-й релиз проекта; между релизами прошло 70 дней.
  • Десять CVE: девять в curl и libcurl и одна в wcurl; восемь низкой серьёзности, две средней.
  • Из нового: экспериментальная поддержка HTTP Message Signatures по RFC 9421, блокировка отката на NTLM в SPNEGO, поддержка Apple GSS Framework.
  • Удалена поддержка TLS-SRP; объявлены будущие удаления HTTP/2 Server Push, встроенных криптореализаций, NTLM и SMB.
  • 302 исправления ошибок, 525 коммитов, 85 участников, из них 55 впервые.

Что именно закрыли

Полный список из базы уязвимостей curl, с оценками серьёзности самого проекта:

  • CVE-2026-19931 (средняя): обход аутентификации Negotiate через повторное использование соединения, установленного от имени другого пользователя окружения.
  • CVE-2026-13608 (низкая): обход SASL-аутентификации в OpenLDAP.
  • CVE-2026-18924 (низкая): use-after-free в обработке HTTP/2 Server Push.
  • CVE-2026-80229 (низкая): use-after-free в работе с провайдерами OpenSSL.
  • CVE-2026-80230 (низкая): обход пиннинга публичного ключа при сборке с OpenSSL.
  • CVE-2026-80231 (низкая): повторное использование соединения при работе с системным хранилищем сертификатов.
  • CVE-2026-80255 (низкая): обход атрибута Secure у куки с помощью символа табуляции.
  • CVE-2026-82208 (низкая): при сборке с wolfSSL попадание в кэш CA перекрывало пользовательский callback проверки сертификата.
  • CVE-2026-82209 (низкая): куки с доменом из Public Suffix List принимались там, где не должны.

Отдельно идёт CVE-2026-80256 (средняя) в wcurl, обёртке для скачивания файлов одной командой: обратный слеш в аргументе позволял обойти её проверки. По данным advisory, уязвимый wcurl входил в поставку curl с 8.14.0 по 8.21.0 и распространялся отдельно, так что обновлять его нужно тем же путём, каким он к вам попал.

Четыре пункта из девяти объединяет одна черта: соединение или кука, проверенные в одном контексте, использовались в другом (CVE-2026-19931, 80231, 80255, 82209). Остальные касаются обхода аутентификации, use-after-free и проверки сертификатов. Для библиотеки, которая живёт в тысячах приложений и держит пул соединений, это самый неприятный класс ошибок: снаружи всё выглядит как штатная работа, а данные уходят не туда. По нашей оценке, реальная эксплуатация большинства из них требует специфической конфигурации (LDAP, Negotiate, wolfSSL, пиннинг), поэтому проект и оценил их как низкие. Но проверять, какая именно сборка libcurl у вас стоит и с чем она собрана, всё равно придётся.

Шесть изменений

Главная функциональная новинка, экспериментальная поддержка HTTP Message Signatures по RFC 9421. Это стандарт подписи HTTP-запросов и ответов на уровне заголовков: клиент подписывает выбранные части сообщения (метод, путь, отдельные заголовки, хэш тела), а сервер проверяет подпись независимо от TLS. Такие подписи используют платёжные API, федеративные соцсети и корпоративные шлюзы, где нужно доказать, что запрос не менялся на промежуточных прокси. Даниэль Стенберг подробно описывал реализацию в июльской заметке; в 8.22.0 функция помечена как экспериментальная, то есть включается при сборке и может поменять API.

Второе изменение, связанное с безопасностью: curl теперь блокирует откат на NTLM внутри SPNEGO-переговоров. Раньше при аутентификации Negotiate сервер мог предложить более слабый NTLM, и клиент соглашался; теперь такой откат запрещён. Это согласуется с планом удалить NTLM целиком в одном из следующих релизов.

Остальные пункты: поддержка Apple GSS Framework для Kerberos-аутентификации на macOS и iOS без сторонних библиотек, опция для быстрого UDP в системах Apple, так называемые API guards, и удаление поддержки TLS-SRP, редко используемого метода аутентификации по паролю внутри TLS. Появилось четыре новых опции curl_easy_setopt() и четыре новых ключа командной строки; новых публичных функций libcurl нет.

Что уберут дальше

В анонсе перечислены четыре будущих удаления: HTTP/2 Server Push, локальные криптореализации, NTLM и SMB. Server Push браузеры перестали поддерживать ещё несколько лет назад, и одна из сегодняшних CVE найдена как раз в этом коде. Локальные криптореализации, собственные реализации MD4, MD5 и подобных алгоритмов, которые curl использовал там, где не было TLS-бэкенда, тоже уходят: их оставалось поддерживать ради того же NTLM. Точные версии, в которых код исчезнет, в анонсе не названы.

На практике это касается тех, кто ходит curl в корпоративные Windows-сервисы через NTLM или скачивает файлы с SMB-шар. Таким скриптам стоит начать переезд на Kerberos/Negotiate и на другие протоколы уже сейчас.

Что делать

  1. Проверить версию: curl --version покажет и версию curl, и с каким TLS-бэкендом она собрана (OpenSSL, wolfSSL, Schannel, Secure Transport). От бэкенда зависит применимость части CVE (OpenSSL, wolfSSL, системное хранилище сертификатов); остальные касаются протоколов и функций сборки: LDAP, Negotiate, HTTP/2, куки.
  2. Обновиться до 8.22.0 из дистрибутива или со страницы загрузки. Если вы используете старую ветку с бэкпортами, проект обещает отдельный анонс Rock-solid curl в ближайшие дни.
  3. Пересобрать или обновить всё, что тянет libcurl статически или в составе своего образа: Docker-образы, мобильные приложения, скомпилированные биндинги для Python, PHP, Rust и Go.
  4. Если используете wcurl, обновить и его: CVE-2026-80256 закрыта в самой обёртке, а не в libcurl, и wcurl мог прийти как вместе с curl 8.14.0–8.21.0, так и отдельным пакетом.
  5. Если скрипты ходят по NTLM или SMB, запланировать переезд: оба протокола объявлены к удалению.

Следующий релиз curl запланирован на конец октября 2026 года, если по 8.22.0 не придут серьёзные регрессии. Отдельно стоит следить за анонсом Rock-solid curl: это ветка с исправлениями безопасности для тех, кто сидит на старой ветке и не может перейти на основную, и она выйдет позже основного релиза.

Источники: Daniel Stenberg: curl 8.22.0, curl: список уязвимостей, Скачать curl, Daniel Stenberg: HTTP Message Signatures with curl

Изображение на обложке: Логотип: curl project