在 Amazon EKS 环境中,如果容器权限配置过高,攻击者可利用网络抓包或者API欺骗窃取 AWS 凭证。
Amazon EKS:亚马逊云服务(AWS)提供的一项托管 Kubernetes 服务,让用户更轻松地在 AWS 云上或本地部署、管理和扩展 Kubernetes 应用。
一、AWS 在每个 EKS 工作节点上运行名为 eks-pod-identity-agent 的代理进程。
二、这个代理服务监听一个固定的、仅在节点内部可访问的链路本地地址(169.254.170.23:80)。
前提条件:攻击者控制的容器具有 hostNetwork: true 的权限。
(相当于当前容器直接使用宿主机的网络栈,而不是独立分配一个独立的虚拟网络)
当同一节点上的其他 Pod 向 Pod Identity 请求凭证时,由于通信使用明文 HTTP,攻击者可通过抓包截获所有请求和响应,从中直接获取临时的 AWS 访问密钥:
1. 前提条件:部署高权限容器
攻击者需在 EKS 集群中运行一个具备以下权限的容器:
-
hostNetwork:true (容器共享宿主机网络命名空间)
-
CAP_NET_ADMIM (允许修改网络接口和路由,是攻击的关键权限)
2. 禁用合法代理服务
利用 CAP_NET_ADMIN,攻击者在容器内删除宿主机接口上的 169.254.170.23 IP,导致原有的 eks-pod-identity-agent 无法服务。
3. 冒充代理服务
攻击者随后:
-
启动 HTTP 服务器监听 169.254.170.23:80;
-
将该 IP 地址重新绑定到宿主机网络接口;
-
成功替代原服务,实施 API 欺骗。
4. 拦截凭证请求
其他 Pod 请求该地址获取 AWS 凭证时,攻击者可拦截并窃取包含授权令牌的请求数据。
确保容器只被授予其运行所必需的最小权限集,杜绝任何不必要的特权,特别是那些能与宿主机(Node)交互的权限。
2. 严禁或严格限制 hostNetwork: true 的使用:
本文中的两种攻击都依赖于此配置。它打破了容器的网络隔离,是攻击者访问节点级网络流量和服务的关键入口。除非业务绝对必要,否则应禁止使用。
即便必须使用 hostNetwork,也应剥离所有非必需的内核能力。
- 移除 CAP_NET_RAW 可部分缓解数据包嗅探风险。
- 移除 CAP_NET_ADMIN 是防御本文所述 API 欺骗攻击的关键,因为它阻止了攻击者操纵宿主机的网络接口和IP地址。
不能仅依赖于初始配置的正确性,同时使用安全工具持续监控和实施安全策略,自动检测并阻止正在运行的容器中出现的权限过高或配置不当的行为。
原文始发于微信公众号(KeepHack1ng):AWS容器权限过高导致敏感凭证泄露
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论