В Gitea 1.22.1–1.27.0 обнаружена уязвимость CVE-2026-59774 с оценкой 9,8 балла: анонимному злоумышленнику достаточно публичного репозитория и специально подготовленной разметки Org-mode, чтобы читать файлы, доступные служебной учётной записи сервера. Исправление вошло в Gitea 1.27.1.
Атака проходит через маршрут визуализации разметки POST /{owner}/{repo}/markup. Для публичного репозитория этот обработчик допускает анонимный запрос, а используемая библиотека go-org в прежней конфигурации сохраняла стандартную функцию ReadFile. Директива #+INCLUDE принимала абсолютный путь и возвращала содержимое файла с сервера.
Ни учётная запись, ни право записи в репозиторий для базовой атаки не требуются. Ограничением служит наличие хотя бы одного общедоступного репозитория с включённым разделом кода: если публичных репозиториев нет, описанный анонимный путь недоступен. Однако после чтения файлов последствия определяются полномочиями процесса Gitea и могут затронуть конфигурацию, токены и реквизиты базы данных.
Gitea предупреждает и о возможном развитии атаки до выполнения команд. Прочитав app.ini и получив INTERNAL_TOKEN, нарушитель теоретически может внедрить Git-хук через внутренний журнал и запустить его анонимным клонированием. Независимо опубликованного эксплойта для всей этой цепочки пока нет, но критичность базового чтения файлов подтверждена официальным бюллетенем.
Исправление меняет обработчик Org-mode: путь из директивы включения теперь выводится как обычный текст и не передаётся функции чтения файловой системы. Облачные экземпляры Gitea должны обновляться автоматически в окно обслуживания, а владельцам самостоятельных установок необходимо как можно скорее перейти на версию 1.27.1 или новее.
Если уязвимый сервер был доступен извне, администраторам следует проверить анонимные POST-запросы к путям вида /{owner}/{repo}/markup, особенно с выбором Org-mode и абсолютными путями. Также стоит изучить каталоги Git-хуков на наличие неизвестных исполняемых файлов.
При обнаружении подозрительных обращений безопаснее считать доступные процессу Gitea секреты скомпрометированными: заменить INTERNAL_TOKEN, OAuth-реквизиты, ключи подписи JWT и пароль базы данных, а затем проверить журналы и целостность репозиториев. На 5 августа разработчики не сообщали о подтверждённой эксплуатации в реальных атаках. Подробности опубликованы в официальном бюллетене Gitea.
Gitea закрыла критическую уязвимость чтения файлов без авторизации
Источник: Gitea