В GitHub Enterprise Server - серверной версии платформы, которую организации разворачивают в собственной инфраструктуре, - закрыли две уязвимости. Первая позволяет заставить сервер обращаться к внутренним адресам сети и в перспективе выполнить на нём код, вторая даёт участнику репозитория с правом записи заменить основную ветку проекта на подконтрольную и обойти обязательную проверку кода. Исправления вышли в версиях 3.18.16, 3.19.13, 3.20.9, 3.21.7 и 3.22.2.
Детали уязвимостей
Серверную подделку запросов GitHub отнесла к высокому уровню опасности и запросила для неё идентификатор CVE-2026-96890. Механика выглядит так. Злоумышленник отправляет в репозиторий поддельные сервисные учётные данные Google Cloud Platform, в которых адрес получения токена указывает на внутренний ресурс корпоративной сети. Когда средство сканирования секретов (secret scanning, поиск ключей и паролей в коде) проверяет, действительны ли эти данные, устройство обращается по указанному адресу, не проверяя его должным образом. Получается уязвимость класса SSRF, то есть подделка запросов на стороне сервера: запрос уходит туда, куда извне попасть нельзя.
Уязвимость такого класса в приложении, стоящем внутри периметра, даёт доступ к служебным интерфейсам, системам управления и облачным метаданным. Разработчики GitHub прямо указывают, что следствием может стать выполнение кода на самом устройстве Enterprise Server.
Для эксплуатации нужны три условия сразу: право на отправку изменений в репозиторий, включённый модуль GitHub Advanced Security и активная функция проверки действительности секретов. Без них цепочка не срабатывает. Модуль входит в платную подписку, поэтому круг потенциально уязвимых установок уже, чем у версии, размещённой в облаке GitHub. Для крупных заказчиков с включённым расширенным набором средств защиты риск остаётся заметным.
Вторая уязвимость, CVE-2026-103620, помечена как средний уровень опасности. Здесь участник проекта с правом записи обращается к интерфейсу GraphQL API и удаляет текущую основную ветку. Основной после этого становится другая ветка, содержимым которой управляет атакующий. Если в репозитории включена обязательная проверка запросов на слияние, но удаление ветвей не запрещено, требование проверки обходится. Свежие клоны репозитория и запросы к основной ветке через программный интерфейс начинают отдавать чужой код.
Последствие касается не только разработчиков. Сборочные конвейеры и системы развёртывания, которые забирают код из основной ветки, могут получить подставленное содержимое без ревью. Уязвимость требует прав на запись в репозиторий, то есть речь идёт о внутреннем злоумышленнике, скомпрометированной учётной записи или о сговоре участника проекта с посторонним. Анонимной атаки из интернета здесь нет.
Обе проблемы нашли через программу вознаграждений GitHub Bug Bounty. Данных о попытках эксплуатации в реальных атаках GitHub не публиковала.
Обновления закрывают разные наборы ошибок в зависимости от ветки. В версиях 3.20.9, 3.21.7 и 3.22.2 исправлены обе уязвимости. В примечаниях к 3.18.16 и 3.19.13 упомянута только проблема с основной веткой, исправление серверной подделки запросов для этих линий не указано. GitHub отдельно напоминает, что 3.18.16 не является последним выпуском и для полного набора исправлений безопасности стоит переходить на актуальную версию платформы.
Администраторам стоит действовать в двух направлениях. Первое - обновить установку до одной из перечисленных версий, если обновление ещё не выполнено. Второе - проверить настройки защиты репозиториев: включить запрет на удаление основной ветки и убедиться, что обязательная проверка кода не обходится сменой ветки по умолчанию. Отдельного внимания заслуживают установки с включённым GitHub Advanced Security и проверкой действительности секретов: именно они попадают под серверную подделку запросов, а такие экземпляры обычно содержат исходный код, ключи доступа и связи с внутренними сервисами компании.
Проблемы в продуктах для совместной работы над кодом опасны не самой ошибкой, а местом, которое они занимают в инфраструктуре. Сервер разработки видит репозитории, секреты, сборочные системы и сети организации, поэтому даже средний по оценке недостаток превращается в инструмент для обхода правил проверки кода.
Ссылки
- https://docs.github.com/en/enterprise-server@3.18/admin/release-notes
- https://docs.github.com/en/enterprise-server@3.19/admin/release-notes
- https://docs.github.com/en/enterprise-server@3.20/admin/release-notes
- https://docs.github.com/en/enterprise-server@3.21/admin/release-notes
- https://docs.github.com/en/enterprise-server@3.22/admin/release-notes