10 ноября 2026 года проект Git выпустил корректирующие релизы, закрывающие шесть уязвимостей, включая выполнение чужого кода при рекурсивном клонировании. Патчи вышли в семи ветках, от 2.56.1 до 2.50.2. Обновить стоит все копии Git, включая встроенные в сторонние продукты. Подтверждённой активной эксплуатации нет, но читатели OpenNet напоминают: обновления доступны уже несколько дней — тянуть не стоит.
Главная дыра — подмена .git через усечённый путь
Наиболее опасна CVE-2026-111760. При обработке индекса сверхдлинный путь вида «.gitA/AAA…» проходит проверку под полным именем, а записывается под коротким «.git» — целочисленное усечение (по данным OpenNet, 64-разрядный size_t усекается до 32-разрядного поля ce_namelen). Атакующий подменяет файл .git субмодуля символической ссылкой на каталог с чужими хуками и конфигурацией — и при клонировании с --recurse-submodules Git исполняет эти хуки — код атакующего. Сработало потому, что подменить каталог .git симлинком Git не даёт, а во свежесклонированном субмодуле .git — файл. SecurityOnline даёт 8.0 (High) по CVSSv3, NVD баллов не присвоила.
Остальные пять уязвимостей
| CVE | Суть проблемы |
|---|---|
| CVE-2026-105437 | Переполнение при расчёте размера больших слияний (int) — heap buffer overflow; в GitLab+Gitaly — выполнение команд через git merge-tree (через conflict-marker-size в .gitattributes) |
| CVE-2026-114467 | Повреждение стека в remove_signature(): массив рассчитан на 2 GPG-подписи, три и более в теге пишут за его пределы |
| CVE-2026-114469 | Лимит бинарных патчей ~1 GiB проверялся по сжатому размеру: разворачивающийся за лимит патч — чтение вне буфера и крах |
| CVE-2026-113408 | Запись вне каталога refs/ через symref HEAD («refs/heads/../../../TARGET») при клонировании пустого репозитория по протоколу Git v2 |
| CVE-2026-114466 | fast-import: rewrite-submodules-from, rewrite-submodules-to и export-pack-edges не закрыты после CVE-2019-1348 — чтение произвольных файлов с раскрытием в ошибках |
Дополнительно добавлены проверки переполнения при выделении памяти под записи индекса при checkout и обработке деревьев.
Хостинги и дистрибутивы
GitHub закрыл дыры на github.com и в Enterprise Cloud; для Enterprise Server вышли патчи 3.19.15, 3.20.11, 3.21.9 и 3.22.4. Готовятся сборки GitHub Desktop, приложения Copilot, Codespaces и Actions с пропатченным Git; Git for Windows на 19:09 UTC 10 ноября ещё не выпустил сборку на базе 2.56.1.
GitLab в тот же день выпустил критические релизы 19.5.4, 19.4.6 и 19.3.8 с обновлённым Git в Gitaly (CVE-2026-105437); уязвимы версии CE/EE с 16.2. GitLab.com и GitLab Dedicated уже закрыты; self-managed нужен апдейт Gitaly или пересборка Git из ветки Gitaly stable. Обходной путь: conflict-marker-size=7 в info/attributes каждого репозитория либо отключение проверок слияния для недоверенных.
В Debian на 12 ноября исправлений нет: git уязвим во всех актуальных ветках, заведён bug 1153670. Red Hat даёт CVE-2026-113408 5.4 (Moderate): нужен вредоносный или скомпрометированный репозиторий, выполнения кода и повышения привилегий уязвимость не даёт; для RHEL 9/10 — Fix deferred.
Данные расходятся: бэкпорты CVE-2026-105437 — по официальному анонсу до 2.50.2, по SecurityOnline — вплоть до 2.49.1; серьёзность: GitLab — Critical, SecurityOnline — 7.5, NVD молчит.
Что делать, пока патч не установлен
- Проверяем версию (git --version) и обновляемся до 2.56.1 или патча своей ветки.
- Не клонируем недоверенные репозитории рекурсивно с --recurse-submodules — главная дыра срабатывает именно так.
- Клонируем только с доверенных серверов, не сливаем недоверенный контент и теги.
- Не обрабатываем бинарные патчи и fast-import-потоки из недоверенных источников.
- На серверах без обновления — обходной путь с conflict-marker-size=7.
Меры не заменяют установку исправлений.
Ваш опыт?
В русскоязычных изданиях новость появилась 12 ноября, патчи же доступны с 10-го. Расскажите в комментариях: что принёс ваш дистрибутив, обновились ли на серверах, пользуетесь ли рекурсивными клонами недоверенных репозиториев?
Комментарии (0)
Оставьте первый комментарий.