Уязвимости в Git, проявляющиеся при клонировании субмодулей и использовании git shell

Опубликованы корректирующие выпуски распределённой системы управления исходными текстами Git 2.38.1, 2.30.6, 2.31.5, 2.32.4, 2.33.5, 2.34.5,
2.35.5, 2.36.3 и 2.37.4, в которых устранены две уязвимости, проявляющиеся при применении команды “git clone” в режиме “–recurse-submodules” с непроверенными репозиториями и при использовании интерактивного режима работы “git shell”. Проследить за выпуском обновлений пакетов в дистрибутивах можно на страницах Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, FreeBSD.

  • CVE-2022-39253 – возможность манипуляции с файлами через размещение символических ссылок в каталоге $GIT_DIR/objects клонируемого репозитория. Уязвимость позволяет атакующему, контролирующему содержимое клонируемого репозитория, получить доступ к конфиденциальным данным. Проблема проявляется только при локальном клонировании (в режиме “–local“) или при клонировании вредоносного репозитория, упакованного в форме субмодуля в другом репозитории (например, при рекурсивном включении субмодулей командой “git clone –recurse-submodules”).

    Уязвимость вызвана тем, что в режиме клонирования “–local”, git выполняет разыменование символических ссылок в каталоге $GIT_DIR/objects на стадии до создания жёстких ссылок (или копий) в целевом репозитории, что может быть использовано для манипуляций с файлами в основном каталоге репозитория ($GIT_DIR). Для блокирования проявления уязвимости в новых выпусках git запрещено клонирование репозиториев в режиме “–local”, содержащих символические ссылки в каталоге $GIT_DIR/objects. Кроме того, значение по умолчанию параметра protocol.file.allow изменено на “user”, что относит операции клонирования с использованием протокола file:// в разряд небезопасных.

  • CVE-2022-39260 – целочисленное переполнение в функции split_cmdline(), используемой в команде “git shell”. Проблема может быть использована для атаки на пользователей, у которых “git shell” используется в качестве оболочки при входе и включён интерактивный режим работы (создан файл $HOME/git-shell-commands). Эксплуатация уязвимости может привести к выполнению произвольного кода в системе при передаче специально оформленной команды, размером больше 2 ГБ.
Release. Ссылка here.