HackerNews

HackerNews
研究人员发现关键 GitHub RCE 漏洞:仅需一次 Git Push 即可利用

研究人员发现关键 GitHub RCE 漏洞:仅需一次 Git Push 即可利用

给文章评分:
HackerNews 编译,转载请注明出处:
 

网络安全研究人员披露了一个影响 GitHub.com 和 GitHub Enterprise Server 的严重安全漏洞细节。该漏洞允许经过身份验证的用户通过单个 git push 命令获得远程代码执行权限。


该缺陷被追踪为 CVE-2026-3854(CVSS 评分:8.7),属于命令注入问题。拥有仓库推送权限的攻击者可借此在实例上实现远程代码执行。


根据 GitHub 发布的漏洞公告:“在 git push 操作期间,用户提供的推送选项值在被纳入内部服务头之前未进行适当的清理。由于内部头格式使用的分隔符字符也可能出现在用户输入中,攻击者可以通过精心构造的推送选项值注入额外的元数据字段。”


谷歌旗下的云安全公司 Wiz 因发现并报告此问题而受到表彰,报告时间为 2026 年 3 月 4 日。GitHub 在收到报告后两小时内即验证并向 GitHub.com 部署了修复程序。


该漏洞也已在以下 GitHub Enterprise Server 版本中得到修复:3.14.25、3.15.20、3.16.16、3.17.13、3.18.8、3.19.4、3.20.0 或更高版本。目前没有证据表明该问题曾在恶意环境中被利用。


据 GitHub 称,该问题影响范围包括:GitHub.com、GitHub Enterprise Cloud、带数据驻留功能的 GitHub Enterprise Cloud、带企业管理用户的 GitHub Enterprise Cloud,以及 GitHub Enterprise Server。


问题的核心在于:用户提供的 git push 选项值在被整合到内部 X-Stat 头之前未得到充分清理。由于内部元数据格式依赖分号作为分隔符,而该字符也可能出现在用户输入中,恶意行为者便可利用这一疏忽注入任意命令并使其执行。



GitHub 首席信息安全官 Alexis Wales 表示:“通过将多个注入值串联起来,研究人员证明攻击者可以覆盖推送处理的环境,绕过通常限制钩子执行的沙盒保护,最终在服务器上执行任意命令。”


Wiz 在联合声明中指出,该问题“极其容易”被利用,并可在共享存储节点上实现远程代码执行。在公开披露时,约 88% 的实例仍受此问题影响。远程代码执行链由三次注入组成:

  1. 注入非生产环境的 rails_env 值以绕过沙盒;
  2. 注入 custom_hooks_dir 以控制并重定向钩子目录;
  3. 注入带有精心构造钩子条目的 repo_pre_receive_hooks,触发路径遍历,从而以 git 用户身份执行任意命令。

Wiz 安全研究员 Sagi Tzadik 表示:“作为 git 用户获得无沙盒的代码执行权限后,我们就完全控制了 GHES 实例,包括文件系统的读/写访问权限以及对内部服务配置的可见性。”


至于 GitHub.com,其企业模式标志(在 GitHub Enterprise Server 上默认为“true”)默认设置为“false”,这使得自定义钩子路径处于非活动状态。但由于该标志同样通过 X-Stat 头传递,因此也可使用相同机制进行注入,从而导致在 GitHub.com 上也能执行代码。


更糟糕的是,鉴于 GitHub 的多租户架构及其共享后端基础设施,公司指出,在 GitHub.com 上获得代码执行权限会导致跨租户暴露。这实际上允许攻击者在共享存储节点上读取数百万个仓库,无论其所属组织或用户如何。


鉴于 CVE-2026-3854 的严重性,建议用户立即应用更新以获得最佳保护。


Wiz 总结道:“仅需一条 git push 命令就足以利用 GitHub 内部协议中的缺陷,并在后端基础设施上实现代码执行。当多个用不同语言编写的服务通过共享内部协议传递数据时,每个服务对该数据所做的假设就成了关键的攻击面。我们鼓励构建多服务架构的团队审查用户控制的输入如何通过内部协议流动——尤其是当安全关键的配置源自共享数据格式时。”


 

消息来源:thehackernews.com
本文由 HackerNews.cc 翻译整理,封面来源于网络;
转载请注明“转自 HackerNews.cc”并附上原文