![]()
「我们以为修好了,但攻击者还在里面。」Aqua Security安全团队在3月22日的更新中写下这句话时,距离他们第一次宣布「已修复」已经过去了三周。
这场针对开源漏洞扫描工具Trivy的供应链攻击,正在演变成2026年最棘手的安全事件之一。攻击者没有粗暴地发布一个带毒的新版本,而是像篡改档案馆的索引卡片一样,直接修改了76个历史版本标签——让无数正在运行的CI/CD流水线在「正常扫描」的表象下,默默上交了自己的云凭证。
攻击者的「时间差」战术:为什么修复通知反而成了掩护
故事始于2月底的一个配置失误。Trivy的GitHub Actions环境存在权限配置漏洞,攻击者借此提取了一枚高权限访问令牌。3月1日,Aqua Security公开披露事件并执行了凭证轮换,按照常规剧本,这应当是一次标准的安全响应。
但凭证轮换漏掉了一枚。
这枚漏网之鱼让攻击者在暗处保留了据点。三周后的3月19日,他们发起了第二轮攻势:向aquasecurity/trivy-action仓库的76个版本标签强制推送恶意提交,同时污染了aquasecurity/setup-trivy的全部7个标签。更隐蔽的是,他们触发自动化发布流程,将植入后门的Trivy 0.69.4版本推送到各大分发渠道。
这里的手法值得细品。攻击者没有创建0.69.5或0.70.0这类容易引起警觉的新版本号,而是选择篡改现有标签。这意味着什么?那些依赖@v0.69.4这类浮动版本引用的企业,会在下一次流水线执行时自动获取被污染的代码——而他们的日志里只会显示「Trivy扫描完成,未发现异常」。
恶意代码的植入位置也经过精心计算:它运行在合法Trivy逻辑之前,完成数据窃取后再把控制权交还给正常程序。整个流程对用户完全透明,就像酒店清洁人员在客人退房后复制房卡,却留下房间整洁如常的假象。
被收割的「信任惯性」:为什么你的版本锁定策略可能是错的
这次攻击暴露了一个长期被忽视的盲区:许多团队对「版本锁定」的理解停留在表面。
攻击者明确瞄准了依赖可变版本标签(mutable version tags)的用户群体。在GitHub Actions的生态中,@v1、@v0.69.4这类标签默认可以被维护者重新指向不同的提交。相比之下,固定提交哈希(pinned commit hash)虽然繁琐,却能免疫这种「借尸还魂」式的攻击。
被窃取的数据类型清单读起来像云原生工程师的噩梦:AWS、GCP、Azure的访问密钥,Kubernetes服务账户令牌,SSH私钥,Docker配置文件,各类API令牌。这些凭证从CI/CD环境中被批量抽走,通过加密通道输送至攻击者控制的基础设施。
Aqua Security的商业产品线在此刻显示出了架构隔离的价值。其付费平台与开源仓库物理隔离,采用独立的发布管道、严格的访问控制,以及故意滞后于开源版本的集成流程。这次事件中,付费用户确实毫发无损——但这也引出了一个尴尬的对比:开源用户承担了更大的攻击面,却得不到同等级别的保护。
辩论:开源供应链安全,到底该谁买单?
事件发酵后,社区分裂成两个阵营。
正方观点:维护者已尽力,用户需自担风险
支持者指出,Aqua Security的响应速度在行业内属于中上水平。从3月1日首次披露到3月19日发现二次入侵,再到3月21-22日周末连续追踪攻击者的重新渗透尝试,安全团队与全球应急响应公司Sygnia的协作堪称密集。最终的 remediation 措施也足够彻底:全面撤销凭证、弃用长期令牌、推行不可变发布验证机制。
更深层的辩护来自开源经济的现实:Trivy作为免费工具,其维护团队没有义务为企业的生产环境安全背书。那些将核心基础设施绑定在浮动版本标签上的团队,本质上是在用「方便」交换「风险」——这个等式在出事前从未被认真计算过。
反方观点:「已修复」的误导性声明放大了损害
批评者抓住了3月1日公告的措辞问题。当官方声称「已执行凭证轮换」时,任何理性用户都会理解为威胁已被消除。三周的安全窗口期被浪费,攻击者得以从容扩大战果。这种「虚假安全感」比沉默更危险——它让受害者在不知情的情况下持续暴露。
更尖锐的质疑指向GitHub Actions生态本身。为什么平台默认允许强制推送覆盖版本标签?为什么缺乏对关键仓库的异常操作预警?当攻击者可以批量篡改76个标签而不触发熔断机制,基础设施层面的防护缺口同样难辞其咎。
我的判断:这是一次「系统性默契」的破裂
双方都有理,但都回避了真正的问题。开源供应链的安全从来不是单点责任,而是一种脆弱的共识:维护者承诺「尽力而为」,用户承诺「谨慎使用」,平台承诺「基础防护」。Trivy事件之所以严重,是因为这三层默契在同一时间点失效。
维护者的凭证轮换存在盲区,用户的版本引用策略存在惰性,平台的标签可变性设计存在隐患——任何单独一环的加固都可能阻断攻击,但现实中它们形成了共振。更值得警惕的是攻击者对「信任修复窗口」的利用:他们似乎精准预判了官方公告与彻底清查之间的时间差,将其转化为操作空间。
这种对「组织行为节奏」的利用,标志着供应链攻击正在进入更精细化的阶段。
未结束的对抗:攻击者仍在尝试重新入场
截至3月22日的调查更新,事件远未落幕。Aqua Security与Sygnia在周末的联合排查中发现了新的可疑活动,符合攻击者试图重建访问路径的行为模式。这意味着什么?对方可能还持有未被识别的凭证,或者已经在生态系统的其他位置埋下了新的据点。
目前的 remediation 进展包括:从GitHub Releases、Docker Hub、Amazon ECR等全部分发渠道下架恶意版本;完成全环境凭证撤销;启动长期令牌向短期凭证的迁移;以及最关键的一项——建立不可变发布验证机制,确保未来任何版本标签的变更都能被审计和告警。
但对于已经运行过被污染版本的用户来说,补救窗口可能已经过去。恶意代码的静默执行特性意味着,凭证泄露可能发生在数周之前,而攻击者的利用行动「正在更广泛的生态系统中积极进行」——这是官方描述,翻译过来就是:你的云账单上可能出现异常资源,或者更糟,你的集群里已经有了看不见的访客。
如果你在使用Trivy,现在该做的不是检查当前版本是否「干净」,而是假设过去三周内任何一次扫描都可能已被污染。轮换所有CI/CD环境中使用的凭证,审查云平台的访问日志,考虑将版本引用从标签迁移到提交哈希——这些动作没有一个是轻松的,但拖延的成本可能更高。
Aqua Security的最后一次更新以一句罕见的直白收尾:「调查仍在进行,我们将持续分享发现。」对于习惯了「已修复」式公告的读者,这种不确定性的坦诚本身,或许才是值得注意的信号。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.