导语:自托管Git平台 Gitea 近日披露一个CVSS评分9.8的严重漏洞。攻击者无需登录账号、无需对仓库写入任何内容,仅凭一个公共仓库和一段精心构造的Org-mode标记,即可读取Gitea服务账号可访问的任何文件。更危险的是,该漏洞可被进一步串联为远程代码执行。
来源:本文编译自 The Hacker News 报道《Critical Gitea Flaw Let Unauthenticated Attackers Read Server Files via Org-Mode Markup》。
一、漏洞概述
CVE-2026-59774 是 Gitea 平台近期披露的一个严重安全漏洞。该漏洞允许未经认证的远程攻击者通过公共仓库的标记渲染端点,读取 Gitea 服务账号有权访问的任何文件。根据 Gitea 官方公告,该漏洞可被进一步串联为命令执行,影响范围不容小觑。
关键时间节点:
- 8月2日:Gitea 正式发布安全公告
- 8月5日:The Hacker News 详细报道公开
- 同期:XBOW Security 安全研究团队(自主化攻击性安全测试平台)与独立研究员沙伊·罗德(网络昵称 NightRang3r)分别独立发现该漏洞,由吉多·莱奥负责漏洞分类处理
二、影响范围与技术细节
受影响版本与修复版本
该漏洞影响 Gitea 1.22.1 至 1.27.0 版本,已在 1.27.1 版本中修复。Gitea 官方同时在 1.27.1 中修复了另一个远程代码执行漏洞 CVE-2026-60004。
攻击前置条件
攻击利用的并非一个完全无条件的接口。攻击者需要满足以下两个前提:
- 目标实例至少存在一个公共仓库(该仓库的代码单元已启用)
- 能够向
/{owner}/{repo}/markup 端点提交匿名 POST 请求
匿名请求只需通过公共仓库的读者权限校验,因此对于开放公共仓库的 Gitea 实例,这一攻击路径完全可行。但若实例不开放任何公共仓库,则无对应匿名攻击路径。
漏洞根源:Org-mode 渲染器的不安全默认配置
漏洞的关键在于 Gitea 1.27.0 中 go-org 库的初始化方式存在缺陷——org.New() 调用后未替换库默认的 ReadFile 回调函数。在 go-org 1.9.1 版本中,该回调使用的是 ioutil.ReadFile,这一系统调用直接接受任意绝对路径。
Org-mode 标记语言支持 #+INCLUDE 指令,可将外部文件内容嵌入到当前文档中。Gitea 在调用 Org-mode 渲染器处理用户提交的标记时,会触发该指令的回调函数,最终导致文件读取。
攻击者只需向标记端点提交精心构造的 Org-mode 标记内容,选择 Mode: file 渲染模式,即可读取服务账号有权限访问的任何文件。
三、从文件读取到远程代码执行:完整攻击链
虽然 CVE-2026-59774 本身是一个文件读取漏洞,但 Gitea 官方警告,该漏洞可被进一步利用以实现命令执行。完整攻击链如下:
- 利用 CVE-2026-59774 读取 app.ini 配置文件——该文件通常包含 Gitea 实例的关键配置信息
- 从 app.ini 中提取 INTERNAL_TOKEN——这是 Gitea 内部 API 调用的认证密钥
- 通过内部日志接口注入 Git 钩子——利用已窃取的 INTERNAL_TOKEN 调用内部接口植入恶意钩子
- 触发恶意钩子——攻击者执行匿名克隆操作,触发 Git 钩子的自动执行,从而获得远程代码执行能力
这一攻击链目前仅在 Gitea 官方公告中有描述,截至 8月5日,The Hacker News 尚未发现独立的公开利用代码。
四、攻击发现与背后故事
CVE-2026-59774 的发现体现了自动化安全研究的最新进展。
该漏洞由 XBOW 安全公司(一家开发自主化攻击性安全测试系统的安全研究公司)与独立研究员沙伊·罗德独立发现。XBOW 系统通过自动化测试框架发现了 Gitea Org-mode 渲染器的不安全回调配置,同一时间段,沙伊·罗德也通过人工测试发现并报告了同一问题。
值得一提的是,今年 Gitea 安全更新节奏密集:6月修复了 Docker 镜像中的反向代理认证绕过漏洞 CVE-2026-20896(披露后13天即被威胁行为者探测利用);5月修复了影响超过30个国家、约3万个部署实例的容器注册表访问控制漏洞 CVE-2026-27771。这一系列事件表明,自托管代码平台已成为攻击者的重点关注目标。
五、蓝队视角:检测与响应方案
根据 MITRE ATT&CK 框架,该漏洞利用可对应以下战术阶段:
- 初始访问(TA0001):利用漏洞访问系统
- 发现(TA0007):读取配置文件获取敏感信息
- 凭据访问(TA0006):窃取 INTERNAL_TOKEN
- 执行(TA0002):通过 Git 钩子触发命令执行
应急响应清单
| 优先级 |
操作项 |
说明 |
| 紧急 |
升级至 Gitea 1.27.1 |
修复主漏洞及 CVE-2026-60004 |
| 高 |
检查是否被利用 |
排查标记渲染端点是否有可疑请求 |
| 高 |
轮换内部令牌 |
假设已暴露,立即轮换 INTERNAL_TOKEN |
| 高 |
轮换 OAuth 与 JWT 密钥 |
防止凭据已泄露后被利用 |
| 中 |
检查数据库凭据 |
在 app.ini 同目录可读取的凭据需轮换 |
| 中 |
审查 Git 钩子目录 |
检查是否存在非预期的可执行文件 |
| 低 |
启用审计日志 |
加强后续异常行为追踪能力 |
检测规则建议
Gitea 官方公告未发布正式检测指南。蓝队可重点关注以下检测信号:
- 异常 Org-mode 渲染请求:监控
/{owner}/{repo}/markup 端点的匿名 POST 请求,特别是渲染模式为 Org-mode 或提交内容中包含绝对路径的请求
- 异常文件路径访问:请求载荷中出现
/etc/passwd、/proc/self/、app.ini 等敏感路径关键字时触发告警
- 内部接口调用异常:内部日志接口的调用来源与频率分析,识别是否来自异常 IP
- 仓库钩子变更监控:Git 钩子目录的文件创建、修改事件应纳入重点监控
加固建议
对于无法立即升级的实例,可考虑以下临时缓解措施:
- 在反向代理层面限制对
/{owner}/{repo}/markup 端点的匿名访问
- 临时禁用 Org-mode 渲染支持,或将所有公共仓库设置为私有
- 加强服务账号权限隔离,确保其只能访问必要的目录范围
六、总结
CVE-2026-59774 是一个典型的“小功能引入大风险”案例——Org-mode 文档渲染这一看似无害的功能,因底层库回调配置不当,成为整个系统暴露的入口。该漏洞的利用门槛极低(无需认证、无需权限),影响范围却极广(任意文件读取甚至 RCE)。
对于自托管 Gitea 的企业和组织,建议立即升级至 1.27.1 版本,并对升级前的相关日志进行审查,必要时主动轮换关键凭据。自托管开发平台的安全治理,应成为每个技术团队基础设施安全建设的重要一环。
参考资料:
- Critical Gitea Flaw Let Unauthenticated Attackers Read Server Files via Org-Mode Markup - The Hacker News,发表于 2026-08-05
- Gitea Security Advisory GHSA-6v53-hr58-556r - Gitea 官方,2026-08-02
来源/编译:本文编译自 The Hacker News 原文,了解更多可访问原文。