Библиотека GitPython позволяет программам на языке Python работать с репозиториями Git. Её подключают инструменты сборки, конвейеры непрерывной интеграции и служебные скрипты, которым нужно читать ветки, историю изменений и настройки проектов. Уязвимость BDU:2026-12705 (CVE-2026-78676) затрагивает парсер конфигурации этой библиотеки. Нарушитель, действующий удалённо, получает возможность выполнить на целевой системе произвольный код. Банк данных угроз безопасности информации относит проблему к критическому уровню опасности. Базовая оценка по CVSS 3.1 составляет 9,8, по CVSS 4.0 - 9,3, по CVSS 2.0 - 10. Уязвимы выпуски GitPython до 3.1.58 включительно.
Детали уязвимости
Ошибка относится к классу внедрения или модификации аргумента (CWE-88). Такая уязвимость появляется, когда данные из внешнего источника попадают в список аргументов команды и не отделяются от него. Парсер читает файлы настроек Git и передаёт полученные значения дальше по цепочке вызовов. Если злоумышленник влияет на содержимое этих файлов, он дописывает собственные параметры. Программа принимает их за часть команды, а не за данные. От внедрения команд эта ошибка отличается тем, что нарушитель не подставляет собственную команду целиком, а меняет поведение уже запущенного процесса. Конфигурационные файлы репозиториев меняются редко, поэтому подозрительная правка может долго оставаться незамеченной. Учётные данные и действия пользователя для атаки не нужны, поскольку она идёт по сети.
Вектор уязвимости описывает атаку как сетевую, с низкой сложностью, без необходимости в правах доступа и без участия пользователя. Все три версии стандарта CVSS дают высокие оценки по конфиденциальности, целостности и доступности. Это значит, что успешная эксплуатация оборачивается полным контролем над процессом, который работает с библиотекой. На практике страдает не только сама программа, но и данные, к которым она имеет доступ. Из-за таких оценок исправления подобного рода обычно выходят вне общего графика выпуска версий.
Уязвимы выпуски GitPython до 3.1.58 включительно. Библиотека распространяется с открытым исходным кодом, поэтому её встраивают в сторонние продукты и внутренние разработки. В описании тип пострадавшего программного обеспечения обозначен как прикладное ПО информационных систем. Конкретные операционные системы не названы, эти данные уточняются. Ограничений по платформам при этом не ожидается, потому что уязвимость находится в коде библиотеки, а не в среде исполнения. Следовательно, под угрозой окажутся любые системы с уязвимым выпуском: серверы сборки, автоматизированные конвейеры выпуска, внутренние утилиты администраторов. Значимая часть задач приходится на автоматизированные системы, где человек не проверяет каждый шаг. Для компаний это означает риск того, что компрометация одного звена сборки скажется на итоговых сборках продуктов.
Уязвимость подтвердил производитель. Эксплойт уже выложен в открытый доступ. Готовый инструмент снижает требования к подготовке атакующего. Сведений о применении этой уязвимости в реальных атаках в исходных данных нет.
Правка вошла в выпуск GitPython 3.1.59. Разработчики рекомендуют обновиться до этой версии или более поздней. Обновление касается самой библиотеки, однако пересборка продуктов может потребоваться, если уязвимый выпуск зафиксирован в неизменяемом образе контейнера. Проверить установленные версии можно в списке зависимостей проекта или средствами менеджера пакетов. Для приложений, которые давно не обновлялись, стоит отдельно уточнить, не подтягивается ли GitPython как транзитивная зависимость, то есть как элемент чужой библиотеки.
Пока обновление не установлено, разумно ограничить круг лиц и систем, которые могут изменять файлы конфигурации репозиториев. Кроме того, стоит исключить обработку настроек из непроверенных источников. В конвейерах сборки полезно закрепить версии зависимостей, чтобы сборка не подтянула уязвимый выпуск повторно. Помогает и запуск сборочных процессов с минимальными правами: тогда выполнение произвольного кода останется внутри изолированной среды (песочницы). Инвентаризация библиотек показывает, где именно применяется GitPython и какие продукты зависят от него косвенно. Для крупных организаций это означает необходимость согласовать обновление со службами, которые отвечают за сборку и релизы.
Ссылки
- https://bdu.fstec.ru/vul/2026-12705
- https://www.cve.org/CVERecord?id=CVE-2026-78676
- https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-284h-m62q-gf8w