Gitea в версиях от 1.22.0 до 1.27.1 содержит уязвимость обхода пути в обработчике Org-mode. Злоумышленник, работающий удалённо, может добраться до файлов за пределами разрешённого каталога, а при удачном стечении обстоятельств - выполнить на сервере собственный код. Учётная запись для этого не нужна: базовый вектор CVSS 3.1 даёт 9,8 из 10 при нулевых требованиях к правам и участию пользователя. Оценка CVSS 2.0 - максимальные 10 баллов.
CVE-2026-59774 в Gitea обход пути и Org-mode
Суть ошибки - в неверном ограничении имени пути к каталогу (CWE-22). Org-mode это формат заметок и планирования, знакомый пользователям редактора Emacs. Gitea умеет показывать такие файлы прямо в веб-интерфейсе репозитория, и именно этот обработчик не проверяет должным образом, куда ведёт запрошенный путь. Подставляя специальным образом собранные имена, злоумышленник заставляет приложение выйти за пределы каталога, к которому его должны были ограничить.
Дальше всё зависит от того, что лежит рядом. Конфигурационные файлы с паролями к базе данных, ключи подписи, чужие репозитории с закрытым кодом - всё это при неудачной раскладке оказывается в зоне досягаемости. В описании уязвимости указаны два последствия: несанкционированный доступ к защищаемой информации и выполнение произвольного кода. Второй сценарий тяжелее, поскольку превращает чтение файлов в полный контроль над узлом.
Затрагивает проблема в первую очередь организации, которые развернули Gitea на собственных серверах. Публичный хостинг с регистрацией открытой для всех тоже в группе риска: атакующему не требуется учётная запись, достаточно сетевого доступа к веб-интерфейсу. Внутренние инсталляции защищены слабее, чем кажется, если разработчики ходят в них через VPN без дополнительных проверок на стороне приложения.
Эксплойт уже есть
Сведения об уязвимости опубликованы 27 июля 2026 года, статус - подтверждена производителем. Рабочий эксплойт доступен публично: соответствующий репозиторий открыт на GitHub. Это меняет приоритеты. Пока код эксплойта не появился, у администраторов есть запас времени на плановое обновление. Сейчас такого запаса нет: любой, кто прочитал описание, может воспроизвести атаку против незакрытого сервера.
Проверить, пытались ли атаковать конкретную инсталляцию, можно по журналам веб-сервера. Подозрительны запросы к путям с фрагментами вида двух точек и косой черты внутри сегментов, особенно при обращении к файлам с расширением org. Обращения к Org-файлам от пользователей, которые не работают с этим форматом, тоже стоит изучить. Журналы нужно смотреть за период с момента установки версии из уязвимого диапазона.
Обновление до 1.27.1
Ошибку закрыли в выпуске 1.27.1. Производитель сопроводил исправление техническим описанием в блоге и двумя изменениями в коде, которые правят проверку пути. Всем, кто держит Gitea версий от 1.22.0 до 1.27.1, нужно перейти на 1.27.1 или более свежую сборку. Администраторам стоит свериться с точной версией: диапазон широкий, и часть установок обновлялась давно.
Порядок действий простой. Сначала обновляются экземпляры, открытые в интернет и принимающие регистрацию без подтверждения. Затем - доступные из внутренней сети. Если обновление нельзя поставить немедленно, ограничьте сетевой доступ к веб-интерфейсу доверенными адресами. Это снижает риск, но не устраняет причину. После установки новой версии проверьте журналы за время, прошедшее с момента выхода уязвимой сборки, и смените секреты, которые хранились на том же сервере вне каталога данных Gitea.
Обход пути остаётся одной из самых частых ошибок в самостоятельно размещаемом ПО. Причина в том, что проверку путей легко написать почти правильно, а почти здесь не считается. Для Gitea цена такой ошибки высока: платформа хранит исходный код, доступы к сборке и учётные данные CI. Один незакрытый сервер превращает чужую невнимательность в точку входа во всю цепочку разработки.
Ссылки
- https://bdu.fstec.ru/vul/2026-17774
- https://www.cve.org/CVERecord?id=CVE-2026-59774
- https://blog.gitea.com/release-of-1.27.1/
- https://github.com/go-gitea/gitea/pull/38642
- https://github.com/go-gitea/gitea/pull/38645
- https://github.com/go-gitea/gitea/releases/tag/v1.27.1
- https://github.com/go-gitea/gitea/security/advisories/GHSA-6v53-hr58-556r
- https://github.com/Ly0kha/CVE-2026-59774