Git 2.56.1: закрыли RCE при рекурсивном клонировании с сабмодулями
10 ноября 2026 года проект Git выпустил 2.56.1 и бэкпорты для шести актуальных веток. Патч закрывает шесть уязвимостей, старшая из которых — выполнение кода атакующего при рекурсивном клонировании репозитория с сабмодулями.

10 ноября 2026 года проект Git объявил о выпуске версии 2.56.1 вместе с бэкпортами для веток 2.50.2, 2.51.3, 2.52.1, 2.53.1, 2.54.1 и 2.55.1. Релиз закрывает шесть уязвимостей сразу; The Hacker News независимо подтвердил детали официального анонса GitHub и добавил технические подробности, которых не было в первом посте.
Что случилось: CVE-2026-111760
Старшая уязвимость партии, CVE-2026-111760, — это целочисленное усечение (integer truncation) в том, как Git обрабатывает индекс. Чрезмерно длинный путь в репозитории проходит проверку безопасности под одним именем, но затем Git записывает его на диск уже под укороченным именем — и атакующий может подставить туда имя .git. Это позволяет заменить файл .git сабмодуля символической ссылкой на каталог со вредоносными хуками или конфигурацией. Git отказывается заменять символической ссылкой .git-каталог, но в свежесклонированном сабмодуле .git — это обычный файл, а не каталог, поэтому защита не срабатывает. Хуки — это программы, которые Git запускает в определённых точках своей работы, так что как только Git обращается к подменённому каталогу, код атакующего выполняется на машине жертвы. Фикс отклоняет чрезмерно длинные пути индекса до того, как их можно усечь.
Остальные пять уязвимостей
В тот же релиз вошли ещё пять исправлений, часть из которых особенно актуальна для хостингов и CI:
- CVE-2026-113408 — path traversal через объявленный сервером HEAD при клоне пустого репозитория по протоколу v2
- CVE-2026-114467 — повреждение стека при слиянии тега с более чем двумя GPG-подписями, DoS для сервисов, которые мёрджат чужие теги автоматически
- CVE-2026-114469 — переполнение буфера при распаковке слишком большого бинарного патча
- CVE-2026-105437 — повреждение кучи при крупном merge с большим числом конфликтов и атрибутом
conflict-marker-size; по данным GitLab, в зоне риска в первую очередь серверы, автоматически проверяющие мерджи черезgit merge-tree - CVE-2026-114466 — возможность чтения и записи произвольных файлов через функции
fast-import(rewrite-submodules-from,rewrite-submodules-to,export-pack-edges), которые теперь по умолчанию отклоняются во входном потоке
Что сделать прямо сейчас
- Обновить Git до 2.56.1 или ближайшего бэкпорта на всех машинах, где идёт рекурсивное клонирование чужих репозиториев с сабмодулями — включая CI-раннеры и контейнерные образы сборки
- До обновления не клонировать рекурсивно репозитории из непроверенных источников, не мёрджить чужие теги и не обрабатывать бинарные патчи и fast-import потоки от источников, которым нет доверия — GitHub называет эти меры временными, а не заменой патча
- Проверить, не собирает ли внутренний инструментарий собственную копию Git (например, обёртки вокруг GitPython или самописные CI-образы) — таким приложениям нужен отдельный апдейт зависимости, обновление системного Git их не затронет
Разбор шести уязвимостей разом в одном релизе — лишний повод свериться, остаётся ли git-инфраструктура проекта и его сабмодули в зоне чьей-то постоянной ответственности. Там, где разработка идёт эпизодически или подрядчик меняется от задачи к задаче, такой security-релиз в CI-образах и сабмодулях легко пропускают месяцами. Подрядчику, который берёт разработку проекта под ключ, проще держать подобные патчи в плановом цикле релизов, чем разбирать уязвимость постфактум, когда её уже начали эксплуатировать.



