Forgejo 16.0.3 严重 RCE 漏洞预警
Forgejo <=16.0.3 Critical RCE
开源代码托管平台 Forgejo 曝出严重远程代码执行(RCE)漏洞,影响版本 16.0.3 及以下。攻击者可通过恶意模板仓库,在变量模板扩展过程中诱导系统创建新的 .git 文件夹,从而窃取服务器数据或执行任意命令。官方已在 16.0.4 版本中修复,通过强制移除扩展后的 .git 目录来阻断攻击路径。此外,该版本还修复了一个 API 权限控制缺陷,防止受限令牌越权修改仓库。对于自托管用户,若未开启公开注册且限制仓库创建,风险相对可控,但仍建议尽快升级或暂时断开公网连接。社区讨论也延伸到了 LLM 在漏洞发现与修复中的角色,指出虽然开发者禁止 AI 贡献代码,但攻击者正利用 AI 寻找漏洞,这凸显了人机对抗的新常态。
一个恶意的模板仓库可以被用来读取 Forgejo 主机上的任意数据,并作为远程代码执行攻击在 Forgejo 主机上执行任意进程。
HN 评论区
53- amiga386
你应该把链接改成 https://codeberg.org/forgejo/forgejo/milestone/139655
> PR:严重问题修复:防止模板扩展干扰 git 仓库初始化。当从模板仓库生成新仓库时,Forgejo 会克隆模板仓库,移除 .git 文件夹,对 .forgejo/template 中列出的文件执行变量模板扩展,然后初始化一个新的 git 仓库。在此过程中,变量模板扩展可能被滥用,用于创建一个新的 .git 文件夹,git 会在其初始化新仓库时采纳并合并该文件夹。恶意的模板仓库可被用来读取 Forgejo 主机上的任意数据,并在 Forgejo 主机上执行任意进程,从而构成远程代码执行(RCE)攻击。为解决此问题,在变量扩展完成后、git 仓库初始化之前,会移除目录中任何已存在的 .git 文件夹。
- techknowlogick
之所以在这里发帖,是因为有人问起。Gitea 已经针对这两个问题都做了防护。
(利益相关说明:我是 Gitea 项目的核心领导成员之一)
补充:安全事件谁都难免,我们不应因报告问题而指责任何人,否则只会导致整体上报的问题变少。
- keel-control
这是我在他们禁止 LLM 贡献后的第一个念头。
他们可能没用 AI 来检查漏洞,但攻击者肯定会用,这让开发者处于劣势。
- Macha
由于 Codeberg 的限流导致发布说明目前无法阅读,其中的两个修复内容如下:
https://codeberg.org/forgejo/forgejo/pulls/14301:
*严重问题修复*:防止模板扩展干扰 git 仓库初始化。当从模板仓库生成新仓库时,Forgejo 会克隆模板仓库,移除 `.git` 文件夹,对 `.forgejo/template` 中列出的文件执行变量模板扩展,然后初始化一个新的 git 仓库。在此过程中,变量模板扩展可能被滥用,用于创建一个新的 `.git` 文件夹,git 会在其初始化新仓库时采纳并合并该文件夹。恶意的模板仓库可被用来读取 Forgejo 主机上的任意数据,并在 Forgejo 主机上执行任意进程,从而构成远程代码执行(RCE)攻击。为解决此问题,在变量扩展完成后、git 仓库初始化之前,会移除目录中任何已存在的 `.git` 文件夹。
https://codeberg.org/forgejo/forgejo/pulls/14301:
确保在检查可编辑的 PR 时访问了授权缩减器。当通过 Forgejo 的 API 编辑 git 仓库内容时,会使用一种专门的安全控制机制,允许仓库维护者在存在带有“允许维护者编辑”选项的开放 PR 时,编辑他们不拥有的分支。这种专门的安全控制机制未考虑到 API 特定的安全资源 […]
- jzebedee
相关变更:
安全漏洞修复
PR:严重问题修复:防止模板扩展干扰 git 仓库初始化。当从模板仓库生成新仓库时,Forgejo 会克隆模板仓库,移除 .git 文件夹,对 .forgejo/template 中列出的文件执行变量模板扩展,然后初始化一个新的 git 仓库。在此过程中,变量模板扩展可能被滥用,用于创建一个新的 .git 文件夹,git 会在其初始化新仓库时采纳并合并该文件夹。恶意的模板仓库可被用来读取 Forgejo 主机上的任意数据,并在 Forgejo 主机上执行任意进程,从而构成远程代码执行(RCE)攻击。为解决此问题,在变量扩展完成后、git 仓库初始化之前,会移除目录中任何已存在的 .git 文件夹。