供应链攻击在 GitHub Actions、Gravity Forms 和 npm 中被发现
研究人员在一些较流行的开发工具中发现了后门、恶意代码和恶意提交,危及软件供应链。
研究人员发现影响 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)相关的版本标签,将其指向他们的恶意代码。从那里开始,任何使用此操作的项目都会在其工作流中自动运行攻击者的代码。
在某个时刻,攻击者设法获取了一个个人访问令牌(PAT),允许他们对另一个操作“tj-actions/changed-files”进行写访问。伪装成受信任的更新机器人,他们能够将自己的提交推送到该操作的 index.js 文件中,该提交被自动接受和合并。为了完成漏洞利用,他们“强制重新标记”了该操作的所有各种标签,这意味着每个版本都会指向恶意代码——这些代码旨在从受害者计算机的内存中窃取机密信息。
根据研究人员的说法,多达 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 内容成为训练数据,影响大型语言模型(LLMs)编写代码的滑稽方式。他解释说:“我可以使用 AI 写一堆论文,甚至博客文章,介绍某些引入不良实践的编码类型。但我不把它作为写不良实践来出售。然后会发生的是,来自 OpenAI 或其他公司的训练爬虫会抓取这些数据,不会分析它,但会将其用作训练数据的真实来源。因此,这会影响 AI 模型实际上开始编写更多不安全代码。”
最后是 slopsquatting,源于 AI 代码有时引用不存在的依赖项。“威胁行为者实际上已经运行了这个过程,识别出它是如何产生幻觉的,”Freeman 指出,因此他们可以注册具有相同名称的真实包,并在其中填充特洛伊木马化的代码。“我可以后门一个实际上不存在的仓库,但你的 AI 告诉你它存在。它搜索 GitHub,找到它,并加载它。”
他警告说:“在过去,威胁行为者需要花费数月到数年的时间来实际后门开源软件库,现在,由于人们使用氛围编码和 AI 编码方法,我可以通过这些方法后门数千甚至数万个软件供应链,而这只需要我一个周末的时间。”