威胁动态

CVE-2026-60004 — Gitea 代码注入导致服务器命令执行

CVE-2026-60004 是 Gitea diffpatch 接口中的代码注入(CWE-94,CVSS 9.8,KEV),已在 1.27.1 修复。为什么开放注册满足了写入权限条件。

发布于 2026-09-05 更新于 2026-10-04 最后核实 2026-09-05 3 分钟阅读
本页目录

这是一份关于已确认被利用漏洞(已列入 CISA KEV)的简报:说明发生了什么、影响范围以及应采取的措施。内容从防御者角度出发,不包含复现步骤。

公告摘要
CVE
CVE-2026-60004
严重程度
严重(CVSS 9.8,v3.1;NVD 记录的分值归于 CVE 编号机构)
类别
代码注入(CWE-94)
影响
植入恶意 Git 钩子 → 以 Gitea 操作系统用户身份执行命令
受影响范围
根据厂商公告,为 Gitea 1.17 – 1.27.0。已在 1.27.1 修复
利用情况
已列入 CISA KEV(2026 年 8 月 25 日添加,截止日期 8 月 28 日)。勒索软件活动中的使用情况记录为“未知”
可能性
EPSS 0.868(截至 2026-09-05,来自我们的数据源)— 处于最高层级
9.8
CVSS v3.1
1.27.1
已修复版本
0.868
EPSS(估计利用概率)
KEV
野外已被利用

不要把“需要权限”当作安慰

解读 A(CISA 的描述)

“拥有代码仓库写入权限的攻击者” — 看起来有条件限制

解读 B(CVSS 向量)

PR:N — 无需权限

↓ 厂商公告对两者都做了解释

开启开放注册时

注册 → 创建代码仓库 → 自行授予攻击所需的写入权限

如果所需权限可以通过注册获得,那么权限要求对攻击者来说只增加了一步:创建账户。

以“但它需要某某权限”来安慰自己,是误判漏洞的常见方式。关键不在于谁拥有该权限,而在于外部人员能否获得该权限。开放注册、免邀请注册、默认授予的权限,一旦存在获取途径,这个权限就不算真正的条件。

这与常见安全错误是假设失误中的第②点相同。并且,应通过 HTTP 检查注册途径,而不是只看配置文件(参见认证与授权)。

漏洞是什么

来自厂商公告
路径
diffpatch 接口在共享临时克隆中应用补丁时处理不当
结果
可以植入恶意 Git 钩子(hooks/post-index-change)
触发
Git 写入索引时,该钩子以 Gitea 操作系统用户身份执行
由此可接触的内容
应用密钥、数据库凭据、OAuth 令牌、挂载的代码仓库
前提条件
厂商指出,利用需要 Git 2.32 及以上版本、已启用 diffpatch 路由,以及可写且可执行的临时文件系统

植入的 Git 钩子在升级后仍然存在,因此升级并不等于结束

该漏洞最终会在服务器上留下可执行的内容。升级可以关闭植入途径,但不会删除已经植入的任何内容。

Git 钩子本来就被设计为合法的远程执行点,因此一旦植入,它看起来并不可疑。区分合法维护与后门的唯一依据,是由谁创建、是否获得授权,以及是否留有记录。修复漏洞之后,请检查攻击者可能留下的任何内容。不要跳过这一步。

应该怎么做

1

升级到 1.27.1 或更高版本(最主要的措施)

厂商公告给出的受影响范围为 1.17 – 1.27.0,修复版本为 1.27.1。从这里开始。自托管实例不会有人替您升级。请先按照CVE 修复手册检查当前运行的版本。

2

真正检查注册设置

如上所述,是否开启开放注册,决定了权限条件是否实际失效。不要只查看设置,而应在未登录状态下打开注册页面,观察结果。对于内部实例,应关闭注册,并在网络层限制可访问性,而不是只依赖认证。

3

检查您不认识的钩子和文件

