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) и в системных конфигурациях.