你可能正在用GitHub存你最重要的代码。

全球最大的代码托管平台,1亿+个仓库,无数企业的命脉。

结果被几个安全研究员发现——只要一个git push命令,就能远程执行任意代码,黑进GitHub的后台。

AI配图

是的,你没看错。

你每天用的那个git push origin master,在特定条件下,可以变成一把钥匙。

打开的,是整个GitHub的防线。

事情是怎么发现的?

发现这个漏洞的,是Wiz Research团队。

他们专门干一件事:找云厂商和代码平台的安全漏洞。

这一次,他们把目光盯上了GitHub的内部git基础设施。

这玩意儿很复杂。当你在本地执行git push,你的请求会经过好几个内部服务:babeld(入口)、gitauth(认证)、gitrpcd(RPC服务器)、还有一个预接收钩子(pre-receive hook)。

每个服务写的语言不一样,传递数据的方式也不一样。

问题就出在这儿。

Wiz团队用了一个新方法:AI辅助逆向工程。

他们用IDA MCP这个工具,快速分析了GitHub那些闭源的二进制文件,重构了内部协议,找到了用户输入可能影响服务器行为的地方。

这是首批用AI在闭源二进制文件中发现的关键漏洞之一

效率高得吓人。

以前需要几个人干几周的事,现在AI几天就搞定了。

一个分号引发的血案

漏洞的核心,是一个叫X-Stat的内部header。

简单说,当你的git push带着push option(推送选项)到达服务器时,babeld服务会把你的选项直接塞进X-Stat header里。

但它没有过滤分号。

而X-Stat是用分号做分隔符的。

这意味着什么?

意味着攻击者可以在push option里插入一个分号,后面跟一个伪造的字段名。

服务器解析的时候,后面的值会覆盖原来的字段。

这就是经典的注入攻击

Wiz团队顺藤摸瓜,发现可以通过注入三个字段实现完整的攻击链:

  1. rails_env — 覆盖环境变量,把代码执行从沙盒模式切换到直接执行模式
  2. custom_hooks_dir — 控制钩子脚本的查找目录
  3. repo_pre_receive_hooks — 注入一个带路径穿越的钩子定义

三枪开火,直接RCE。

AI配图

在GitHub Enterprise Server上,他们成功执行了id命令,获得了git用户的权限。

然后他们把同样的攻击链搬到GitHub.com。

第一次,没成功。

他们又回头分析,发现GitHub.com默认不启用企业模式,而这个标志位也在X-Stat header里。

再补一枪,RCE on GitHub.com。

一个git push,远程代码执行,确认。

最恐怖的还在后头

GitHub.com是多租户架构。

什么意思?

不同的公司、不同的组织,共用同一套后端基础设施。

当Wiz获得git用户的权限后,他们发现这个用户可以访问存储节点上的所有仓库

他们只做了验证:枚举了两个被攻破的节点上的仓库索引。

每个节点上有数百万个条目,属于不同的用户和组织。

理论上,攻击者可以读取任何仓库的内容——只要它和攻击者在同一个节点上。

Wiz说他们没有真的去读,只是验证了权限模型允许这么做。

但这个验证本身,已经足够让人后背发凉。

GitHub的回应:快,但不够快

从报告到修复,GitHub的速度其实很快。

3月4日,Wiz发现漏洞并报告。

同一天,GitHub确认收到。

6小时后,GitHub.com的漏洞被堵住。

3月10日,CVE分配,GHES补丁发布。

4月28日,公开披露。

速度没得说。

但有一个数据很尴尬:

截至这篇博客发布时,88%的GitHub Enterprise Server实例仍然存在漏洞。

7周过去了。

88%。

这个数字让我想起了Windows系统的补丁安装率。

企业级软件,升级有时候比登天还难。

生产环境不能随便动,兼容性要测,IT审批要走流程。

但这个漏洞的严重程度是CVSS 8.7,高危。

AI配图

一个认证用户,一条命令,直接RCE。

那些没升级的企业,等于裸奔。

这事儿给我们什么启示?

Wiz团队在博客里写了一段话,我觉得很值得细看:

当多个用不同语言写的服务,通过一个共享的内部协议传递数据时,每个服务对数据的假设,就成了攻击面。

一个服务假设push option的值是安全的,可以直接嵌入。

另一个服务假设X-Stat header里的每个字段都是可信来源设置的。

预接收钩子假设rails_env只能是production。

每个假设单独看都挺合理,放在一起,就是灾难。

用户输入永远不应该被信任。

不管它来自哪里,不管它经过多少层服务。

该过滤的过滤,该校验的校验,该隔离的隔离。

这道理说了多少年了,还是有人在前仆后继地踩坑。

另外,AI在安全研究里的角色,越来越重要了。

Wiz自己说,用AI辅助逆向工程,让以前"不切实际"的工作变得可行。

AI不会累,不会烦,能快速处理大量二进制代码,找出人类容易漏掉的模式。

这对安全研究员是好事。

但对攻击者呢?

攻防两端都在进化。

就看谁跑得更快。

最后说几句

这个漏洞现在应该已经修得差不多了。

GitHub.com没问题,GHES的补丁也早就出来了。

但88%这个数字,提醒我们一件事:

安全不是下载一个补丁就完事了。

它是一个持续的、痛苦的、没人爱干但必须干的过程。

而GitHub,作为全球最大的代码托管平台,掌握着无数企业的命脉,它出的任何问题,影响都会被放大。

有评论说:"GitHub的案例会成为商学院教材里的经典案例,讲述一家公司如何差点毁掉自己的垄断地位。"

有点夸张,但也不是没道理。

毕竟,不是每个平台都有机会从一个git push里活下来。


【锐评】:

88%的GHES实例7周不升级这件事,比漏洞本身更说明问题——企业安全很多时候不是技术问题,是执行力问题。而AI发现闭源漏洞这个趋势,才是真的要变天了。

参考链接:
https://www.wiz.io/blog/github-rce-vulnerability-cve-2026-3854