Gogs 代码托管服务中的四个安全漏洞
关键要点
Gogs 是一个流行的自托管 Git 服务,但发现四个安全漏洞。漏洞可以使攻击者窃取、修改或删除重要的源代码。存在“参数注入”漏洞,使得恶意用户能够在受影响的 Gogs 服务器上执行危险操作。建议用户禁用内置 SSH 服务器并考虑切换到更安全的 Gitea 项目。四个漏洞在 Gogs 自托管的开源 Git 服务解决方案中被发现,可能会使攻击者窃取、修改或删除重要的源代码。
SonarSource 研究人员在本周二发布的 博客 中透露,他们在去年四月分析这一流行的源代码托管解决方案时发现了这四个漏洞。Gogs 在 GitHub 上拥有超过 44000 个星标,其 Docker 镜像的下载量超过 9000 万。
其中三个漏洞允许“参数注入”,这种间接的命令注入形式可能导致读取、修改或删除托管在受影响的 Gogs 服务器上的代码。而第四个漏洞也使得“内部文件的删除”成为可能。
经过身份验证的用户可以利用这些漏洞在启用了内置 SSH 服务器的实例上进行攻击。启用注册的 Gogs 实例可能让攻击者创建一个账户,以获取必要的私钥来利用这些漏洞。如果攻击者无法注册自己的账户,他们需要攻破其他账户或者窃取用户的私钥来利用这些漏洞。
由于其对 env 命令的实现,这些漏洞在 Ubuntu 和 Debian 实例上是可利用的,而 Windows 实例则不能被利用,因为它们不使用 env 命令。
蘑菇加速器破解版永久免费SonarSource 的博客文章描述了第一个参数注入漏洞的细节,该漏洞依赖于 env 命令的 splitstring 选项。env 命令用于通过 SSH 请求设置环境变量。使用 splitstring 选项将两个参数分割时,参数的前半部分可以在服务器上作为命令执行。
SonarSource 计划发布第二篇博客,将提供剩余三个漏洞的技术细节。第一篇博客则提供了这四个漏洞的缓解方案,包括下载 SonarSource 为 Gogs 版本 0130 开发的补丁的说明,因官方还未发布补丁。
除了安装补丁外,SonarSource 警告说,由于缺乏广泛测试,补丁可能会导致功能问题。用户也可以通过禁用内置 SSH 服务器或者在不需要 SSH 的情况下完全禁用 SSH 来防止被利用。Gogs 用户还可以禁用新用户注册,以防止攻击者获取进行攻击所需的私钥。
SonarSource 发布的时间表从 2023 年 4 月 20 日最初报告问题开始,到 Gogs 维护者确认收到报告的 2023 年 4 月 28 日为止,并且最后一次在 12 月 5 日回复 SonarSource。
在长达七个月没有与 Gogs 维护者进一步联系的情况下,SonarSource 发布了自己的补丁和博客。在此期间,没有漏洞的修复推出。根据博客,作者表示他们在 2024 年 6 月 3 日已通知 Gogs 维护者他们计划发布这篇博客。
总体而言,SonarSource 建议用户考虑将源代码托管从 Gogs 切换到 Gitea,这是一项类似的项目,最初是 Gogs 的一个分支。博客作者指出,Gitea 得到更积极的维护,且已修复了 SonarSource 识别的四个 Gogs 问题。

Gogs 用户可以通过检查其网络活动,寻找以 splitstring 或其缩写 s 开头的 env 参数,来潜在地检测第一个漏洞的利用。第二个漏洞涉及新版本标记时的参数注入,可以通过查找以 /ltusergt/ltrepogt/preview/ltbranchgt/ 开头的 HTTP 请求来进行网络级检测。用户、存储库和分支值将取决于用于攻击的存储库。
其他两个漏洞涉及内部文件的删除和更改预览过程中的参数注入,博客作者表示尚无可靠的利用检测方法。
通过 Shodan 搜索发现互联网中有