Git – одна из самых популярных систем контроля версий, используемая миллионами разработчиков по всему миру. За годы существования Git зарекомендовал себя как надежный инструмент для управления исходным кодом и совместной работы над проектами. Однако ни одна технология не застрахована от уязвимостей, и разработчики Git регулярно выпускают обновления для повышения безопасности и устойчивости системы. В 2025 году команда Git объявила о важных обновлениях, которые устраняют семь новых уязвимостей, затрагивающих все предыдущие версии. Понимание природы этих угроз и правильное реагирование могут быть критичными для защиты проектов и обеспечения безопасности рабочих процессов.
Первая уязвимость, обозначенная как CVE-2025-48384, связана с обработкой конфигурационных значений в Git. Ключевая особенность этой проблемы заключается в неправильной обработке символов возврата каретки (CR) и перевода строки (LF) при чтении и записи настроек. При этом, если инициализировать подмодуль, путь к которому содержит скрытый символ CR в конце, Git будет использовать «очищенный» путь без этого символа. Это способно привести к тому, что подмодуль будет склонирован в неправильное место на файловой системе. Злоумышленник, используя уже существующую символическую ссылку между очищенным путем и директорией hooks подмодуля, может выполнить произвольный код через скрипт post-checkout.
Данный тип атаки представляет серьезную угрозу для систем, где подмодули используются в автоматизированных процессах. Вторая уязвимость – CVE-2025-48385 – возникает при клонировании репозитория с применением опциональной функции загрузки бандла. Механизм бандлов позволяет серверу разгружать часть операций клонирования на CDN, тем самым ускоряя процесс и снижая нагрузку. Однако клиент не всегда корректно проверяет данные, которые ему передает сервер. При создании специально сконструированного бандла злоумышленник может внедрить вредоносные инструкции, что приведет к записи данных в произвольное место файловой системы клиента.
Аналогично предыдущей уязвимости, итог может стать запуском вредоносного кода. Особое внимание заслуживает третья уязвимость, CVE-2025-48386, затрагивающая исключительно пользователей Windows. При аутентификации с помощью помощника по учётным данным Wincred, который взаимодействует с Windows Credential Manager, обнаружена проблема с проверкой границ буфера. В результате некорректной работы существующего буфера возможно переполнение, что создает условия для выполнения произвольного кода. Учитывая широкую популярность Windows среди разработчиков, исправление этой уязвимости является крайне важным.
Кроме основного компонента Git, в частности, Git GUI и Gitk – две Tcl/Tk-базированные графические системы взаимодействия с репозиториями, тоже найдены уязвимости. Эти инструменты активно используют разработчики, предпочитающие визуальное управление версиями. Первый из выявленных дефектов в Gitk, CVE-2025-27613, позволяет в специально подготовленном репозитории при включенной опции поддержки кодировок файлов, а также при использовании функции «Показать источник этой строки», записывать или усекать произвольные файлы. Такая возможность открывает путь для вредоносного воздействия на файлы системы. Второй дефект в Gitk (CVE-2025-27614) связан с возможностью запуска вредоносных скриптов при открытии определенного файла через командную строку.
Злоумышленник может обмануть пользователя, подставив специально обработанное имя файла, что приведет к выполнению произвольного кода. В случае с Git GUI на Windows обнаружены две уязвимости. CVE-2025-46334 касается ситуации, когда в репозитории присутствуют исполняемые файлы, такие как sh.exe или общие программы текстовой конвертации. При выборе в меню Git GUI функций Git Bash или Browse Files, эти программы могут быть непреднамеренно запущены, создавая угрозу компрометации системы.
Еще одна уязвимость в Git GUI – CVE-2025-46835 – связана с созданием и перезаписью файлов при редактировании документов в папках с особыми именами, что возможно в небезопасных репозиториях. Эта проблема очень похожа на уязвимость в Gitk, и также предоставляют злоумышленникам дополнительные возможности для вредоносной активности. Для защиты от этих угроз разработчикам рекомендуется незамедлительно перейти к установке Git версии 2.50.1 или выше.
Эта версия содержит исправления всех описанных проблем. Если обновление невозможно немедленно, специалисты советуют ограничить использование определенных функций, которые увеличивают риск атаки. К примеру, стоит избегать использования ключа --recurse-submodules при клонировании из ненадежных источников. Также полезно отключать авто-загрузку бандлов, изменяя параметр transfer.bundleURI в конфигурации.
Пользователям Windows лучше отказаться от помощника wincred для паролей, переключившись на более безопасные методы аутентификации. Кроме того, настоятельно рекомендуется не запускать Gitk и Git GUI в репозиториях, которым вы не доверяете, во избежание запуска вредоносных скриптов или других непредвиденных действий. GitHub, как ключевой игрок в экосистеме кода, сразу же отреагировал на обнародование уязвимостей. В планах компании были обновления GitHub Desktop, внедрение исправленных версий Git в GitHub Codespaces и GitHub Actions. Примечательно, что GitHub Enterprise Server не затронут этими проблемами.
Ответственные за обнаружение и исправление уязвимостей – опытные исследователи и разработчики, среди которых Дэвид Лидбитер, Джастин Тоблер, Патрик Стайнхардт, Тейлор Блау, Джефф Кинг, Йоханнес Сикст, Марк Леведаль и Ави Халачми. Их усилия позволили быстро выявить и устранить угрозы, что благоприятно влияет на безопасность всей среды разработки. Безопасность в Git – это не просто вопрос технических нововведений, а необходимое условие для поддержания доверия и защиты интеллектуальной собственности в мире развития программного обеспечения. Новые уязвимости в 2025 году служат напоминанием для всех участников экосистемы Git о важности регулярного обновления и внимательного отношения к вопросам безопасности. В целом, разработчикам рекомендуется постоянно следить за обновлениями официальных релизов, использовать проверенные методы аутентификации, а также избегать работы с непроверенными репозиториями, особенно когда речь идет о внедрении подмодулей или использовании графических инструментов.