近期多起供应链攻击事件本可被提前发现——前提是防御者认真审视GitHub已经提供的遥测数据。这一观点由微软研究员约西·韦茨曼(Yossi Weizman)与Echo公司研究员莫尔·温伯格(Mor Weinberger)在2026年Black Hat USA大会上联合提出。两位研究员表示:"GitHub其实已经在告诉你,你正在被攻击,只是你没有在听。"
利用GitHub自身数据流构建检测体系
两位研究员描述了一种类似端点检测与响应(EDR)的检测方法,该方法完全基于GitHub自身的事件流,而非单纯依赖传统的终端或网络遥测数据。
在研究了Shai-Hulud、Trivy、Megalodon等近期供应链攻击事件后,两人发现:看似不同的攻击事件中,攻击者反复使用了相同的技术手段,包括伪造提交身份、污染标签、滥用工作流、窃取OpenID Connect(OIDC)凭证,以及清除攻击痕迹等。
他们将上述反复出现的攻击技术转化为行为检测规则,综合利用GitHub Webhooks、API数据以及Git仓库检查,构建出完整的历史活动视图。
开源工具"GitHub Threat Detector"
由此诞生的开源工具名为"GitHub Threat Detector",据报道已包含22条正式检测规则和12条测试版规则,并设有复合检测机制,可将单独来看较弱的信号关联整合,生成高置信度告警。
伪造身份:被忽视的关键信号
韦茨曼和温伯格研究的核心发现在于:即便目标项目互不相关,供应链攻击往往也会重复相同的攻击模式。
以身份伪造为例,单从提交记录本身并不容易识别,因为Git元数据可以被篡改,攻击者可以修改作者姓名、邮箱、时间戳、父提交等信息,使恶意提交看起来完全合法。然而,GitHub会单独记录实际执行推送操作的认证用户。
两位研究员解释称,当提交作者与认证推送者不一致时,这就是一个值得深入调查的线索。更进一步,他们的分析还发现,攻击者有时会在针对不同受害者的攻击中复用相同的伪造身份。因此,在GitHub上搜索相同的作者邮箱,有助于将表面上毫不相关的事件串联成一场更大规模的攻击行动。
"仓库中出现的伪造身份,若在其他仓库中同样出现,则是被入侵的强烈信号。"两人表示。
研究还发现,"伪造维护者身份"这一手段被广泛使用于Trivy、tj-actions、Megalodon、TanStack和Red Hat等多起攻击事件中。
批量标签污染与OIDC异常
另一项重要检测方向是"批量标签污染"。攻击者通过强制将大量发布标签指向恶意提交,使得工作流中引用特定版本(如@v1)时实际执行的是攻击者控制的代码。研究员建议通过GitHub API追踪标签历史,并对比新旧提交引用来发现此类行为。
OIDC同样可提供异常信号。攻击者可能修改工作流,为云服务或包注册表生成短期身份凭证,从而避免窃取长期凭证。研究员表示,关注新增或修改的、启用OIDC Token签发功能的工作流,有助于及时发现此类行为。
工具架构与局限性
"GitHub Threat Detector"遵循类EDR的处理流程:采集活动数据、补充上下文信息、检测可疑行为,最后进入调查或响应环节。其数据来源包括实时GitHub Webhooks、API事件、提交记录、标签及Actions活动,同时通过Git检查获取标签来源等附加上下文信息。工具还使用PostgreSQL存储历史活动数据,以支持跨时间的事件关联分析。
研究团队共整理了30余条检测规则,并针对52个攻击模拟场景进行了测试,涵盖Trivy、TanStack、Megalodon及Bitwarden CLI等真实事件的复现。此外,研究人员还专门搭建了"噪声实验室",用于衡量检测覆盖率和召回率,并通过白名单设置和严重等级调整对规则进行持续优化。
不过,该工具也存在一定局限性,包括Webhooks可能被禁用、API存在速率限制,以及Git检查无法实现实时监控等问题。
Q&A
Q1:GitHub Threat Detector是什么?它能检测哪些攻击行为?
A:GitHub Threat Detector是由微软研究员约西·韦茨曼与Echo公司研究员莫尔·温伯格联合开发的开源安全工具,基于GitHub自身的事件流构建类EDR检测体系。它目前包含22条正式检测规则和12条测试版规则,可检测伪造提交身份、批量标签污染、OIDC凭证滥用、工作流异常修改等供应链攻击手段,并能将多个弱信号关联整合,生成高置信度告警。
Q2:攻击者是如何通过伪造Git身份来隐藏攻击行为的?
A:Git的元数据(包括作者姓名、邮箱、时间戳、父提交等)都可以被手动篡改,因此恶意提交在外观上可以与正常提交完全一致。但GitHub会单独记录实际执行推送的认证用户。当提交作者与认证推送者不匹配时,就是可疑信号。此外,攻击者有时会在不同受害者的攻击中复用相同的伪造邮箱,通过全局搜索这些邮箱,可以将看似独立的事件关联成同一攻击活动。
Q3:批量标签污染攻击是如何运作的,应该如何防范?
A:批量标签污染是指攻击者强制将大量Git发布标签(如v1、v2等)重新指向一个恶意提交,导致引用这些标签的工作流实际执行攻击者控制的代码。防范方法是通过GitHub API追踪标签的历史变更记录,对比标签在不同时间点指向的提交哈希值,一旦发现大量标签短时间内集中被重新指向同一提交,即应触发告警进行调查。
