开源自托管Git服务 Gogs 正面临一次严重安全危机。一项CVSS评分高达9.4的远程代码执行(RCE)漏洞被披露后,项目维护团队在两个多月内几乎没有任何公开进展,而攻击代码已经被集成进 Metasploit,使漏洞利用门槛大幅降低。
这意味着,只要拥有普通认证账户,攻击者就可能在默认配置的Gogs服务器上获得系统级执行权限,进一步窃取凭据、MFA密钥,甚至篡改代码仓库,发动供应链攻击。
漏洞细节
该漏洞由 Jonah Burgess 发现,并于今年3月17日通过GitHub安全公告渠道提交给Gogs团队。
问题出现在Gogs处理Pull Request合并流程的Merge()函数中。当仓库启用了“Rebase before merging(合并前变基)”功能时,PR目标分支名称会被直接传递给git rebase命令,但代码没有使用--来区分参数和分支名,也没有对输入进行充分过滤。

攻击者因此可以创建恶意分支名,例如:
--exec=touch${IFS}/tmp/rce_proof
Git会把它解释成--exec参数而不是分支名称,从而执行任意系统命令。
由于漏洞位于Git命令调用层面,因此影响:
- Linux
- Windows
- macOS
以及各种安装方式部署的Gogs实例。
研究人员还特别开发了跨平台利用模块,能够根据目标系统自动调整攻击载荷。
更令人担忧的是:无人修复
根据Burgess披露的信息,Gogs维护者曾在3月28日确认收到报告,但此后一直没有回应。
在长达两个多月的协调披露期间:
- 未提供修复计划
- 未回复状态更新请求
- 未申请延长披露时间
- GitHub安全公告页面长期无人处理
由于官方补丁迟迟未出现,Rapid7团队已自行提交修复Pull Request,目前仍等待审核。
与此同时,Gogs的重要赞助商 DigitalOcean 也没有公开回应相关问题。
风险有多大?
攻击成功后,攻击者可能:
- 获取服务器控制权
- 读取数据库内容
- 窃取用户密码哈希
- 窃取MFA密钥
- 修改源代码仓库
- 向下游用户投放恶意代码
- 实施供应链攻击
对于面向互联网开放注册的Gogs实例来说,风险尤其突出,因为攻击者甚至不需要管理员权限。
临时缓解措施
在官方补丁发布前,研究人员建议管理员立即采取以下措施:
1. 关闭公开注册
修改app.ini:
DISABLE_REGISTRATION = true
防止陌生用户创建账户。
2. 禁止普通用户创建仓库
MAX_CREATION_LIMIT = 0
这样可以阻断最简单的攻击路径——攻击者自行创建开启Rebase功能的新仓库。
不过需要注意,这并不能完全消除风险。如果攻击者已经拥有现有仓库的写权限,仍然可能利用该漏洞发动攻击。
影响与启示
这起事件再次暴露出部分开源项目面临的维护困境:软件仍被广泛使用,但维护资源不足,导致严重安全漏洞长时间无人处理。当公开利用代码已经出现而补丁尚未发布时,防守方往往会陷入被动。
对于仍在使用Gogs的组织而言,现在最重要的不是等待补丁,而是立即检查实例配置、限制用户权限,并密切关注项目后续修复进展。特别是允许外部用户注册或协作的Gogs服务器,应视为高风险目标并优先采取防护措施。







苏公网安备32021302001419号