Опубликованы корректирующие выпуски распределённой системы управления исходными текстами Git 2.38.4, 2.37.6, 2.36.5, 2.35.7, 2.34.7, 2.33.7, 2.32.6, 2.31.7 и 2.30.8, в которых устранены две уязвимости, затрагивающие оптимизации при локальном клонировании и команду “git apply”. Проследить за выпуском обновлений пакетов в дистрибутивах можно на страницах Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, FreeBSD. Если установить обновление не представляется возможным, в качестве обходных мер рекомендуется избегать выполнения
операции “git clone” с опцией “–recurse-submodules” с репозиториями, не заслуживающими доверия, а также не использовать команды “git apply” и “git am” с непроверенным кодом.
- Уязвимость CVE-2023-22490 позволяет атакующему, контролирующему содержимое клонируемого репозитория, получить доступ к конфиденциальным данным на системе пользователя. Появлению уязвимости способствуют две недоработки:
Первая недоработка, позволяет при работе со специально оформленным репозиторием добиться применения локальных оптимизаций клонирования даже при использовании транспорта, взаимодействующего со внешними системами.
Вторая недоработка, допускает размещение символической ссылки вместо каталога $GIT_DIR/objects по аналогии с уязвимостью CVE-2022-39253, в исправлении которой блокировалось размещение символических ссылок в каталоге $GIT_DIR/objects, но не проверялся факт того, что сам каталог $GIT_DIR/objects может быть символической ссылкой.
В режиме локального клонирования git переносит $GIT_DIR/objects в целевой каталог, выполняя разыменование символических ссылок, что приводит к тому, что в целевой каталог копируются непосредственно файлы, на которые указывают ссылки. Переключение на применение локальных оптимизаций клонирования для нелокального транспорта позволяет эксплуатировать уязвимость при работе с внешними репозиториями (например, рекурсивное включение субмодулей командой “git clone –recurse-submodules” может привести к клонированию вредоносного репозитория, упакованного в форме субмодуля в другом репозитории).
- Уязвимость CVE-2023-23946 позволяет перезаписать содержимое файлов вне рабочего каталога через передачу специально оформленного ввода в команду “git apply”. Например, атака может быть совершена при обработке в “git apply” подготовленных злоумышленником патчей. Для блокирования создания патчами файлов вне рабочей копии, “git apply” блокирует обработку патчей, пытающихся записать файл с использованием символических ссылок. Но эту защиту оказалось можно обойти, создав символическую ссылку в первую очередь.