Описание |
+ |
Затронутые версии Git имеют уязвимость, с помощью которой Git можно обмануть, отправив личные учетные данные на хост, контролируемый злоумышленником. Git использует внешние программы-помощники по учетным данным для хранения и извлечения паролей или других учетных данных из безопасного хранилища, предоставляемого операционной системой. Специально созданные URL-адреса, которые содержат закодированную новую строку, могут вводить непредусмотренные значения в поток протокола вспомогательной учетной записи, в результате чего вспомогательная учетная запись получает пароль для одного сервера (например, good.example.com) для HTTP-запроса, отправляемого на другой сервер ( например, evil.example.com), в результате чего учетные данные для первого отправляются второму. Нет никаких ограничений на отношения между ними, а это означает, что злоумышленник может создать URL-адрес, который будет представлять сохраненные учетные данные для любого хоста хосту по своему выбору. Уязвимость может быть вызвана загрузкой вредоносного URL-адреса в git clone. Однако затронутые URL выглядят довольно подозрительно; вероятный вектор будет через системы, которые автоматически клонируют URL-адреса, невидимые для пользователя, такие как подмодули Git или системы пакетов, построенные на основе Git. Проблема исправлена в версиях, опубликованных 14 апреля 2020 г., начиная с v2.17.x. Любой, кто желает создать резервную копию изменения, может сделать это, применив фиксацию 9a6bbee (полная версия включает дополнительные проверки для git fsck, но этой фиксации достаточно для защиты клиентов от уязвимости). Исправленные версии: 2.17.4, 2.18.3, 2.19.4, 2.20.3, 2.21.2, 2.22.3, 2.23.2, 2.24.2, 2.25.3, 2.26.1. |
|
Примечания |
+ |
Наиболее полный обходной путь - полностью отключить помощников по учетным данным: |
+ |
|
+ |
git config --unset credential.helper |
+ |
git config --global --unset credential.helper |
+ |
git config --system --unset credential.helper |
+ |
|
+ |
Альтернативный вариант - избегать вредоносных URL-адресов: |
+ |
1. Изучите часть URL-адресов, передаваемых в git clone, в части имени хоста и имени пользователя на наличие закодированных символов новой строки (% 0a) или свидетельств внедрения протокола учетных данных (например, host = github.com). |
+ |
2. Избегайте использования подмодулей с ненадежными репозиториями (не используйте clone --recurse-submodules; используйте git submodule update только после проверки URL-адресов, найденных в .gitmodules) |
+ |
3. Избегайте инструментов, которые могут запускать git clone на ненадежных URL-адресах под капотом. |
|