严重Gitea漏洞允许未认证攻击者通过Org-Mode标记读取服务器文件

严重Gitea漏洞允许未认证攻击者通过Org-Mode标记读取服务器文件

导语:Gitea自托管Git平台曝出严重文件读取漏洞CVE-2026-59774,未认证攻击者可通过Org-mode标记读取服务账户可访问的任何文件,CVSS评分高达9.8。

未认证攻击者可以读取Gitea(自托管Git平台)服务账户可访问的任何文件,受影响版本为1.22.1至1.27.0。攻击者无需登录,也无需对仓库拥有写权限——只需一个公开仓库和精心构造的Org-mode标记即可达成。该漏洞已在Gitea 1.27.1中修复。

该文件读取漏洞编号为CVE-2026-59774,评级为严重,CVSS评分为9.8,正式公告于8月2日发布。Gitea 1.27.1同时修复了CVE-2026-60074,这是一处独立的远程代码执行漏洞,已在The Hacker News此前的报道中介绍过。

Gitea表示,云实例将在版本维护窗口期间自动升级。自托管管理员应立即升级至1.27.1。

该文件读取漏洞并非一次请求即可达成的直接远程代码执行。Gitea指出,若攻击者读取了app.ini文件,提取其中的INTERNAL_TOKEN,再通过内部日志注入Git钩子,并在匿名克隆时触发该钩子,则可转化为命令执行。这一攻击链在Gitea的公告中有详细描述,The Hacker News未发现独立发布的利用代码演示该链路。

升级是必要的,但在疑似遭受暴露后可能并不充分。如果日志显示受影响版本上的标记渲染端点被访问过,应视为Gitea服务账户可读取的所有凭据已泄露,须轮换内部令牌、OAuth凭证、JWT签名材料以及数据库凭据,才能认为实例处于干净状态。

文件读取路径经过Gitea的标记渲染端点POST /{owner}/{repo}/markup。该路由允许可选登录,解析仓库并检查读取权限。匿名请求会对任何启用了代码单元的公开仓库通过该检查。这一前置条件限制了未认证的暴露面:没有公开仓库的实例不存在经由此端点的匿名攻击路径。

原文配图

漏洞根源在于Gitea的Org-mode渲染器。Gitea 1.27.0使用org.New()初始化go-org,并未替换该库的默认ReadFile回调。在go-org 1.9.1中,该回调为ioutil.ReadFile。Org-mode的#+INCLUDE指令接受绝对路径并将其传递给回调。攻击者提交Org-mode标记,选择Mode: file,即可获取服务账户可读取的文件。

修复代码通过PR #38642合入,并已在PR #38645中回溯。Gitea现已重写ReadFile,使Org-mode的include路径作为纯渲染内容返回,而非从服务器文件系统解析。该补丁新增了针对include路径渲染的回归测试。

CVE-2026-59774由XBOW Security(一个自主化攻击性安全系统)发现,由Guido Leo负责分诊。Shai Rod(网名NightRang3r)独立上报了同一漏洞。

Gitea在公告中未发布正式的检测指南。建议审查发往/{owner}/{repo}/markup的匿名POST请求,尤其是选择Org-mode渲染或提交绝对文件系统路径的请求。若公告中描述的升级路径曾被尝试,应检查仓库钩子目录中是否存在异常可执行文件。

Gitea的公告报告称暂未发现野外利用情况,截至2026年8月5日,CVE-2026-59774尚未出现在CISA的已知被利用漏洞目录中。据The Hacker News此前的报道,该文件读取原语在正式公告发布前已被公开预览。从令牌到钩子的命令执行链目前仅有Gitea公告这一单一来源。

该漏洞出现在Gitea密集的安全工作周期中。今年6月,Gitea修复了Docker镜像中一处严重的反向代理身份认证绕过漏洞CVE-2026-20896,威胁行为者在披露后13天即被观察到发起探测。5月,一处容器注册表访问控制漏洞CVE-2026-27771据估计影响30多个国家超过30000个部署。


来源信息

来源:The Hacker News

原文链接:https://thehackernews.com/2026/08/critical-gitea-flaw-let-unauthenticated.html

作者:info@thehackernews.com (The Hacker News)