В Gogs — популярном решении для самостоятельного хостинга Git-репозиториев — обнаружена критическая уязвимость удалённого выполнения кода (RCE) с оценкой CVSS 9.4, по данным исследователей Rapid7. Уязвимость позволяет любому аутентифицированному пользователю выполнить произвольные команды на сервере через создание pull request с вредоносным именем ветки. Патч на момент публикации отсутствует, а публичный модуль Metasploit уже автоматизирует полную цепочку эксплуатации. Администраторам Gogs-инстансов необходимо немедленно применить обходные меры защиты — отключить регистрацию, ограничить создание репозиториев и провести аудит настроек rebase-слияния.
Механизм эксплуатации: инъекция аргументов в git rebase
Суть уязвимости заключается в недостаточной санитизации имён веток при выполнении операции «Rebase before merging». Как сообщает исследователь Джона Бёрджесс из Rapid7, атакующий создаёт pull request с именем ветки, содержащим флаг --exec, который инжектируется в команду git rebase. Согласно официальной документации Git, параметр --exec принимает произвольную shell-команду, выполняемую после применения каждого коммита в процессе rebase.
Ключевая особенность уязвимости — крайне низкий порог входа для атакующего. По данным исследователей, для эксплуатации не требуются привилегии администратора и взаимодействие с другими пользователями. На инстансе Gogs с конфигурацией по умолчанию цепочка атаки выглядит следующим образом:
- Атакующий регистрирует учётную запись на целевом инстансе
- Создаёт собственный репозиторий (создатель автоматически становится владельцем)
- Включает опцию rebase-слияния — это единственный переключатель в настройках
- Создаёт pull request с вредоносным именем ветки, содержащим инъекцию
--exec - При выполнении rebase-слияния произвольная команда исполняется на сервере
В альтернативном сценарии, если создание репозиториев ограничено, атакующему достаточно иметь доступ на запись к любому репозиторию, в котором уже включено rebase-слияние. Уязвимость, как сообщается, затрагивает все поддерживаемые платформы: Windows, Linux и macOS.
Отсутствие патча и доступность эксплойта
По данным Rapid7, уязвимость была сообщена мейнтейнеру проекта 17 марта 2026 года, однако на момент раскрытия информации исправление отсутствует. Уязвимости не присвоен идентификатор CVE, что затрудняет её отслеживание через стандартные базы данных. Оценка CVSS 9.4 исходит от Rapid7 и не подтверждена вендором или NVD.
Ситуацию усугубляет наличие публичного модуля Metasploit, автоматизирующего полную цепочку эксплуатации для Linux и Windows. Модуль поддерживает два режима работы:
- Режим по умолчанию: создаётся временный репозиторий под учётной записью атакующего, выполняется эксплойт, репозиторий удаляется. Единственный след — запись HTTP 500 в серверных логах.
- Целевой режим: эксплуатация существующего репозитория, к которому атакующий имеет доступ на запись и слияние. В этом случае остаётся больше артефактов.
Минимальный след в логах при использовании первого режима делает обнаружение атаки значительно сложнее для команд реагирования на инциденты.
Оценка воздействия
Успешная эксплуатация уязвимости, по данным исследователей, может привести к следующим последствиям:
- Полная компрометация сервера с доступом ко всем репозиториям на инстансе
- Извлечение учётных данных и секретов из хранилищ
- Латеральное перемещение к другим системам, доступным по сети
- Модификация кода в любом размещённом репозитории — потенциальный вектор атаки на цепочку поставок
- Межпользовательская утечка данных: чтение приватных репозиториев других пользователей на том же сервере
Последний пункт особенно критичен для организаций, использующих общий инстанс Gogs для нескольких команд или проектов. Компрометация одной учётной записи с минимальными привилегиями потенциально раскрывает весь массив размещённого кода.
Рекомендации по защите
В отсутствие официального патча необходимо немедленно применить следующие меры:
- Отключить открытую регистрацию: установить
DISABLE_REGISTRATION = trueв файлеapp.ini, чтобы предотвратить создание учётных записей недоверенными пользователями - Ограничить создание репозиториев: установить
MAX_CREATION_LIMIT = 0вapp.ini, чтобы пользователи не могли самостоятельно создавать репозитории - Провести аудит настроек rebase-слияния: проверить все репозитории на наличие включённой опции «Rebase before merging» и отключить её там, где она не является необходимой
- Проверить серверные логи: обратить внимание на записи HTTP 500, которые могут свидетельствовать о попытках эксплуатации
- Рассмотреть миграцию: для организаций с высокими требованиями к безопасности — оценить переход на активно поддерживаемые альтернативы, такие как Gitea (форк Gogs с более активным циклом обновлений безопасности)
Сочетание отсутствия патча, публично доступного модуля Metasploit и низкого порога эксплуатации создаёт окно повышенного риска для всех инстансов Gogs. Приоритетное действие — отключение регистрации и rebase-слияния на всех инстансах, доступных из интернета или недоверенных сегментов сети, до выхода официального исправления от мейнтейнера проекта.