CVE-2026-1965

MEDIUM CVSS 3.1: 6,5 EPSS 0.05%
Обновлено 11 марта 2026
libcurl
Параметр Значение
CVSS 6,5 (MEDIUM)
Тип уязвимости CWE-305
Поставщик libcurl
Публичный эксплойт Нет

libcurl может в некоторых случаях повторно использовать неправильное соединение, когда его об этом попросят. запрос HTTP или HTTPS с проверкой подлинности при согласовании. libcurl имеет пул последних подключений, чтобы последующие запросы могли повторно используйте существующее соединение, чтобы избежать накладных расходов. При повторном использовании соединения сначала должен быть соблюден ряд критериев. Из-за логическая ошибка в коде, запрос, выданный приложением, мог неправомерно повторно использовать существующее соединение с тем же сервером, которое было аутентифицируется с использованием разных учетных данных.

Одна из основных причин заключается в том, что Negotiate иногда проверяет подлинность *соединений*, а не *запросов*, наоборот. о том, как HTTP устроен для работы. Приложение, которое позволяет пройти проверку подлинности Negotiate на сервере (который отвечает желающий провести переговоры) с `user1:password1`, а затем выполняет еще одну операцию для тот же сервер также использует Negotiate, но с `user2:password2` (в то время как предыдущее соединение все еще живо) - второй запрос ошибочно повторно использовал та же самая связь, и поскольку тогда он видит, что переговоры Переговоры уже сделано, он просто отправляет запрос по этому соединению, думая, что использует учетные данные пользователя user2, хотя он фактически все еще использует соединение аутентифицирован для пользователя user1... Набор используемых методов аутентификации задается параметром CURLOPT_HTTPAUTH.

Приложения могут отключить повторное использование соединений libcurl и, таким образом, смягчить эту проблему. проблема, используя один из следующих параметров libcurl, чтобы изменить способ соединения используются или не используются повторно: `CURLOPT_FRESH_CONNECT`, `CURLOPT_MAXCONNECTS` и `CURLMOPT_MAX_HOST_CONNECTIONS` (при использовании Curl_multi API).

Показать оригинальное описание (EN)

libcurl can in some circumstances reuse the wrong connection when asked to do an Negotiate-authenticated HTTP or HTTPS request. libcurl features a pool of recent connections so that subsequent requests can reuse an existing connection to avoid overhead. When reusing a connection a range of criterion must first be met. Due to a logical error in the code, a request that was issued by an application could wrongfully reuse an existing connection to the same server that was authenticated using different credentials. One underlying reason being that Negotiate sometimes authenticates *connections* and not *requests*, contrary to how HTTP is designed to work. An application that allows Negotiate authentication to a server (that responds wanting Negotiate) with `user1:password1` and then does another operation to the same server also using Negotiate but with `user2:password2` (while the previous connection is still alive) - the second request wrongly reused the same connection and since it then sees that the Negotiate negotiation is already made, it just sends the request over that connection thinking it uses the user2 credentials when it is in fact still using the connection authenticated for user1... The set of authentication methods to use is set with `CURLOPT_HTTPAUTH`. Applications can disable libcurl's reuse of connections and thus mitigate this problem, by using one of the following libcurl options to alter how connections are or are not reused: `CURLOPT_FRESH_CONNECT`, `CURLOPT_MAXCONNECTS` and `CURLMOPT_MAX_HOST_CONNECTIONS` (if using the curl_multi API).

Характеристики атаки

Способ атаки
По сети
Атака возможна удалённо
Сложность
Низкая
Легко эксплуатировать
Нужны права
Низкие
Нужны базовые права
Участие пользователя
Не требуется
Не нужно действие пользователя

Последствия

Конфиденциальность
Нет
Нет утечки данных
Целостность
Высокое
Полная модификация данных
Доступность
Нет
Нет нарушения работы

Строка CVSS v3.1

Тип уязвимости (CWE)