CVE-2025-8110
Gogs Gogs
2026-01-12
Gogs contains a path traversal vulnerability affecting improper Symbolic link handling in the PutContents API that could allow for code execution.
Технический анализ и план устранения
Суть уязвимости
Уязвимость CVE-2025-8110 в Gogs связана с некорректной обработкой символических ссылок (symlinks) в методе API PutContents.
Данный недостаток логики приводит к уязвимости класса Path Traversal (обход каталога). Злоумышленник может сформировать специальный запрос к API, использующий символические ссылки, чтобы выйти за пределы изолированной директории репозитория. Это позволяет читать или произвольно перезаписывать файлы на файловой системе сервера.
Перезапись критически важных файлов (например, конфигурации сервера, Git-хуков в директории .git/hooks/ или файла ~/.ssh/authorized_keys) ведет к удаленному выполнению кода (RCE) с правами пользователя, от имени которого запущен процесс Gogs.
Как исправить
Единственным надежным способом устранения уязвимости является обновление Gogs до последней актуальной версии, в которой исправлена логика валидации путей в API.
Вариант 1: Обновление при использовании Docker
Остановите и удалите текущий контейнер (ваши данные останутся сохраненными в volume):
docker stop gogs
docker rm gogs
Загрузите последнюю версию образа с исправлениями безопасности:
docker pull gogs/gogs:latest
Запустите контейнер заново с вашими параметрами (пример):
docker run -d --name=gogs -p 10022:22 -p 10080:3000 -v /var/gogs:/data gogs/gogs:latest
Вариант 2: Обновление при бинарной установке (Linux)
Остановите службу Gogs:
systemctl stop gogs
Скачайте архив с последней версией (замените URL на актуальный релиз с официального сайта):
wget https://dl.gogs.io/latest/linux_amd64.tar.gz
Распакуйте скачанный архив:
tar -zxvf linux_amd64.tar.gz
Скопируйте новые файлы поверх старой установки (укажите ваш путь до директории Gogs):
cp -R gogs/* /opt/gogs/
Запустите службу Gogs:
systemctl start gogs
Временные меры
Если немедленное обновление невозможно, примените следующие компенсирующие меры для снижения риска эксплуатации:
- Ограничение прав процесса (Least Privilege): Убедитесь, что служба Gogs работает от имени выделенного пользователя (например,
git), который не имеет правsudoи не может писать в системные директории (/etc,/usr/bin,/var/wwwи т.д.). - Блокировка API на уровне Reverse Proxy: Если ваша команда не использует API для загрузки файлов, заблокируйте HTTP-метод
PUTдля эндпоинтовPutContentsна уровне Nginx, Apache или WAF. Это предотвратит эксплуатацию уязвимого вектора извне. - Мониторинг и алертинг: Настройте SIEM-систему или сборщик логов на отслеживание HTTP-запросов
PUTк путям вида/api/v1/repos/*/contents/*. - Аудит файловой системы: Внедрите систему контроля целостности файлов (FIM), такую как Wazuh или OSSEC, для мониторинга несанкционированных изменений в директории пользователя
git(особенно в.ssh/authorized_keys) и в системных конфигурациях.