AWS ECS漏洞ECScape:容器无需逃逸即可劫持IAM角色

研究人员发现AWS ECS存在权限提升漏洞ECScape,允许低权限容器通过未记录的WebSocket协议窃取其他任务的IAM凭证,无需容器逃逸即可实现横向权限提升,影响EC2后端任务。

ECScape:新型AWS ECS漏洞允许容器劫持IAM角色而无需逃逸

在Black Hat USA 2025上,Sweet Security的Naor Haziz披露了Amazon ECS中存在一个重大的权限提升漏洞,允许运行在EC2后端任务上的低权限容器从同一主机上的其他容器劫持更高权限的IAM角色。

该漏洞被命名为ECScape,源于ECS的内部凭证分发机制。ECS控制平面通过未记录的内部WebSocket协议——代理通信服务(ACS)——交付任务IAM凭证。如果容器攻击者首先从实例元数据服务(IMDS)获取EC2实例角色凭证,就可以窃听此协议。

“实际上,这意味着您ECS集群中受入侵的应用程序可以通过窃取凭证来承担更高权限任务的角色——只要它们在同一实例上运行,“Haziz在博客文章中说,并补充说该漏洞还会暴露任务执行角色,这些角色一旦被入侵,可能被滥用来提取秘密或工件。

从低权限任务到特权IAM角色

由于IMDS的默认可用性,基于EC2的ECS实例上的任何容器(具有低级访问权限)都可以读取为ECS代理准备的实例角色凭证。“不需要容器逃逸(无需主机root访问)——但需要通过容器自身命名空间内的巧妙网络和系统技巧来访问IMDS,“Haziz指出,并补充说访问IMDS允许任何容器冒充ECS代理。AWS提供了关于如何防止或限制访问IMDS的文档。

凭借这些实例角色凭证,攻击者可以伪造通过ACS WebSocket的通信。这使他们能够拦截或请求其他运行中任务的IAM凭证,即使这些任务本应通过IAM角色进行隔离。本质上,受入侵的容器通过伪装成负责管理和编排任务的编排器ECS代理来实现权限提升。

“被盗的密钥(IAM凭证)与真实任务的密钥完全一样工作,“Haziz说。“AWS CloudTrail会将API调用归因于受害者任务的角色,因此初始检测很困难——看起来像是受害者任务在执行操作。“这使得攻击者在日志中不可见,因为AWS认为受害者正在执行所有操作。

Fargate相对安全

Amazon的设计使EC2主机(而非容器)成为安全边界。当多个具有不同IAM角色的任务共享同一EC2时,通过ECScape进行横向权限提升的风险增加。AWS未立即回应CSO的置评请求。

Sweet Security建议的缓解措施包括:禁用或限制来自不太受信任任务的IMDS访问,使其无法获取实例凭证;避免在同一EC2实例上共同托管低权限和高权限任务;以及切换到AWS Fargate,后者提供更好的任务隔离。

“AWS Fargate任务不与其他任务共享底层主机——每个Fargate任务在其自己的微VM中运行,具有自己隔离的IMDS和ECS代理,“Haziz解释。“ECScape不适用于Fargate,因为没有实例的共租。”

漏洞详情与PoC

已为ECScape请求CVE ID,Sweet Security已在GitHub上发布了该漏洞的概念验证(PoC)代码。Haziz还分享了ECScape的现场演示,并补充说未缓解的实例不需要用户方面的错误配置。“ECS on EC2的所有默认行为和设置都足以使攻击生效,“他补充说。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计