2026年3月19日,流行的开源安全扫描工具 Trivy 遭受了严重的供应链攻击。攻击者利用此前泄露且未彻底轮换的凭证,发布了包含恶意代码的 v0.69.4 版本,并篡改了 GitHub Action 的多个版本标签。受影响的组件会秘密窃取系统内存和文件中的各类敏感密钥(如 AWS、SSH、数据库凭证等)并外传。目前建议所有用户立即升级到安全版本,并对可能泄露的密钥进行彻底更换。
攻击核心要点
此次事件是 2026 年 2 月底供应链攻击的延续。由于凭证轮换不彻底,攻击者在窗口期内获取了新的密钥,从而在 3 月 19 日实施了新一轮攻击:
- 恶意版本发布:攻击者发布了恶意 Trivy v0.69.4 版本。
- 标签劫持:强行推送了 76 个
trivy-action标签和 7 个setup-trivy标签,将原本正常的代码替换为含有木马的提交。 - 窃密行为:恶意代码会扫描超过 50 个文件路径并读取进程内存,搜寻 SSH 密钥、云平台凭证、K8s 令牌等。
核心教训:凭证轮换必须是原子化的、彻底的。只要有一个环节滞后,攻击者就能利用旧权限维持访问。
受影响的组件清单
| 组件名称 | 受影响版本 | 安全版本 |
|---|---|---|
| aquasecurity/trivy | 0.69.4 (及 latest 标签) | 0.69.3 或更早 |
| aquasecurity/trivy-action | 所有标签 0.0.1 – 0.34.2 | 0.35.0 及以上 |
| aquasecurity/setup-trivy | 所有旧标签 (v0.2.0 – v0.2.6) | v0.2.6 (已重新发布安全版) |
恶意行为详解
攻击者在 GitHub Action 的入口脚本中注入了 信息窃取程序 (Infostealer),其运行逻辑如下:
- 内存与文件扫描:通过
/proc/<pid>/mem倾倒进程内存,并扫描磁盘上的配置文件、.env 文件和加密货币钱包。 - 数据加密:使用 AES-256-CBC 和 RSA-4096 混合加密收集到的数据。
- 隐蔽外传:将加密数据发往攻击者控制的服务器。如果外传失败且环境中有 GitHub 令牌,它会在受害者账号下创建一个名为
tpcp-docs的公开仓库,并以发布附件的形式上传失窃数据。
紧迫的应对措施
如果您在 3 月 19 日至 20 日期间运行过 Trivy 相关任务,请执行以下操作:
- 强制升级:将 Trivy 升级至 v0.69.3,将
trivy-action升级至 v0.35.0 或更高。 - 彻底更换密钥:假设所有在流水线中可访问的密钥(Secrets)均已泄露,立即轮换所有 AWS、GCP、Azure、SSH、API 令牌和数据库密码。
- 审计 GitHub 仓库:检查您的组织中是否存在名为
tpcp-docs的仓库。如果存在,说明数据外传已触发。 - 使用 Commit SHA:今后在引用 GitHub Action 时,避免使用可变的标签(如 @v1),而应改用不可变的 完整 Commit SHA。
安全建议:GitHub 官方建议始终将第三方 Action 锁定在特定的提交哈希值上,以防标签被篡改或劫持。
验证方法
对于已下载的二进制文件,可以使用 cosign 工具验证其签名。安全的版本签名时间应早于 2026 年 3 月 19 日。
- 检查时间戳:通过验证签名 bundle,确认集成时间是否在攻击发生之前。
- 容器镜像:通过镜像的 Digest(摘要)而非标签来拉取镜像,确保环境一致性。