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.
AI Security Analysis & Fix
🧐 Суть уязвимости
Злоумышленник может отправить специально сформированный запрос к API PutContents, который использует небезопасную обработку символических ссылок (symlink). Это позволяет выйти за пределы целевого каталога (Path Traversal) и записать произвольные файлы в файловую систему сервера. В результате возможна запись вредоносного кода (например, веб-шелла) и его последующее выполнение.
🛠️ Как исправить
Уязвимость устранена в релизах Gogs. Необходимо обновить установку до исправленной версии.
-
Определите текущую версию Gogs:
bash # Если Gogs запущен как служба sudo systemctl status gogs # Или проверьте файл VERSION в каталоге установки Gogs cat /path/to/gogs/VERSION -
Обновите Gogs до исправленной версии:
- Версия 0.14.0 и выше: Обновитесь до версии 0.14.2 или новее.
- Версии 0.13.0 и ниже: Сначала обновитесь до актуальной ветки 0.14.x, затем до 0.14.2+.
Способ обновления (пример для Linux): ```bash
1. Остановите службу Gogs
sudo systemctl stop gogs
2. Создайте резервную копию текущей установки и базы данных
sudo cp -r /path/to/gogs /path/to/gogs_backup_$(date +%Y%m%d)
(Выполните дамп вашей БД, например, для MySQL/PostgreSQL)
3. Скачайте и распакуйте исправленную версию (замените ссылку на актуальную)
wget https://github.com/gogs/gogs/releases/download/v0.14.2/linux_amd64.tar.gz tar -xzf linux_amd64.tar.gz -C /tmp/
4. Скопируйте новые файлы, сохранив конфигурацию и данные
sudo cp -r /tmp/gogs/* /path/to/your/gogs/installation/
5. Запустите службу Gogs
sudo systemctl start gogs ``` Важно: Всегда проверяйте официальные релизы Gogs на наличие самой последней исправленной версии.
🛡️ Временное решение
Если немедленное обновление невозможно, примите следующие меры для снижения риска:
-
Ограничьте сетевой доступ:
- Настройте межсетевой экран (firewall) так, чтобы доступ к веб-интерфейсу и API Gogs (порт по умолчанию
3000) был только с доверенных IP-адресов (например, корпоративной сети). ```bash
Пример для UFW: разрешить только с внутренней сети 192.168.1.0/24
sudo ufw allow from 192.168.1.0/24 to any port 3000 sudo ufw deny 3000 ```
- Настройте межсетевой экран (firewall) так, чтобы доступ к веб-интерфейсу и API Gogs (порт по умолчанию
-
Настройте обратный прокси (например, nginx) с WAF:
- Разместите Gogs за веб-сервером nginx и включите модуль ModSecurity с базовыми правилами для блокировки попыток Path Traversal.
- Добавьте в конфигурацию nginx строгие ограничения на URI.
nginx location /api/ { # Базовое ограничение на подозрительные последовательности в URL if ($request_uri ~* "\.\./") { return 403; } proxy_pass http://localhost:3000; }
-
Усильте контроль доступа к файловой системе:
- Запускайте процесс Gogs от отдельного непривилегированного пользователя (
gitилиgogs). - Убедитесь, что у этого пользователя есть права на запись только в необходимые каталоги (
data,logs,customи репозитории), а доступ к системным директориям (/etc,/root,/home/*) запрещен на уровне прав ОС.
- Запускайте процесс Gogs от отдельного непривилегированного пользователя (