В cURL и libcurl закрыто 18 уязвимостей: выход версии 8.21.0

curl

Разработчики cURL выпустили версию 8.21.0, которая устраняет 18 уязвимостей, обнаруженных в библиотеке libcurl и одноименной утилите командной строки. Проблемы были выявлены в период с 6 мая по 22 июня 2026 года, их уровень опасности варьируется от низкого до среднего. В числе возможных последствий - удаленный отказ в обслуживании, нарушение конфиденциальности данных и обход политик безопасности.

Детали уязвимостей

Наиболее заметная группа уязвимостей связана с утечкой аутентификационных данных при неправильном управлении состоянием соединений. Так, CVE-2026-11856 допускает передачу авторизационного заголовка Digest-аутентификации от одного источника другому при повторном использовании дескриптора (handle) libcurl. Аналогичная проблема для прокси-аутентификации описана в CVE-2026-8927. Уязвимость CVE-2026-9079 показывает, что libcurl не очищает старые учетные данные прокси при попытке их сброса, а CVE-2026-8926 приводит к тому, что при использовании .netrc и указании в URL только имени пользователя curl может взять пароль другого пользователя из того же файла. Все перечисленные дефекты затрагивают именно libcurl, а не утилиту командной строки.

Еще одна распространенная категория - некорректное повторное использование ранее установленных соединений, когда параметры безопасности не проверяются должным образом. CVE-2026-11564 позволяет приложению, сменившему настройки цепочек сертификатов CA, продолжать использовать старую сессию, что может привести к принятию сертификатов, которые должны быть отвергнуты. Уязвимость CVE-2026-8286 затрагивает протоколы со стартовым переходом на TLS (IMAP, POP3, SMTP, FTP, LDAP) - новое соединение может ошибочно переиспользовать старое с несовпадающими TLS-параметрами. CVE-2026-8458 связана с выбором неправильного соединения при Negotiate-аутентификации с разными именами сервисов, а CVE-2026-8932 позволяет использовать ранее созданное соединение, даже если были изменены параметры клиентского сертификата (mTLS). Все эти проблемы вызваны логическими ошибками в коде проверки конфигурации.

Два дефекта ведут к удаленному отказу в обслуживании. CVE-2026-11352 использует ошибку в обработке QUIC-пакетов нулевой длины на платформах с функцией recvmmsg: злоумышленник может бесконечно отправлять пустые датаграммы, блокируя клиента. CVE-2026-11586 позволяет исчерпать память клиента из-за отсутствия лимита на неотправленные PONG-ответы при обмене WebSocket-фреймами. Обе уязвимости затрагивают и curl, и libcurl.

Проблемы с управлением памятью представлены тремя уязвимостями: CVE-2026-10536 (use-after-free при сбросе дерева зависимостей HTTP/2), CVE-2026-8925 (двойное освобождение контекста GSASL при SASL-аутентификации, что может теоретически позволить атакующему контролировать освобождаемую память) и CVE-2026-9080 (use-after-free при вызове curl_easy_pause() внутри callback-функции CURLMOPT_SOCKETFUNCTION). Разработчики отметили, что CVE-2026-10536 и CVE-2026-9080 являются типичными "ошибками языка C".

Несколько уязвимостей связаны с утечкой чувствительной информации. CVE-2026-8924 использует точки в конце доменного имени (trailing dot) для установки "суперкуки", которые обходят проверку Public Suffix List и могут быть отправлены на сторонние домены. CVE-2026-9545 в комбинации с кэшированием SSL-сессий и ранними данными (early data) в HTTP/3 может привести к отправке запроса подставному серверу до проверки сертификата. CVE-2026-9546 показывает, что HTTP-заголовок Referer не очищается при передаче NULL в CURLOPT_REFERER, оставаясь в памяти и передаваясь последующим запросам.

Отдельно стоят проблемы с SSH-соединениями. CVE-2026-12064 затрагивает утилиту командной строки: при использовании схемы URL без протокола вместе с опцией "--proto-default sftp" (или scp) уровень инструмента пропускает инициализацию проверок хоста, и curl подключается к серверу без проверки ключей. CVE-2026-9547 относится к libcurl: при использовании бэкенда libssh колбэк CURLOPT_SSH_KEYFUNCTION не отклоняет сервер, если тип ключа не совпадает с сохраненным в known_hosts, что делает возможной атаку "человек посередине".

По данным команды разработчиков cURL, все полученные отчеты были обработаны в течение месяца. 17 июня 2026 года уведомления были направлены рассылке distros@openwall для координации выпуска патчей в дистрибутивах. Версия 8.21.0 стала первым релизом, в котором устранены все перечисленные проблемы. Разработчики также предоставили отдельные коммиты для каждого исправления, доступные в репозитории на GitHub.

Пользователям и администраторам рекомендуется как можно скорее обновить cURL и libcurl до версии 8.21.0. В случае невозможности обновления следует применить патчи из бюллетеней безопасности. Временными мерами защиты могут служить отказ от использования редких опций (например, HTTP/2 stream dependencies, ранних данных TLS, автопонга WebSocket), а также избегание повторного использования дескрипторов после изменения параметров аутентификации или цепочки сертификатов. Для приложений, использующих libcurl, необходимо перекомпилировать их с новой версией библиотеки.

Обновление затрагивает широчайший спектр систем, поскольку cURL встроен в большинство дистрибутивов Linux, macOS, Windows, а также во множество встраиваемых устройств и мобильных платформ. Даже уязвимости низкого уровня опасности могут служить первым шагом для более сложных атак, особенно в сценариях межсервисного взаимодействия. Регулярный выход подобных пакетных исправлений подтверждает необходимость постоянного мониторинга обновлений для сетевых утилит.

Ссылки

Комментарии: 0