libgit2 — это переносимая реализация основных методов Git на языке C, предоставляемая в виде подключаемой библиотеки с надежным API, позволяющая встроить функциональность Git в ваше приложение. До версий 1.8.6 и 1.9.5verify_server_cert в src/libgit2/streams/openssl.c использует инвертированный результат !!memcmp в ветке GEN_IPADD при сравнении IP-литерала хоста с IP-адресом субъекта сертификата. Сборки OpenSSL отклоняют совпадающие IP-адреса и принимают несовпадающие IP-адреса, позволяя сетевому злоумышленнику с доверенным сертификатом ЦС, содержащим любое IP-субъектное имя, перехватывать соединения libgit2 с IP-литеральными URL-адресами HTTPS.
Проверка DNS subjectAltName и серверные части TLS, отличные от OpenSSL, не затрагиваются. Эта проблема исправлена в версиях 1.8.6 и 1.9.5.
Показать оригинальное описание (EN)
libgit2 is a portable C implementation of the Git core methods provided as a linkable library with a solid API, allowing to build Git functionality into your application. Prior to 1.8.6 and 1.9.5, verify_server_cert in src/libgit2/streams/openssl.c uses an inverted !!memcmp result in the GEN_IPADD branch when comparing an IP-literal host with a certificate IP SubjectAltName. OpenSSL builds reject matching IP addresses and accept mismatched IP addresses, allowing a network attacker with a CA-trusted certificate containing any IP SubjectAltName to intercept libgit2 connections to IP-literal HTTPS URLs. DNS SubjectAltName validation and non-OpenSSL TLS backends are not affected. This issue is fixed in versions 1.8.6 and 1.9.5.
Характеристики атаки
Последствия
Строка CVSS v3.1