自托管 Git 服务 Gogs 存在一个 CVSS 9.4 的参数注入漏洞,攻击者只需拥有一个基本账户,就能通过创建恶意分支名的 Pull Request,在服务器上执行任意命令。 本次漏洞是 Gogs 项目长期安全响应失灵的最新例证。从 2024 年起,多个研究团队报告的多个 9.9 分严重漏洞至今未被修复,CISA 更曾因一个被广泛利用的漏洞发出紧急警告。

Create a landscape editorial hero image for this Studio Global article: What critical unpatched remote code execution vulnerability was disclosed in the open-source Git service Gogs, what are its technical detail. Article summary: Here is a comprehensive answer covering the vulnerability, its technical details, the broader pattern of delayed response, and recommended actions.. Topic tags: general, general web, government. Reference image context from search candidates: Reference image 1: visual subject "How a Gogs Path Traversal Vulnerability Enables Remote Code Execution (CVE‑2025‑8110). Gogs Path Traversal and Remote Code Execution is a critical vulnerability affecting the self-" source context "Is Your Git Service Safe? How a Gogs Path Traversal Vulnerability Enables Remote Code Execution (CVE‑2025‑8110) | Ridge " Reference image 2: visual subject "How a Gogs Path Traversal Vulnerabil
一个近期披露的严重安全漏洞,再次将开源 Git 服务 Gogs 推上了风口浪尖。该漏洞在 CVSSv4 评分体系中高达 9.4 分(严重),允许任何拥有基本账户的攻击者在托管服务器上执行任意命令。更令人不安的或许并非漏洞本身,而是其状态:尽管安全机构 Rapid7 已在 2026 年 3 月向项目维护者报告,但至今未有任何官方补丁发布 。对于成千上万自建 Gogs 实例的管理员来说,理解此漏洞的原理并立即采取变通措施已刻不容缓。
该漏洞属于典型的参数注入缺陷(CWE-88),问题出在 Gogs 处理 "Rebase before merging"(变基后合并)方式的 Pull Request 时 。当用户创建 Pull Request 时,其源分支的名称会被直接传递给服务器上运行的
git rebase-- 分隔符——这是命令行工具中表示“选项结束”的标准做法 。
这个疏漏造成的后果是,如果攻击者将分支命名为类似 --exec='恶意命令' 的形式,系统并不会将其识别为分支标签,而是会将其解释为 git rebase--exec 标志的设计初衷,正是在每次提交被重放后执行一段 Shell 命令。最终结果就是,攻击者能够以 Gogs 服务进程的权限,在底层操作系统上执行任意命令 。
攻击原理速览:
--exec 标志,后接其希望执行的 Shell 命令 发现此漏洞的 Rapid7 实验室安全研究员 Jonah Burgess 直白地解释了其机制:“该漏洞允许任何已认证用户,通过创建一个将 --exec 标志注入 git rebase
对于长期关注 Gogs 项目的人来说,这个严重的未修复零日漏洞并非意外。它是项目主要——实际上是唯一的——维护者多年来对安全报告保持沉默模式中,最新、也是最严重的一个例子。
多家独立研究团队记录了这一令人担忧的“忽视时间线”:
这段历史使得 Rapid7 的最新披露已不仅仅是一份安全公告。正如一家行业媒体所言,这种情况“提醒了人们开源项目的局限性”,尤其是当它们依赖于一个不回应外部沟通的单一维护者时 。缺乏有效的多方治理,使得一个被广泛使用的基础设施组件可能演变为永久性的风险源。
由于尚无官方软件补丁可用,管理员必须依靠配置更改和网络层面的控制措施来消除攻击路径。以下步骤可以阻止眼前的威胁并减少攻击面。
1. 立即禁用 "Rebase before merging"
这是最有效的单步缓解措施。整个攻击链都依赖于这种特定的合并方式。将仓库或实例全局设置改为 "Merge commit"(合并提交)或 "Squash"(压缩合并),可以彻底消除存在漏洞的代码路径 。
2. 限制网络访问
此攻击需要通过 HTTP 认证来创建 Pull Request。如果你的 Gogs 服务器不需要公网开放,请将其置于 VPN 或防火墙之后,仅允许受信任的内部用户访问。这能让服务器避开大规模的互联网扫描和临时的攻击者。
3. 收紧用户注册与权限管理
既然任何已认证用户都可能利用此漏洞,那么尽可能减少服务器上的账户数量就是一项关键防御。关闭自注册功能,并手动审批新用户。立即审计你的用户列表,并停用任何长期未使用或来历不明的账户 。
4. 监控异常的 Pull Request
对 Pull Request 的分支名实施主动监控,警惕那些包含可疑字符的名称,如双破折号 (--)、分号、反引号,或 exec、curl、wget 等明显的 Shell 命令标志。一个异常的分支名是正在发生攻击企图的强烈信号 。
5. 制定长期退出 Gogs 的计划
鉴于严重漏洞长期未修复已成固定模式,继续依赖 Gogs 是一种战略上的风险。最可行的替代方案是 Gitea,一个由社区驱动的 Gogs 分支。它拥有稳健的、多维护者的开发团队和响应迅速的安全流程。当然还有其他几个主流的 Git 服务平台存在,但对于那些正是因为 Gogs 轻量级、可自托管的特点而选择它的团队来说,Gitea 是一个近乎无缝的替代品,并从根本上解决了单一维护者瓶颈的问题 。
6. 为可能的补丁做好准备
请持续关注 Gogs 的安全页面和 GitHub 发布页。如果补丁最终发布,请立即升级。但无论如何,请基于“这种模式必将重演,未来的严重漏洞将再次数月无人修复”的假设来规划你的安全防护策略。
Studio Global AI
Use this topic as a starting point for a fresh source-backed answer, then compare citations before you share it.
自托管 Git 服务 Gogs 存在一个 CVSS 9.4 的参数注入漏洞,攻击者只需拥有一个基本账户,就能通过创建恶意分支名的 Pull Request,在服务器上执行任意命令。
自托管 Git 服务 Gogs 存在一个 CVSS 9.4 的参数注入漏洞,攻击者只需拥有一个基本账户,就能通过创建恶意分支名的 Pull Request,在服务器上执行任意命令。 本次漏洞是 Gogs 项目长期安全响应失灵的最新例证。从 2024 年起,多个研究团队报告的多个 9.9 分严重漏洞至今未被修复,CISA 更曾因一个被广泛利用的漏洞发出紧急警告。
当前最有效的止血措施是立即禁用 "Rebase before merging" 合并方式,并严格限制网络访问。但从长远看,迁移至 Gitea 等维护更活跃的分支项目是根本解决方案。