Kubernetes入侵威胁矩阵
发布时间:2021-08-19 18:44:41 所属栏目:云计算 来源:互联网
导读:云和容器技术的快速增长,容器编排系统成了发展最快的技术。尤其是谷歌Kubernetes项目成了容器编排事实上的业界标准。越来越多的企业和开发人员已经将自己的工作转移到了K8S上。尽管K8S具有很多优势,但是统一和集中化的管控也在安全方面带来了新的挑战。在
(2) 挂载服务principal
将群集部署在云中后,在某些情况下,攻击者可以利用对群集中容器的访问来获取云凭据。例如,在AKS中,每个节点都包含服务principal凭据。
(3) 访问容器服务帐户
服务帐户(SA)代表K8S中的应用程序身份。默认情况下,将SA安装到集群中每个已创建的Pod。使用SA,容器中的容器可以将请求发送到Kubernetes API服务器。可以访问Pod的攻击者可以访问SA令牌(/var/run/secrets/kubernetes.io/serviceaccount/token中),并根据SA权限在集群中执行操作。如果未启用RBAC,则SA在群集中具有无限权限。如果启用了RBAC,则其权限由与其关联的RoleBindingsClusterRoleBindings确定。
(4) 配置文件中的应用程序凭据
开发人员将机密存储在Kubernetes配置文件中,例如pod配置中的环境变量。此类行为在Azure安全中心监视的群集中很常见。有权通过查询API服务器或访问开发人员终端上的那些机密文件的攻击者可以窃取并使用存储的机密。
7. 发现
发现策略由攻击者用来探测可以访问的环境的技术组成。这些技术有助于攻击者进行横向移动并获得更多资源。
(1) 访问Kubernetes API服务器
Kubernetes API服务器是群集的网关。通过向RESTful API发送各种请求来执行集群中的操作。API服务器可以检索群集的状态,其中包括部署在群集上的所有组件。攻击者可能会发送API请求来探测集群,并获取有关集群中的容器,机密和其他资源的信息。
(2) 访问Kubelet API
Kubelet是安装在每个节点上的Kubernetes代理。Kubelet负责正确执行分配给该节点的Pod。Kubelet公开了不需要身份验证的只读API服务(TCP端口10255)。具有网络访问主机权限的攻击者(例如,通过攻陷容器上运行代码)可以请求访问Kubelet API。
通过访问[NODE IP]:10255/pods /检索节点上正在运行的Pod。
通过访问[NODE IP]:10255/spec/检索有关节点本身的信息,例如CPU和内存消耗。
(3) 内网映射
攻击者可能尝试对群集网络探测以获取有关正在运行的应用程序的信息,包括扫描已知漏洞。默认情况下,在Kubernetes中对pod通讯没有任何限制。因此,获得单个容器访问权限的攻击者可能会使用它来探测网络。
(4) 访问Kubernetes仪表板
Kubernetes仪表板是基于Web的UI,用于监视和管理Kubernetes集群。仪表板允许用户使用其服务帐户(kubernetes-dashboard)在群集中执行操作,该权限由该服务帐户的绑定或群集绑定确定。获得对群集中容器的访问权限的攻击者可以使用其对仪表板容器的网络访问权限。因此,攻击者可能会使用仪表板的身份来检索有关群集中各种资源的信息。
(5) 实例元数据API
云提供者提供了实例元数据服务,用于检索有关虚拟机的信息,例如网络配置,磁盘和SSH公钥。VPS通过不可路由的IP地址访问此服务,该IP地址只能从VPS内部访问。获得容器访问权限的攻击者可以查询元数据API服务,以获取有关基础节点的信息。例如,在AWS中,以下请求将检索实例的所有元数据信息:
IP/latest/meta-data/
8. 横向扩展
横向扩展移动策略包括攻击者用来目标环境中扩展的技术。在容器化环境中,这包括从对一个容器的给定访问中获得对群集中各种资源的访问权,从容器中对基础节点的访问权或对云环境的访问权。
(1) 访问云资源
攻击者可能会从攻陷的容器扩展到云环境。
(2) 容器服务账户
获得对群集中容器的访问权限的攻击者可以使用已安装的服务帐户令牌请求访问API服务器,并获得对群集中其他资源的访问权限。
(3) 集群内部网络
Kubernetes的网络行为允许群集中Pod之间的流量作为默认行为。获得单个容器访问权限的攻击者可能会将其用于群集中另一个容器的网络可达性。
(4) 配置文件中的应用程序凭据
开发人员将机密存储在Kubernetes配置文件中,例如,作为pod配置中的环境变量。使用这些凭据,攻击者可能会访问群集内部和外部的其他资源。
(5) 可写卷安装到主机上
攻击者可能试图从受感染的容器中获取对基础主机的访问。
(7) 访问Kubernetes仪表板
有权访问Kubernetes仪表板的攻击者可以管理仪表板资源,还可以使用仪表板的内置"exec"功能在集群中的各个容器上运行其代码。
(8) 访问Tiller端点
Helm是由CNCF维护的K8S集群中受欢迎的软件包管理器。Tiller是Helm V2之前的的服务器端组件。
Tiller公开群集中的内部gRPC端点,侦听端口44134。默认情况下该端点不需要身份验证。攻击者可以使用Tiller的服务帐户(通常具有较高的特权),在Tiller的服务可访问的任何容器上运行代码,并在群集中执行操作。
9. 影响力
影响力策略包括攻击者用来破坏,滥用或破坏环境正常行为的技术。
(1) 数据删除和加密
攻击者可能试图破坏群集中的数据和资源。这包括删除部署,配置,存储和计算资源。或者将所有资源进行加密,然后勒索。
(2) 资源劫持
攻击者可能会利用已攻陷的资源来运行任务。一种常见的滥用方式是用来挖矿。有权访问群集中的容器或有权创建新容器的攻击者可以将它们用于此类活动。
(3) 拒绝服务
攻击者可能会尝试执行拒绝服务攻击,这会使合法用户无法使用该服务。在容器集群中,这包括尝试阻止容器本身,基础节点或API服务器的可用性。
10. 总结
了解容器化环境的攻击面是为这些环境构建安全解决方案的第一步。上面介绍的矩阵可以帮助我们识别针对K8S的不同威胁的防御能力方面差距,补全安全威胁短板和瓶颈,提高集群的安全性。
![]() (编辑:宿州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |