Коригирани версии на разпределената система за управление на изходни текстове Git 2.24.1, 2.23.1, 2.22.2, 2.21.1, 2.20.2, 2.19.3, 2.18.2, 2.17.3, 2.16.6, 2.15.4 и 2.14.6, в които са отстранени уязвимости, позволяващи на нападателя да пренапише произволни пътища в файловата система, да организира дистанционно изпълнение на код или да презапише файлове в директорията «.git/». Повечето проблеми са идентифицирани от служители
Microsoft Security Response Center, пет от осемте уязвимости са специфични за платформата Windows.
- — потокова команда «feature export-marks=path» да запише марки в произволни директории, което може да бъде използвано за пренаписване на произволни пътища в файловата система при извършване на операция «git fast-import» с непроверени входни данни.
- — неправилно екраниране на аргументите в командния ред до дистанционно изпълнение на код от нападателя при рекурсивно клониране с използване на URL ssh://. В частност, неправилно се обработваше екранирането на аргументи, завършващи на обратен слеш (например, «test \»). В този случай, когато аргументът е обграден с двойни кавички, последната кавичка се оказваше екранирана, което позволяваше да се организира подмяна на собствените опции в командния ред.
- — при рекурсивно клониране на подсистеми («clone —recurse-submodules») в среда Windows при определени условия инициира използването на една и съща git директория два пъти (.git, git~1, git~2 и git~N в NTFS се разпознават като една директория, но тази ситуация беше проверявана само за git~1), което можеше да бъде използвано за организиране на запис в директорията «.git». За да се организира изпълнението на собствен код, нападателят, например, може да постави свой скрипт чрез обработчика post-checkout в файла .git/config.
- — обработчикът на буквени имена на дискове в пътища Windows при транслиране на пътища тип «C:\» беше проектиран само за замяна на еднобуквени латински идентификатори, но не отчете възможността за създаване на виртуални дискове, разпределени чрез «subst буква:път». Такива пътища се обработваха не като абсолютни, а като относителни пътища, което позволяваше при клонирането на злонамерен репозиторий да се организира запис в произволна директория извън работното дърво на директориите (например, при използване на цифри или unicode символи в името на диска — «1:\what\the\hex.txt» или «ä:\tschibät.sch»).
- — при работа на платформата Windows, използването на алтернативни потоци данни в NTFS, създавани чрез добавяне на атрибут «:stream-name:stream-type» към името на файла, презаписването на файлове в директорията «.git/» при клониране на злонамерен репозиторий. Например, името «.git::$INDEX_ALLOCATION» в NTFS се обработваше като валидна връзка към директорията «.git».
- — при използването на Git в среда WSL (Windows Subsystem for Linux) при достъп до работната директория защита от манипулация на имената в NTFS (възможни бяха атаки чрез транслация на имена FAT, например, до «.git» можеше да се получи достъп чрез директорията «git~1»).
- —
записите в директорията «.git/» на платформа Windows при клониране на злонамерени репозитории, съдържащи файлове с обратен слеш в името (например, «a\b»), който е валиден в Unix/Linux, но се възприема като част от пътя в Windows. - — недостатъчната проверка на имената на субмодулите можеше да се използва за организиране на целеви атаки, които при рекурсивно клониране потенциално до изпълнението на код от атакуващия. Git не забраняваше създаването на директория на субмодул в директория на друг субмодул, което в повечето случаи само може да доведе до объркване, но потенциално не изключва перезаписването на съдържанието на друг модул в процеса на рекурсивно клониране (например, директориите на субмодулите «hippo» и «hippo/hooks» се разполагат като «.git/modules/hippo/» и «.git/modules/hippo/hooks/», а директорията hooks в hippo може отделно да се използва за разполагане на стартиращи обработчици.
На потребителите на Windows се препоръчва спешно да актуализират версията на Git, а до актуализацията да избягват клонирането на непроверени репозитории. Ако възможността за спешно актуализиране на версията на Git в момента не е налична, за намаляване на риска от атака се препоръчва да не се стартира «git clone --recurse-submodules» и «git submodule update» с непроверени репозитории, да не се използва «git fast-import» с непроверени входни потоци и да не се клонират репозитории в дялове, базирани на NTFS.
За допълнителна защита в новите версии също е забранено използването в .gitmodules конструкции под формата «submodule.{name}.update=!command». За дистрибуциите, следете за публикувани обновления на пакетите на страниците ,, , , , , , .
Източник: opennet.ru
