GitHub Actions、Gravity Forms与npm供应链攻击技术分析

研究人员发现GitHub Actions、WordPress插件Gravity Forms和npm包UAParser.js存在供应链攻击,攻击者通过恶意提交、后门代码和依赖混淆技术危害软件供应链,影响数万仓库和数百万网站。

供应链攻击现身GitHub Actions、Gravity Forms与npm

研究人员在流行开发工具中发现后门、投毒代码和恶意提交,危及软件供应链安全。

来源:Denys Rudyi via Alamy Stock Photo

研究人员发现影响GitHub及流行WordPress和npm工具的恶意活动,可能造成重大供应链风险。Armis Labs在新报告中重点介绍了三个近期发现的漏洞利用,影响在技术、金融、医疗、政府、零售和制造业(覆盖北美、欧洲和亚太地区)极受欢迎的软件供应链工具。报告指出,影响这三个工具的安全问题尚未添加到CISA的已知被利用漏洞目录中。

“这些攻击说明了软件供应链威胁的危险现实,“Armis威胁情报主管Michael Freeman表示。“每个攻击代表了不同的入侵向量(WordPress插件、GitHub自动化工作流和npm包安装),但都共享一个关键主题:它们曾是受信任的工具,却变成了攻击面。”

“这意味着防御者必须左移,使用早期预警情报和行为分析在威胁进入生产环境之前检测到它们,“他补充道。

不幸的是,由于人工智能(AI)生成的软件激增,防御者的工作只会变得越来越困难。

GitHub Actions遭利用

研究人员发现的第一个显著漏洞利用是2024年11月至2025年3月活动的一部分,影响了GitHub Actions——GitHub中的持续集成和持续交付/部署(CI/CD)功能,允许开发者使用自动化工作流的脚本。

攻击者首先替换了与一个GitHub Action(reviewdog/action-setup@v1)相关的版本标签,指向其恶意代码。此后,任何使用此action的项目都会在其工作流中自动运行攻击者的代码。

在某个时刻,攻击者以某种方式获得了个人访问令牌(PAT),允许他们对另一个action"tj-actions/changed-files"进行写访问。伪装成受信任的更新机器人,他们能够将自己的提交推送到action的index.js文件中,该提交被自动接受和合并。为了完成漏洞利用,他们"强制重标记"了该action的所有各种标签,意味着每个版本都会指向恶意代码——设计用于从受害者计算机内存中窃取秘密的代码。

据研究人员称,多达23,000个GitHub仓库受到此供应链漏洞的影响。Freeman报告称,问题已得到解决,采取了多项措施包括提交签名、保护分支、SHA固定、撤销PAT、清理日志和移除恶意标签。

UAParser.js与Gravity Forms的问题

同样竞争最广泛供应链问题的是Armis在JavaScript库"UAParser.js"中发现的漏洞利用。UI/UX设计师、分析团队、软件即服务(SaaS)供应商等使用UAParser.js提取用户系统信息:浏览器、引擎、操作系统(OS)、CPU、设备类型和型号。它在npm包管理器上每周下载量超过1600万次,更不用说依赖它的无数现有项目。

在2025年的某个时间点(可能在4月至7月之间),攻击者设法获取了开发者凭证以投毒UAParser.js,特别是版本0.7.29、0.8.0和1.0.0。此时,任何使用npm install将其集成到项目中的用户都可能无意中运行执行恶意软件的安装后脚本。

Armis还在报告中指出,npm是其跟踪最多后门事件的平台。

最近,攻击者瞄准了WordPress插件Gravity Forms,该插件允许用户在其网站上创建自定义表单。Gravity Forms是全球最流行的表单构建器之一,估计当前有65.5万至93万个活跃网站使用,仅美国就有超过50万个。历史上还有150万个网站使用过它。

7月9日至10日,攻击者向插件官方下载站点的版本2.9.11和2.9.12注入了秘密后门代码。供应商Rocketgenius在版本2.9.13中移除了后门,并于次日迅速发布。

预计供应链风险将恶化

可以说,从宏观角度看,供应链安全近年来有所改善。根据某些衡量标准,供应链威胁一直在下降,主要(我们认为)得益于托管开源软件(OSS)的平台改进了检测。

然而,对于任何倾向于乐观的人,Freeman准备了一盆冷水。

“随着氛围编码(vibe coding)——人们现在使用AI编写代码——我们发现了三种新型攻击,“他表示。首先,最明显的是,“每当AI为你创建代码时,它会引入非常脆弱的组件。威胁行为者开始意识到这一点。”

但更有趣的是低级AI内容成为训练数据以指导大型语言模型(LLM)编写代码的滑稽方式。“我可以使用AI撰写大量论文甚至博客文章,介绍引入不良实践的某些类型编码。但我不将其作为不良实践出售。然后会发生的是,来自OpenAI或其他公司的训练爬虫会拉取这些数据,不会分析它,但会将其用作训练数据的真相来源。这会影响AI模型实际上开始编写更多不安全代码,“他解释道。

最后是依赖混淆(slopsquatting),源于AI代码有时引用不存在的依赖项。“威胁行为者实际上已经运行了该过程,识别它如何产生幻觉,“Freeman指出,因此他们可以注册具有相同名称的真实包,并在其中填充特洛伊木马化代码。“我可以后门一个实际上不存在的仓库,但你的AI告诉你它存在。它搜索GitHub,找到它,并加载它。”

“在过去,“他警告道,“威胁行为者需要花费数月到数年的时间来实际后门开源软件库,现在,由于人们使用氛围编码和AI编码方法,我可以通过这些方法后门数千甚至数万个软件供应链,而这只需要我一个周末的时间。”

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计