攻击者已入侵广受欢迎的开源漏洞扫描工具Trivy,在官方版本及数千个CI/CD工作流使用的GitHub Actions中植入了凭证窃取恶意软件。若受影响项目和组织未立即轮换密钥,此次入侵可能引发连锁式供应链攻击。
Trivy维护团队披露,此次攻击源于上月末公布的早期入侵事件,同样利用了不安全的GitHub Actions并波及多个项目。安全公司Socket和Wiz溯源发现,首次入侵后凭证轮换不彻底,导致攻击者得以重返Trivy环境提交恶意代码。

多组件遭植入后门
由Aqua Security开发的Trivy是最主流的开源漏洞扫描器之一,拥有超过32.000个GitHub星标和1亿次Docker Hub下载量。开发者常用其在CI/CD流水线和容器镜像中检测漏洞及暴露的密钥。
攻击者入侵了Trivy项目的三个组件:用于CI/CD工作流的官方GitHub Action组件trivy-action、安装辅助工具setup-trivy,以及Trivy二进制文件本身。被篡改的构件已发布至GitHub releases、Docker Hub、GitHub容器注册表和亚马逊弹性容器注册表。
据Socket分析,trivy-action的76个版本标签中有75个被恶意代码覆盖,setup-trivy的7个标签同样遭篡改。唯一未受影响的trivy-action标签是0.35.0版本。被入侵的标签包括0.34.2、0.33.0和0.18.0等常用版本。
窃取开发环境密钥
在GitHub Actions运行器上,恶意程序会读取进程内存提取密钥,并扫描文件系统获取SSH密钥、云服务凭证、Kubernetes令牌、Docker注册表配置及加密货币钱包。
失窃数据经加密后发送至仿冒Aqua Security官网的域名。若失败则转为在受害者GitHub账户创建名为"tpcp-docs"的公开仓库上传数据。据Wiz披露,攻击还会在开发者机器植入持久化Python投放器,每五分钟连接攻击者服务器获取新载荷。
隐蔽标签篡改手法规避检测
攻击者未创建新版本(会触发通知),而是强制推送现有版本标签指向恶意提交。Git标签本质是指向特定提交的指针,篡改指针目标后,所有引用该标签的工作流都会拉取攻击者代码。
为增强隐蔽性,攻击者克隆了原始提交的元数据(作者名、邮箱、时间戳及消息),使恶意提交与合法提交看似无异。伪造痕迹仅体现为缺失加密签名和时间戳逻辑矛盾。该手法与一年前影响23.000个仓库的tj-actions/changed-files入侵事件如出一辙。
安全防护启示录
Trivy首次入侵发生在2月下旬,攻击者利用自2025年10月存在于仓库的错误配置GitHub Actions工作流。该工作流由外部拉取请求触发,却拥有仓库密钥访问权限——这种危险模式早有文档警示。
攻击者窃取具备写入权限的个人访问令牌(PAT),用于删除版本、重命名仓库及发布恶意VS Code扩展。虽然维护团队轮换了凭证,但存在遗漏。对于专注CI/CD安全的公司,这种疏漏尤其值得受影响组织警惕——恶意软件专门窃取可能引发自身供应链攻击的同类型凭证。
重复上演的攻击模式
Trivy事件是GitHub Actions及开发者群体遭攻击趋势的最新案例。去年tj-actions/changed-files入侵采用相同标签篡改手法,后溯源至reviewdog/action-setup的上游入侵。2025年其他事件包括窃取327名GitHub用户超3000个密钥的GhostAction行动,以及利用脆弱pull_request_target工作流攻击nx npm包的事件。
尽管GitHub已于2025年12月修改pull_request_target工作流默认行为降低风险,但Trivy仓库的脆弱工作流早于该变更。使用Trivy的组织应将GitHub Actions固定为完整提交SHA哈希值(而非版本标签)防范标签篡改。安全版本为Trivy v0.69.3、trivy-action 0.35.0及setup-trivy 0.2.6.安全团队还应检查GitHub账户是否存在"tpcp-docs"仓库(表明数据外泄成功),并在网络边界拦截C2域名及其IP。


