📂 Один заголовок — и ты админ. Обход аутентификации в Gitea
Критическая уязвимость CVE-2026-20896 в Gitea — платформе с открытым исходным кодом для локально размещенных Git-репозиториев — была устранена в релизе 1.26.3 во второй половине июня 2026 года после сообщения исследователя rz1027. CVE-номер был зарегистрирован позже, 3 июля.
📡 СКИПА фиксирует около 22 900 уникальных хостов с Gitea, доступных извне. Из них 83% потенциально могут быть подвержены CVE-2026-20896.
Уязвимость позволяет неаутентифицированному злоумышленнику с сетевым доступом выдать себя за существующего пользователя, а при включённой авто-регистрации — за произвольное имя пользователя, через HTTP-заголовок X-WEBAUTH-USER при определённой настройке аутентификации через обратный прокси (reverse-proxy).
Для успешной атаки требуется специфическая конфигурация: Gitea должен быть развёрнут через Docker-образ с уязвимыми настройками и включённой reverse-proxy аутентификацией. Это может влиять на итоговое количество реально уязвимых хостов. Пользователи СКИПА PentOps своевременно уведомлены.
🔧 Механизм эксплуатации
Проблема связана с тем, что официальные Docker-образы Gitea до версии 1.26.3 использовали небезопасное значение по умолчанию:
REVERSE_PROXY_TRUSTED_PROXIES = *
При включённой reverse-proxy аутентификации (ENABLE_REVERSE_PROXY_AUTHENTICATION = true) Gitea начинает доверять заголовку X-WEBAUTH-USER от любого IP-адреса, а не только от доверенного reverse proxy. По умолчанию безопасным значением считается 127.0.0.0/8,::1/128, то есть доверие только к адресам обратной связи (loopback-адреса). Именно это значение в официальном шаблоне Docker app.ini было заменено на шаблон с разрешением для всех адресов.
В результате злоумышленник может отправить запрос с заголовком вида X-WEBAUTH-USER: <username> и быть аутентифицированным как указанный пользователь без пароля, токена или действующей сессии. Если в Gitea включена авто-регистрация, аккаунт с указанным именем создаётся в системе автоматически — атакующему не обязательно знать существующий логин, он может указать произвольное имя. Наиболее опасный сценарий — успешный вход под учётной записью администратора.
❗️Важное ограничение: эксплуатация возможна только через веб-сеанс, а не через API на основе токенов (/api/v1/...). Этот интерфейс игнорирует заголовок X-WEBAUTH-USER и не подвержен эксплуатации.
💥 Об уязвимости
Затронутое ПО: официальные Docker-образы Gitea до 1.26.3. Рекомендуется обновление до 1.26.4 или новее из-за регрессии в 1.26.3.
Тип: Обход аутентификации / Impersonation
Классификация: CWE-284 (Improper Access Control)
🔻CVSS 3.1: 9.8 — критический уровень опасности
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
🔍 Индикаторы атаки
• Запросы к Gitea с заголовком X-WEBAUTH-USER от недоверенных IP-адресов через веб-интерфейс.
• Аномальные входы в учётные записи без стандартной процедуры аутентификации.
• Неожиданная активность от имени административных пользователей.
• Появление новых учётных записей — признак эксплуатации через авто-регистрацию.
• Создание или изменение ключей SSH, ключей доступа, веб-перехватчиков, исполнителей и настроек репозитория.
• Подозрительные обращения к приватным репозиториям после запросов с заголовками аутентификации через reverse proxy.
🛡 Рекомендации по защите
1. Обновить Gitea до версии 1.26.4 или новее.
2. Проверить конфигурацию reverse-proxy аутентификации.
Если она не используется — отключить ENABLE_REVERSE_PROXY_AUTHENTICATION.
3. Ограничить доверенные proxy-источники.
Замените REVERSE_PROXY_TRUSTED_PROXIES = * на конкретные IP-адреса доверенных reverse proxy.
4. Отключить авто-регистрацию пользователей, если она не требуется.
5. Запретить прямой доступ к Gitea в обход reverse proxy. Использовать межсетевой экран, изоляцию сетей Docker, виртуальную частную сеть или список разрешенных IP-адресов.
6. Проверить журналы на наличие запросов с X-WEBAUTH-USER от недоверенных источников за период с момента выхода патча (20-е числа июня 2026).
7. Официальный бюллетень вендора.