Gitea: 27 уязвимостей закрыто, включая обход SSH-аутентификации

Gitea выпустила обновления безопасности, закрывающие 27 уязвимостей в версиях 28.0.0 и 28.1.0. Среди них — критический обход SSH-аутентификации и несколько SSRF, затрагивающих доступ к аккаунтам, права на репозитории, автоматизированные рабочие процессы и соединения с внутренними системами. Администраторам стоит отнестись к обновлению как к срочному для своей инфраструктуры разработки — по той же логике, по которой нельзя откладывать критические патчи GitLab для self-hosted.

Релиз 28.0.0 вышел 30 сентября и содержит 20 CVE в описании безопасности; суммарные 27 охватывают его и последовавший 28.1.0, а не только 28.0.0. В Gitea также отказались от исторического префикса «1.» в нумерации версий, поэтому релиз называется 28.0.0, а не 1.28.0.

Обход SSH-аутентификации: CVE-2026-103059

Главная уязвимость — CVE-2026-103059 с оценкой CVSS 9.1, она затрагивает развёртывания со встроенным SSH-сервером Gitea. Поиск открытого ключа использовал сравнение SQL LIKE, которое на некоторых базах данных игнорирует регистр букв, включая стандартную базу SQLite. Из-за этого специально сформированный RSA-ключ мог совпасть с зарегистрированным ключом другого пользователя.

Атакующий, который построит подходящий регистровый вариант публичного ключа жертвы и выведет соответствующий приватный ключ, сможет аутентифицироваться как эта жертва. Это не универсальный обход с любым изменённым ключом: атакующий должен выполнить указанные требования к ключу. Теперь Gitea идентифицирует предъявляемые ключи по отпечаткам, убрав небезопасное текстовое сравнение.

SSRF в миграциях и зеркалах репозиториев

Несколько закрытых уязвимостей позволяли миграциям и зеркалам репозиториев обходить правила исходящих соединений. CVE-2026-70357 связана с разрывом между проверкой имени хоста и фактическим подключением по Git. Атакующий мог изменить DNS-ответ имени хоста в этот промежуток и направить Gitea на внутренний хост уже после того, как первичная проверка безопасности прошла.

CVE-2026-101027 позволяла одобренному домену пропускать проверки IP назначения, а CVE-2026-101029 использовала несколько DNS-ответов для обхода allowlist исходящих соединений. Ещё одна уязвимость, CVE-2026-89430, давала push-зеркалам подключаться к внутренним Git-хостам после того, как их сохранённые адреса прошли более раннюю проверку, что потенциально позволяло выполнять принудительные push. Похожий класс проблем с SSRF до входа в систему недавно разбирали и в SonicWall SMA1000.

Теперь Gitea направляет сетевые операции Git через внутренний прокси, который применяет правила исходящего доступа в момент подключения. Администраторам нужно просмотреть изменения конфигурации до обновления. Для политики запрета по умолчанию в примечаниях к релизу указано задать EGRESS_MODE = strict и явно перечислить разрешённые хосты.

Дыры в одобрениях Gitea Actions и другие исправления

Обновление также закрывает пробелы в одобрениях Gitea Actions. CVE-2026-104632 позволяла отменённому fork-воркфлоу, ожидающему одобрения, при повторном запуске добраться до self-hosted раннеров. CVE-2026-94205 проверяла только актора события, позволяя запустить воркфлоу недоверенного контрибьютора по событию от мейнтейнера без требуемого одобрения. Обе проверки ужесточены.

Другие исправления касаются хранимого межсайтового скриптинга в блобах контейнеров, дублирующихся записей дерева Git, которые могли скрыть вредоносные файлы от проверяющих, и ошибки установщика, выдававшей сессию существующего администратора без проверки пароля. Исправления прав доступа также убирают остаточный доступ при передаче репозитория и не дают deploy-ключам наследовать привилегии владельца репозитория.

Администраторам следует сделать резервную копию данных, просмотреть ломающие изменения и обновиться до 28.1.0. В примечаниях к релизу Gitea объясняются новые сетевые правила, минимальная версия Git 2.25 и изменённое поведение рабочих процессов.

Что делать администратору

Порядок действий для тех, кто обновляется:

  • сделайте резервную копию данных и конфигурации;
  • просмотрите ломающие изменения и изменения конфигурации, особенно правила исходящих соединений;
  • при необходимости запрета по умолчанию задайте EGRESS_MODE = strict и перечислите разрешённые хосты;
  • обновитесь до версии 28.1.0;
  • проверьте, что установленная версия Git не ниже 2.25.

Если обновиться сразу нельзя, стоит как минимум ограничить исходящие соединения на уровне сети и пересмотреть, кто имеет доступ к запуску рабочих процессов и зеркалам репозиториев. Для пользователей реестровых ОС и внутренних Git-сервисов это тот же случай, что и с уязвимостями ядра Linux с повышением до root: патч откладывать нельзя, а компенсирующие меры настраиваются до обновления.

Частые вопросы

Кого касается это обновление?

Всех, кто развёртывает Gitea, особенно с встроенным SSH-сервером и включёнными миграциями или зеркалами репозиториев. Уязвимость с обходом SSH-аутентификации затрагивает именно такие инсталляции.

Насколько опасна CVE-2026-103059?

Её оценка — CVSS 9.1. Однако это не универсальный обход: атакующему нужно построить подходящий регистровый вариант публичного ключа жертвы и вывести соответствующий приватный ключ.

Почему в релизе 28.0.0, а не 1.28.0?

Gitea отказалась от исторического префикса «1.» в нумерации версий. Поэтому релиз называется 28.0.0.

Сколько всего уязвимостей закрыто?

27, при этом 20 CVE перечислены в описании безопасности релиза 28.0.0, а суммарные 27 охватывают его и обновление 28.1.0.

Как настроить запрет исходящих соединений по умолчанию?

В примечаниях к релизу указано задать EGRESS_MODE = strict и явно перечислить разрешённые хосты.

Какая минимальная версия Git требуется?

В примечаниях к релизу указана минимальная версия Git 2.25.

Что изменилось в поведении рабочих процессов?

Ужесточены проверки одобрений Gitea Actions: закрыты обходы, при которых отменённый fork-воркфлоу добирался до self-hosted раннеров, а событие от мейнтейнера запускало воркфлоу недоверенного контрибьютора без одобрения.

До какой версии обновляться?

Рекомендуется обновиться до 28.1.0, предварительно сделав резервную копию и просмотрев ломающие изменения.

Источник: cybersecuritynews.com