恶意npm包潜入GitHub Actions构建链的技术分析

安全研究人员发现名为"@acitons/artifact"的恶意npm包通过仿冒合法模块,针对GitHub Actions的CI/CD工作流。该包利用安装后钩子执行混淆脚本,窃取构建环境令牌并发布恶意构件,揭示了软件供应链中的严重安全风险。

恶意npm包潜入GitHub Actions构建过程

攻击概述

一个名为“@acitons/artifact”的恶意npm包被发现仿冒合法的“@actions/artifact”模块,直接针对GitHub Actions工作流中的CI/CD流水线。

根据Veracode的调查结果,该软件包于11月7日上传,旨在在GitHub自有仓库的构建过程中触发。一旦在CI/CD运行器中执行,有效负载会捕获该构建环境可用的所有令牌,然后使用这些凭据发布恶意构件—— effectively impersonating GitHub itself。

技术细节分析

攻击机制

恶意软件包在检测前获得了超过26万次下载,总共上传了六个版本——Veracode研究人员在博客文章中指出,这些版本都无法被“任何流行防病毒产品”检测到。

表面上,@acitons/artifact软件包看起来很正常,其元数据将其描述为“actions artifact lib”,其主页和仓库URL与合法GitHub项目的URL非常相似。但其中嵌入了一个安装后钩子,用于下载并执行名为“harness”的混淆shell脚本。

载荷分析

Veracode的分析显示,这个使用shell脚本编译器工具编译的脚本包含一个基于时间的终止开关,设定在2025年11月6日后停用—— likely to evade detection after a brief active window。一旦调用,harness将获取一个JavaScript文件(“verify.js”),旨在检查构建环境是否属于GitHub,如果是,则窃取GitHub Action令牌。这些令牌随后可能被滥用以冒充GitHub并发布恶意版本。

安全影响与防御建议

专家观点

Cequence Security首席信息安全官Randolph Barr指出:“这起事件不仅仅是关于恶意npm包,而是关于许多组织对现代供应链的盲目信任。大多数组织将其控制重点放在运行时环境上,然而CI/CD流水线通常比任何开发人员都拥有更高的权限。一个简单的仿冒依赖项可以在构建期间静默执行代码、访问仓库令牌并冒充组织,就像这次攻击试图对GitHub自有仓库所做的那样。”

Black Duck高级安全工程师Boris Cipot解释说:“仿冒是软件供应链中一个众所周知且不断增长的威胁向量,攻击者发布名称与合法包相似的包,然后等待错误发生,使受害者误入其仓库错误安装恶意代码。这种攻击策略旨在利用拼写错误并利用CI/CD流水线的自动化性质。”

防御措施

Cipot建议的缓解措施包括使用短期的、范围受限的令牌并定期轮换密钥。使用Socket.dev或Phylum等工具自动扫描可疑软件包也可能有助于领先于威胁。他补充说,其他验证软件包真实性的方法包括校验和验证以及像Sigstore这样的新兴标准。

Sectigo高级研究员Jason Soroko建议可能受影响的团队立即响应:“在源代码、锁定文件、缓存和注册表中搜索@acitons和8jfiesaf83,然后隔离任何获取了这些内容的运行器,”他说,“轮换所有令牌并审查2025年10月29日至11月6日期间的构件和软件包发布历史。”

GitHub官方回应

GitHub表示这些软件包是其红队演练的一部分。“Veracode博客中引用的软件包是GitHub红队进行的严格受控演练的一部分,”GitHub发言人告诉CSO,“GitHub认真对待安全,并通过严格、真实的红队演练定期测试其安全状况,以确保能够抵御当前威胁行为者的技术。GitHub系统或数据从未面临风险。”

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