仿冒 "@actions/artifact" 的恶意包窃取令牌并冒名发布恶意构件

一个名为 "@acitons/artifact" 的恶意 npm 包被发现仿冒合法的 "@actions/artifact" 模块,专门针对 GitHub Actions 工作流中的 CI/CD 管道。根据 Veracode 的调查结果,该软件包于 11 月 7 日上传,设计用于在 GitHub 所属代码库的构建过程中触发。一旦在 CI/CD 运行器中执行,其有效负载会捕获该构建环境中的所有可用令牌,然后利用这些凭证发布恶意构件——实际上是冒用 GitHub 的名义。
"这不仅仅是一个恶意 npm 包事件,它反映了许多组织对现代供应链的盲目信任,"Cequence Security 首席信息安全官 Randolph Barr 表示。"大多数组织将控制措施集中在运行时环境上,而 CI/CD 管道通常拥有比任何开发者更高的权限。正如这次攻击试图对 GitHub 自身代码库所做的那样,一个拼写错误的依赖项可以在构建过程中静默执行代码、访问代码库令牌并冒充组织。"
Veracode 研究人员在一篇博客文章中指出,该恶意软件包在被发现前已获得超过 26 万次下载,共上传了六个版本——"任何流行杀毒软件"均未检测到。GitHub 表示这些软件包是其红队演练的一部分。"Veracode 博客中提到的软件包是 GitHub 红队进行的严格受控演练的一部分,"GitHub 发言人告诉 CSO。"GitHub 高度重视安全,并通过严格、真实的红队演练定期测试其安全态势,以确保能够抵御当前威胁行为者的技术。GitHub 系统或数据从未面临风险。"
劫持 GitHub Actions 构建流程
表面上,@acitons/artifact 软件包看起来很正常,其元数据将其描述为"actions artifact lib",其主页和代码库 URL 与合法的 GitHub 项目非常相似。但其内部嵌入了一个安装后钩子,用于下载并执行一个名为"harness"的混淆 shell 脚本。
Veracode 的分析显示,这个用 shell 脚本编译器工具编译的脚本包含一个基于时间的自毁开关,设定在 2025 年 11 月 6 日后停用——可能是为了在短暂的活动窗口后逃避检测。一旦被调用,harness 将获取一个 JavaScript 文件("verify.js"),用于检查构建环境是否属于 GitHub,如果是,则窃取 GitHub Action 令牌。这些令牌随后可能被滥用来冒充 GitHub 并发布恶意版本。
"拼写错误劫持是软件供应链中一个众所周知且日益增长的威胁载体,攻击者发布名称与合法软件包相似的软件包,然后等待错误发生,使受害者误入其代码库安装恶意代码,"Black Duck 高级安全工程师 Boris Cipot 解释道。"这种攻击策略旨在利用拼写错误和 CI/CD 管道的自动化特性。"Cipot 补充说,使用安装后钩子和短寿命的混淆有效负载表明攻击者有意将其混入正常构建活动中。
防御经验
Barr 指出,CI/CD 管道中的更高权限使其成为理想目标。攻破构建运行器的攻击者可以在源头注入代码,使用合法凭证签署版本,或推送看似真实的构件。
Cipot 建议的缓解措施包括使用短期的、限定范围的令牌并定期轮换密钥。使用 Socket.dev 或 Phylum 等工具自动扫描可疑软件包也可能有助于提前防范威胁。他补充说,其他验证软件包真实性的方法包括校验和验证以及 Sigstore 等新兴标准。
Sectigo 高级研究员 Jason Soroko 建议可能受影响的团队立即采取应对措施。"在源代码、锁定文件、缓存和注册表中搜索 @acitons 和 8jfiesaf83,然后隔离任何获取它们的运行器,"他说。"轮换所有令牌,并审查 2025 年 10 月 29 日至 11 月 6 日期间的构件和软件包发布历史。"
参考来源:
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf
客服小蜜蜂(微信:freebee1024)



