
Уязвимость Git | Возврат каретки и RCE при клонировании
CVE-2025-48384 — это критическая уязвимость в Git, широко используемой распределенной системе контроля версий. Она связана с некорректной обработкой символов возврата каретки (CR) в значениях конфигурации, что может привести к проблемам обхода пути при проверке подмодулей. Эта ошибка позволяет потенциально произвольное выполнение кода при определенных условиях. Уязвимость была публично раскрыта 8 июля 2025 года и последний раз изменена 26 августа 2025 года. Она была добавлена в каталог известных эксплуатируемых уязвимостей (KEV) Агентства по кибербезопасности и защите инфраструктуры США (CISA) 25 августа 2025 года, что указывает на активную эксплуатацию в дикой природе, с крайним сроком исправления 15 сентября 2025 года.
Проблема возникает из-за того, как Git обрабатывает значения конфигурации:
Это несоответствие может привести к тому, что подмодуль будет извлечен в неправильное место, если его путь содержит завершающий CR. Если злоумышленник настроит символическую ссылку, указывающую на измененный путь к каталогу хуков подмодуля, и подмодуль содержит исполняемый хук после проверки (post-checkout), сценарий хука может быть выполнен непреднамеренно после извлечения, что приведет к произвольному выполнению кода.
Уязвимость использует конфликт интерпретации в синтаксическом анализе конфигурации Git:
.git/hooks/post-checkout), что позволит выполнять вредоносные хуки во время таких операций, как git submodule update или git clone --recurse-submodules.Это классифицируется как:
Вектор атаки — сетевой (AV:N), с высокой сложностью (AC:H), низкими требуемыми привилегиями (PR:L), требуется взаимодействие с пользователем (UI:R), измененный объем (S:C), с высоким влиянием на конфиденциальность, целостность и доступность (C:H/I:H/A:H).
Уязвимость затрагивает версии Git до следующих исправленных выпусков:
Она затрагивает Git на различных платформах, включая Linux, macOS и Windows, но особенно актуальна в средах разработчиков, конвейерах CI/CD (например, GitHub Actions, GitLab CI) и везде, где подмодули Git клонируются из ненадежных репозиториев.
--recurse-submodules.Детали CVSS в NVD еще не полностью оценены (ожидается CVSS 4.0), но на основе метрик CVSS 3.1 из уведомления это соответствует критической серьезности (предположительно CVSS 8.8, как отмечалось ранее в более широких списках CVE).
--recurse-submodules) из ненадежных репозиториев.Эта уязвимость подчеркивает важность безопасной обработки в системах контроля версий, особенно с подмодулями. Если вы используете Git в производственной среде или среде разработки, немедленно выполните обновление, учитывая статус активной эксплуатации.
.gitmodules указывает на https://github.com/s41r4j/CVE-2025-48384-submodule.git, но PoC перезаписывает его на локальную копию для офлайн-тестирования.Запустите:
bash scripts/poc.sh
Что он делает:
$HOME/flag.txt внутри контейнера.malicious-submodule-repo/ в /tmp в контейнере.post-checkout, если путаница путей срабатывает./tmp/flag.txt, созданный хуком.Примечания:
sub^M (CR), сохраненное как gitlink; очищенный путь sub разрешается через символическую ссылку в .git/hooks, поэтому отслеживаемый post-checkout подмодуля попадает как реальный хук и выполняется.bash scripts/update-gitlink.sh.