В Git-платформе Gitea обнаружена уязвимость, которая позволяет неавторизованному удалённому атакующему читать произвольные файлы на сервере и в итоге добиться выполнения команд. Проблема затрагивает версии с 1.22.1 по 1.27.0 включительно, патч выпущен в версии 1.27.1.
Уязвимость CVE-2026-59774
Специалисты оценили степень риска как критическую: базовый показатель CVSS v3 составляет 10,0 из 10. Вектор атаки - сетевой, сложность низкая, для эксплуатации не нужны привилегии и участие пользователя. Таким образом, любой человек, имеющий доступ к сети, может попытаться использовать эту брешь.
Проблема кроется в механизме рендеринга разметки в Gitea. Платформа принимает запросы на обработку текста в формате Org-mode через специальный адрес, который относится к конкретному репозиторию. Обычно этот маршрут проверяет права читателя, однако для публичных репозиториев проверка не становится преградой - анонимный пользователь проходит её автоматически.
Злоумышленнику достаточно отправить POST-запрос к конечной точке разметки любого публичного репозитория с включённым кодом. В этом случае не нужно коммитить файлы или получать права на запись. Для активации уязвимого режима нужно указать в параметрах формат файла и имя, заканчивающееся на ".org". Так система переключается на Org-mode рендерер.
В версии Gitea 1.27.0 и более ранних используется сторонняя библиотека go-org, которая при инициализации получает стандартный обработчик чтения файлов. Этот обработчик позволяет директиве "#+INCLUDE" принимать абсолютные пути. Поскольку Gitea не ограничивает диапазон включаемых файлов заданной директорией, атакующий может указать в качестве пути любой файл, доступный учетной записи службы Gitea.
Непосредственным последствием становится раскрытие конфигурационных файлов: например, "app.ini", внутренних токенов аутентификации, секретов OAuth и JWT, а также данных о развертывании. Особую опасность представляет кража внутреннего токена Gitea ("INTERNAL_TOKEN"). В отчёте указано, что с его помощью можно взаимодействовать с внутренней функциональностью платформы, в том числе внедрить вредоносный Git-перехватчик (hook) через внутренний логгер, а затем вызвать выполнение команды в момент, когда анонимный пользователь клонирует репозиторий. Это уже полноценный сценарий удалённого выполнения кода.
Для успешной атаки достаточно, чтобы в Gitea существовал хотя бы один публично читаемый репозиторий с включённым модулем кода. Стандартный публичный репозиторий соответствует этому условию, поэтому интернет-экземпляры Gitea требуют первоочередного внимания.
Разработчики уже выпустили исправление в версии 1.27.1. Администраторам настоятельно рекомендуется обновить свои серверы. До установки патча следует ограничить доступ к публичным репозиториям, если это возможно, а также проанализировать логи Gitea на предмет подозрительных запросов к конечной точке разметки.
Если есть основания полагать, что уязвимость уже была использована, необходимо ротировать значения внутренних токенов и другие секреты, хранящиеся в конфигурационных файлах. Дополнительно стоит проверить Git-перехватчики, глобальные настройки Git и недавнюю активность репозиториев на предмет несанкционированных изменений.
Уязвимость обнаружили специалисты компании xbow-security, техническую обработку выполнил Гвидо Лео, независимо о ней также сообщил исследователь, известный под псевдонимом NightRang3r. Данные о проблеме опубликованы в открытой базе GitHub Advisory.
Эта уязвимость привлекает внимание к тому, как платформы для совместной разработки обрабатывают пользовательские форматы файлов. Даже безопасный на первый взгляд маршрут рендеринга разметки может стать точкой входа, если библиотеки, используемые для обработки, позволяют обращаться к файловой системе без ограничений. Установка обновления в кратчайшие сроки остаётся главной мерой защиты, а для публично доступных хранилищ кода - ещё и поводом пересмотреть политики доступа к репозиториям.
Ссылки