Обновление Git с устранением 8 уязвимостей

Опубликованы корректирующие выпуски распределённой системы управления исходными текстами 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, FreeBSD.

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

© OpenNet