Опубликованы корректирующие выпуски распределённой системы управления исходными текстами Git 2.40.1, 2.39.3, 2.38.5, 2.37.7, 2.36.6, 2.35.8,
2.34.8, 2.33.8, 2.32.7, 2.31.8 и 2.30.9, в которых устранено пять уязвимостей. Проследить за выпуском обновлений пакетов в дистрибутивах можно на страницах Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, FreeBSD. В качестве обходных путей для защиты от уязвимостей рекомендуется избегать выполнения команды “git apply –reject” при работе с непроверенными внешними патчами и проверять содержимое $GIT_DIR/config перед запуском команд “git submodule deinit”, “git config –rename-section” и “git config –remove-section” при работе с не заслуживающими доверия репозиториями.
Уязвимость CVE-2023-29007 позволяет добиться подстановки настроек в файл конфигурации $GIT_DIR/config, которые могут использоваться для выполнения кода в системе через указание путей к исполняемым файлам в директивах core.pager, core.editor и core.sshCommand. Уязвимость вызвана логической ошибкой, из-за которой очень длинные значения конфигурации могут быть обработаны как начало новой секции при выполнении операций переименования или удаления секции из файла конфигурации. На практике подстановки эксплуатирующих уязвимость значений можно добиться через указание очень длинных URL субмодулей, которые сохраняются в файл $GIT_DIR/config во время инициализации. Данные URL могут быть интерпретированы как новые настройки при попытке их удаления через “git submodule deinit”.
Уязвимость CVE-2023-25652 позволяет перезаписать содержимое файлов вне рабочего дерева при обработке командой “git apply –reject” специально оформленных патчей. При попытке выполнения командой “git apply” вредоносного патча, пытающегося совершить запись в файл через символическую ссылку, операция будет отклонена. В Git 2.39.1 защита от манипуляций через символические ссылки была дополнена блокировкой патчей, создающих символические ссылки и пытающиеся выполнить запись через них. Суть рассматриваемой уязвимости в том, что Git не учитывал, что пользователь может выполнить команду “git apply –reject” для записи отклонённых частей патча в виде файлов с расширением “.rej” и атакующий может использовать данную возможность для записи содержимого в произвольный каталог, насколько это позволяют текущие права доступа.
Кроме того, устранены три уязвимости, проявляющиеся только на платформе Windows: CVE-2023-29012 (поиск исполняемого doskey.exe в рабочем каталоге репозитория при выполнении команды “Git CMD”, что позволяет организовать выполнение своего кода в системе пользователя), CVE-2023-25815 (переполнение буфера при обработке специально оформленных файлов локализации в gettext) и CVE-2023-29011 (возможность подмены файла connect.exe при работе через SOCKS5).