漏洞概述 漏洞名称: security: close SSRF in repository migration and recurring mirror sync #8324 漏洞类型: SSRF(服务器端请求伪造) 漏洞描述: 在仓库迁移和定期镜像同步过程中存在两个相关的SSRF漏洞。这两个漏洞都可以通过相同的防御措施来解决:在克隆前验证目标地址,确保git只能与预期的目标通信,并且git可以自由地与不同的目标通信。 影响范围 初始迁移 (GMSA-g2fS-gir4-gjwm): 验证了提交的URL,但在本地网络块中,git clone --mirror 遵循HTTP重定向而没有重新验证。一个公共的查找源可以302到一个内部端点,内容会出现在新的仓库中。 定期镜像同步: 相同的重定向跟随在每个定期的 之后,加上对存储的URL的主机名的重新验证。攻击者可以设置一个带有良性URL的镜像,然后翻转DNS或开始服务重定向到内部目标,下一次同步会拉取它。 修复方案 Pass :c http.followRedirects=false: 到所有涉及远程的git调用中,包括迁移和镜像路径:source clone, wiki clone, wiki URL probe, periodic git remote update (repo + wiki)。 重新验证镜像的主机名: 在每次同步之前,使用 检查,这样DNS翻转在创建后不能将之前公共的URL指向内部目标。 迁移 git.clone 包装器: 硬编码 作为第一个参数,添加 标志,避免直接调用 ,匹配包中已使用的模式。 测试计划 手动测试:使用一个公共URL,该URL302到 ,确认迁移失败而不是导入内部仓库。 手动测试:创建一个带有良性URL的镜像,将其DNS指向 ,确认下一次同步中止并显示通知而不是拉取。 代码块 其他信息 合并状态: 已合并 合并时间: 3周前 合并者: unknown 合并的提交数: 8 合并的分支: GMSA-g2fS-gir4-gjwm 合并的目标分支: main 审查者: 无 分配者: 无 标签: 无 项目: 无 里程碑: 0.14.3 开发状态: 成功合并此请求可能会关闭这些问题 参与者: 1