Microsoft显示,单个身份遭入侵后,可能在开发和云环境中转化为一条广泛的访问路径,即使不使用恶意软件或利用漏洞也能如此。在Cyberattack Series系列的最新报告中,Microsoft Detection and Response Team(DART)记录了Storm-3068从遭入侵账户转移至Azure DevOps、开发流水线和Kubernetes资源的过程。
入侵始于一次自助服务密码重置。获得用户账户访问权限后,攻击者登记了自己的身份验证方式,从而持续获得该身份的访问权。随后,攻击者使用合法的管理工具和自动化脚本,对Azure DevOps中的代码库、项目、流水线和部署环境进行清点。
从身份到部署路径
Azure DevOps是一个高价值节点,因为它连接了身份、软件开发和云运营。通过绘制部署路径及其关联资源的地图,Storm-3068确定了转移至环境其他部分的方法。
调查人员发现了一条恶意流水线,旨在大规模收集Kubernetes凭据。该流水线部署了一个Kubernetes代理,并执行多项任务来收集kubeconfig文件,其中包含集群连接详情和身份验证数据。由于遭入侵账户拥有相应权限,该流水线获准访问50多个资源,并向不同服务进行身份验证。
此外,攻击者还修改了流水线脚本,以安装远程管理代理Atera并下载隧道创建工具Chisel。攻击者使用Chisel命令创建了一个通往外部IP地址的反向隧道,从而可能实现与Kubernetes集群的远程交互。调查团队依据Azure DevOps审计日志和Git版本记录重建了攻击的下一阶段:七个被盗的kubeconfig文件被添加到一个代码库中。
该事件向防御者揭示了什么?
该事件的重要性在于,最初的入侵点本身不足以解释最终访问范围之大。风险源于身份系统、代码库、构建和部署流水线以及运营基础设施之间的关联。因此,即使分别保护每一层,如果被入侵账户的权限能够为通往后续层提供可信路径,也无法确保对该账户实施有效遏制。
DART通过分析身份系统、开发平台和云基础设施中的数据作出响应,并通过每日简报以及按优先级排列的遏制和修复指导与客户合作。DART还与Microsoft Threat Intelligence合作,将相关活动置于更广泛的背景中。
实用防御措施
- 监控密码重置活动,查找重复尝试或针对多个用户的模式。
- 减少高权限账户对自助重置路径的暴露,并强制使用具备抗网络钓鱼能力的多重身份验证。
- 要求对代码更改进行审批,并启用分支保护,以防止未经授权的修改。
- 限制直接提交到关键分支,并要求更改经过明确的审查和批准。
- 控制构建和部署流水线的权限,明确谁可以创建、修改或运行这些流水线。
- 对身份、开发平台和云资源应用最小权限原则,以降低单个账户遭入侵的影响。
为什么这条新闻很重要?
该事件表明,身份、Azure DevOps、Git和Kubernetes环境中的日志应被视为相互关联的安全全景,而不是彼此分离的数据源。来源所证实的未决问题则涉及:组织在多大程度上能够发现对合法工具的滥用,审查跨环境权限,并在凭据文件被用于访问生产环境之前阻止其泄露到代码库中。