共计 3454 个字符,预计需要花费 9 分钟才能阅读完成。
CI/CD 管道供应链攻击威胁日益严重,企业应加强 GitHub Actions 安全配置,保护凭证安全,建立供应链安全监控机制。
🚨 紧急安全警报
事件时间:2026 年 3 月 19 日
影响范围:全球数千个使用 Trivy 漏洞扫描器的组织
攻击类型:高级持续性威胁(APT)针对软件供应链
威胁组织:TeamPCP(追踪中)
📅 攻击时间线
– 76/77 个 trivy-action 版本标签被篡改
– 7/ 7 个 setup-trivy 版本标签被篡改
– 恶意代码通过 GitHub Actions 传播到 CI/CD 管道
– 发布安全版本 v0.69.2-v0.69.3
– 警告用户升级到安全版本
– 影响 LiteLLM 框架
– 攻击手法持续进化
一、攻击技术深度分析
1.1 Git 标签滥用机制
攻击者利用了 Git 设计的两个关键特性:
1. 可变的标签:在 Git 中,标签是指向特定提交的标签。默认情况下,这些引用不是不可变的——任何具有推送访问权限的人都可以将现有标签重新分配给完全不同的提交。攻击者正是这样做的,将 trivy-action 中的 76/77 标签和 setup-trivy 中的所有 7 个标签背后的目标提交替换为包含恶意负载的提交。
2. 自我声明的提交身份:威胁行为者欺骗了提交的身份,类似于在 Shai-Hulud 2.0 活动 中观察到的人格冒充策略。
1.2 恶意软件执行链
Microsoft Defender for Cloud 观察到了自托管 GitHub Actions 运行器中的完整攻击链:
- 进程发现:定位运行器进程(Runner.Worker、Runner.Listener)
- 凭证识别:检查携带机密的进程
- Python 负载解码:执行 base64 编码的 Python 有效负载
- 凭证窃取:从环境变量、文件系统、云服务等多渠道收集凭证
- 数据加密与外传:使用 AES-256-CBC + RSA 混合加密,通过 HTTP POST 外传
- 清理与伪装:清理临时文件,启动合法的 Trivy 扫描
二、凭证窃取的技术细节
攻击目标:最大化每个受感染运行器的价值
| 凭证类型 | 窃取技术 | 风险等级 |
|---|---|---|
| 云凭证 |
|
严重 |
| Kubernetes 密钥 |
|
高 |
| CI/CD 与应用机密 |
|
高 |
| 基础设施与访问凭证 |
|
中 |
| 加密货币凭证 | 搜索 Solana 钱包变量和 RPC 身份验证凭证(rpcuser、rpcpassword) | 低 |
三、Microsoft Defender 检测能力
3.1 威胁检测覆盖
Microsoft Defender XDR 跨端点、身份、电子邮件和应用程序协调检测、预防、调查和响应,提供针对此类攻击的集成保护。
| 战术 | 观察到的活动 | Microsoft Defender 覆盖 |
|---|---|---|
| 凭证访问 | 访问云资源中的 IMDS 端点以窃取云令牌 | Microsoft Defender for Cloud: – 访问云元数据服务检测 |
| 凭证访问 | 作为 CI/CD 运行器的容器上的机密侦察 | Microsoft Defender for Cloud: – 可能的机密侦察检测 Microsoft Defender for Endpoint: – Kubernetes 机密枚举表明凭证访问 |
| 命令与控制 | DNS 查询到 Microsoft 威胁情报标识为可疑的域名 | Microsoft Defender for Identity: – 组织设备中的可疑 DNS 查询 |
| 数据外传 | 受感染 Trivy 版本执行的恶意外传活动 | Microsoft Defender for Cloud: – 检测到来自 TeamPCP 供应链攻击的恶意命令 |
四、紧急缓解与防护指南
4.1 立即更新到安全版本
| 组件 | 安全版本 | 紧急行动 |
|---|---|---|
| Trivy 二进制文件 | v0.69.2 – v0.69.3 | 立即升级 |
| trivy-action | v0.35.0 | 验证引用 |
| setup-trivy | v0.2.6 | 使用 SHA 引用 |
4.2 CI/CD 管道加固措施
🔄 将所有第三方操作固定到不可变引用
- 使用提交 SHA 而非版本标签:因为标签可能被攻击者强制修改
- 定期审计工作流:检查基于标签的引用,用已验证的 SHA 替换
🔒 通过策略控制限制操作使用
- 使用组织级策略:仅允许已批准的操作
- 默认阻止未验证的外部操作
4.3 最小权限与强身份控制
🔑 最小化令牌和权限范围
- 配置 GITHUB_TOKEN:使用最小必需权限
- 避免授予写入权限:除非绝对必要
🛡️ 保护管道中的机密和敏感数据
- 消除隐式机密暴露:避免在不需要时将机密注入环境变量
- 存储在专用机密管理器中:及时检索(just-in-time)
- 禁用运行器上的凭证持久化:确保凭证不持久化到磁盘或跨作业重用
- 使用临时运行器或清洁环境:防止跨作业机密泄漏
五、高级狩猎查询(Microsoft Defender)
5.1 恶意命令识别
CloudProcessEvents
| where ProcessCommandLine has_any (
'scan.aquasecurtiy.org',
'45.148.10.212',
'plug-tab-protective-relay.trycloudflare.com',
'tdtqy-oyaaa-aaaae-af2dq-cai.raw.icp0.io',
'checkmarx.zone',
'/tmp/runner_collected_',
'tpcp.tar.gz'
)
or (ParentProcessName == 'entrypoint.sh' and ProcessCommandLine has 'grep -qiE (env|ssh)')
5.2 Kubernetes 机密枚举检测
DeviceProcessEvents
| where FileName == "bash"
| where ProcessCommandLine has_all (
"kubectl get secrets",
"--all-namespaces",
"-o json",
"|| true"
)
5.3 通过 curl 进行数据外传
DeviceProcessEvents
| where FileName == "curl"
| where InitiatingProcessCommandLine contains "trivy-action"
| where ProcessCommandLine contains "POST"
| where ProcessCommandLine contains "--data-binary"
⚠️ 关键安全建议
- 立即升级:所有使用 Trivy 的组织必须在 24 小时内升级到安全版本
- 凭证轮换:立即轮换所有暴露的云凭证、API 密钥和数据库密码
- 监控增强:在接下来 72 小时内加强对 CI/CD 管道的监控
- 安全意识:立即通知开发团队此次攻击,强调供应链安全的重要性
研究团队:Microsoft Defender 安全研究团队
攻击归因:TeamPCP(追踪代码)
影响评估:全球性高级供应链攻击,数千组织受影响
防御优先级:P0(最高)
采集机构:乾崑谷研究分舵 | 分析师:黄药师 | 风险等级:严重
安全无小事,点滴记心间!
本文是 翻译 文章,文章来源:Microsoft Security
原文链接:https://www.microsoft.com/security/blog/2026/03/trivy-supply-chain-attack/
本文观点仅供参考,具体内容表达以及含义原文为准。