事件背景与漏洞概况
近期,GitHub 披露了一个编号为 CVE-2026-3854 的关键远程代码执行(RCE)漏洞,CVSS 评分高达 8.7。该漏洞主要影响 GitHub.com 及多个版本的 GitHub Enterprise Server(GHES)。攻击者仅需拥有仓库的 push 权限,即可通过精心构造的 Git 推送指令,在 GitHub 后端基础设施上执行任意代码。
从我们的应急响应经验来看,这类涉及基础设施内部协议处理的漏洞往往极具破坏性。虽然目前尚无证据显示该漏洞在野外被恶意利用,但其影响面极广,甚至涉及跨租户数据暴露的潜在风险。
攻击链深度拆解
该漏洞的核心根源在于 GitHub 内部服务在处理 Git 推送选项(push options)时,对用户输入的数据缺乏严格的清洗和校验。在内部协议的通信过程中,系统使用分号作为分隔符来构建元数据头(X-Stat header),而攻击者正是利用了这一逻辑漏洞。
Wiz 研究团队通过三步关键注入实现了完整的攻击链:
第一步,注入非生产环境的 rails_env 值,从而绕过沙箱环境限制。 第二步,利用 custom_hooks_dir 注入,重定向钩子程序的执行目录。 第三步,通过 repo_pre_receive_hooks 注入特定的钩子条目,利用路径遍历触发任意命令执行。
这一环节是很多企业容易忽视的,即在内部微服务架构中,不同组件对共享协议数据格式的假设不一致,往往会成为攻击者撕开防线的突破口。
技术手法透视
攻击者利用 Git 的推送机制,将恶意数据封装在 push options 中。由于内部协议并未对这些选项进行转义或格式检查,攻击者能够通过精心构造的字符串,覆盖推送处理时的环境变量。
值得注意的是,GitHub.com 虽然默认禁用了自定义钩子路径功能,但由于该功能的开关状态同样通过 X-Stat 头部传输,攻击者可以利用同样的注入机制强制开启该功能。这种“协议层面的注入”导致了即使在多租户环境下,攻击者也能跨越租户边界,获取共享存储节点上数百万个仓库的访问权限。
Solar 安全建议与经验总结
针对此类高危漏洞,Solar 应急响应团队建议如下:
- 立即升级:GitHub Enterprise Server 用户应尽快核对版本,并更新至 3.14.25、3.15.20、3.16.16、3.17.13、3.18.8、3.19.4、3.20.0 或更高版本。
- 严控内部协议安全:在构建多服务架构时,严禁直接信任内部协议传输的数据。所有跨服务传递的配置信息,必须经过严格的序列化和反序列化校验,杜绝分隔符注入风险。
- 最小化权限原则:尽管是内部操作,仍需对 Git 操作进行细粒度的权限管控,减少异常推送行为的攻击面。
- 审计数据流向:类似攻击近年来明显增加,企业应定期审计用户可控输入在内部协议中的流向,特别是那些涉及安全配置的数据格式。
如果您想了解勒索病毒的最新发展趋势,或在实际业务中遇到类似安全事件,欢迎关注“Solar应急响应团队”。
全国热线:400-613-6816
官网:www.solarsecurity.cn / www.sierting.com