升级后,检查代码仓库钩子目录中您没有放置过的脚本、异常的可执行文件,以及 Gitea 进程发出的不熟悉的对外流量。问题不是“我们是否已升级”,而是“是否留下了什么”。

4

如果怀疑已被入侵,应将可被接触的内容视为已暴露

厂商列出,可被接触的内容包括应用密钥、数据库凭据和 OAuth 令牌。如果您的检查无法确定结果,请记住:“我们不知道”不等于“什么都没发生”,应进行轮换。密钥处理方法参见.env 文件与 API 密钥的风险。

5

重新审视选择本身(不必急于决定)

自行运行服务,就意味着需要自行负责更新。权衡因素参见自托管 Git 与 GitHub,哪个更安全。这并不是建议迁移,而是建议根据您能否持续完成更新来做出决定。

本站观点:CVSS 与 KEV 衡量的是不同的东西,应同时阅读

本案例可以作为我们在使用 CVSS、EPSS 和 KEV 进行 CVE 分级中所述内容的一个实例。CVSS 说明技术上的严重程度,CISA 的条目说明实际被利用的情况,EPSS 估计被利用的概率,三者是不同的测量指标。

这里,CVSS 的 PR:N 与 CISA 的“需要写入权限”看起来相互矛盾。如果只读其中一项,就可能得出“需要某种权限,因此可以稍后处理”的结论。出现矛盾通常不是数据有误,而是提示某个前提被忽略了。在本案例中,厂商公告给出了答案(开放注册)。

来源(一手)

  • Gitea 安全公告 GHSA-rcr6-4jqh-j84m — github.com(受影响范围 1.17–1.27.0 / 修复版本 1.27.1 / 权限条件及其与开放注册的关系 / 可被接触的内容 / 前提条件)
  • NIST NVD,“CVE-2026-60004” — nvd.nist.gov(CVSS v3.1 9.8,向量,CWE-94;状态 Analyzed)
  • CISA 已知被利用漏洞目录 — cisa.gov(2026 年 8 月 25 日添加,截止 8 月 28 日,勒索软件活动使用情况“未知”)
  • Gitea,“Release of 1.27.1” — blog.gitea.com

所有信息均于 2026 年 9 月 5 日核对。本站不发布复现步骤,也不提供概念验证代码的链接。

延伸阅读

FAQ

QCVE-2026-60004 会造成什么后果?
A

根据厂商的安全公告,diffpatch 接口在应用补丁时处理不当,结果是可以植入恶意 Git 钩子(hooks/post-index-change)。Git 写入索引时,该钩子以 Gitea 操作系统用户身份执行。厂商列出,应用密钥、数据库凭据、OAuth 令牌和挂载的代码仓库都可能因此被接触到。

Q是否需要认证?CVSS 显示无需权限,CISA 却称需要代码仓库写入权限。
A

两者都是正确的,并不冲突。厂商公告称,需要对代码仓库具有写入权限,同时说明:如果开启了开放注册,未经认证的用户可以注册账户并创建代码仓库,从而获得该权限。换言之,当所需权限任何人都能获得时,它实际上就不再构成限制,这也是 CVSS 向量所反映的情况。

Q哪些版本受影响,如何修复?
A

厂商公告给出的受影响范围为 1.17 至 1.27.0,已修复版本为 1.27.1。修复方法是升级到 1.27.1 或更高版本。自托管的 Gitea 不会自动更新,实例无人维护的时间越长,暴露的时间也越长。

Q升级是否就完成了全部工作?
A

升级是最主要的措施,但不是全部工作。该漏洞的结果是服务器上留下了可执行的文件,即 Git 钩子。升级可以关闭植入钩子的途径,但不会删除已经植入的内容。升级后,请检查是否存在您不认识的钩子或文件,并确认注册设置是否符合您的预期。如果怀疑已被入侵,请将厂商列出的可被接触的内容(密钥、数据库凭据、OAuth 令牌)视为已暴露,并进行轮换。