Пользователям Windows рекомендуется срочно обновить версию Git
Опубликованы корректирующие выпуски распределённой системы управления исходными текстами 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.62.24.1, в которых устранены уязвимости, позволяющие атакующему переписать произвольные пути в файловой системе, организовать удалённый запуск кода или перезаписать файлы в каталоге ".git/". Большинство проблем выявлены сотрудниками Microsoft Security Response Center, пять из восьми уязвимостей специфичны для платформы Windows.
- CVE-2019-1348 - потоковая команда "feature export-marks=path"позволяет записать метки в произвольные каталоги, что может использоваться для перезаписи произвольных путей в ФС при выполнении операции "git fast-import" с непроверенными входными данными.
- CVE-2019-1350 - некорректное экранирование аргументов командной строки могло привести к удалённому выполнению кода атакующего при рекурсивном клонировании с использованием URL ssh://. В частности, некорректно обрабатывалось экранирование аргументов, оканчивающихся на обратный слеш (например, "test \"). В этом случае при обрамлении аргумента двойными кавычками, последняя кавычка оказывалась экранированной, что позволяло организовать подстановку своих опций в командной строке.
- CVE-2019-1349 - при рекурсивном клонировании субмодулей ("clone --recurse-submodules") в окружении Windows при определённых условиях можно было инициировать использование одного git-каталога дважды (.git, git~1, git~2 и git~N в NTFS распознаётся как один каталог, но эта ситуация проверялась только для git~1), что могло применяться для организации записи в каталог ".git". Для организации выполнения своего кода атакующий, например, может подставить свой скрипт через обработчик post-checkout в файле .git/config.
- CVE-2019-1351 - обработчик буквенных имён дисков в путях Windows при трансляции путей типа "C:\" был рассчитан только на замену однобуквенных латинских идентификаторов, но не учитывал возможность создания виртуальных дисков, назначаемых через "subst буква:путь". Такие пути обрабатывались не как абсолютные, а как относительные пути, что позволяло при клонировании вредоносного репозитория организовать запись в произвольный каталог за пределами рабочего дерева каталогов (например, при использовании цифр или unicode-символов в названии диска - "1:\what\the\hex.txt" или "ä:\tschibät.sch").
- CVE-2019-1352 - при работе на платформе Windows применение альтернативных потоков данных в NTFS, создаваемых через добавление признака ":stream-name:stream-type" к имени файла, позволяло перезаписать файлы в каталоге ".git/" при клонировании вредоносного репозитория. Например, имя ".git::$INDEX_ALLOCATION" в NTFS обрабатывалось как корректная ссылка на каталог ".git".
- CVE-2019-1353 - при использовании Git в окружении WSL (Windows Subsystem for Linux) при обращении к рабочему каталогу не применялась защита от манипуляции именами в NTFS (были возможны атаки через трансляцию имён FAT, например, к ".git" можно было обратиться через каталог "git~1").
- CVE-2019-1354 - возможность записи в каталог ".git/" на платформе Windows при клонировании вредоносных репозиториев, содержащих файлы с обратным слешем в имени (например, "a\b"), который допустим в Unix/Linux, но воспринимается как часть пути в Windows.
- CVE-2019-1387 - недостаточная проверка имён субмодулей могла использоваться для организации целевых атак, которые при рекурсивном клонировании потенциально могли привести к выполнению кода атакующего. 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". Для дистрибутивов проследить за выпуском обновлений пакетов можно на страницах Debian,Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, ALT, FreeBSD.