G.O.S.S.I.P 阅读推荐 2023-11-03 接管整个集群:通过第三方应用冗余权限攻击Kubernetes

admin 2023年11月4日03:01:15评论22 views字数 4988阅读16分37秒阅读模式

今天要为大家推荐的论文是已被ACM CCS 2023接收的Take Over the Whole Cluster: Attacking Kubernetes via Excessive Permissions of Third-party Applications,由浙江大学申文博老师研究组与西安电子科技大学李金库老师研究组共同完成并投稿。

G.O.S.S.I.P 阅读推荐 2023-11-03 接管整个集群:通过第三方应用冗余权限攻击Kubernetes

引言

Kubernetes是一个用于自动化部署、扩展和管理容器化应用程序的容器编排系统。它被广泛应用于许多公司的工作负载管理,并被云供应商作为容器编排器使用。根据Cloud Native Computing Foundation(CNCF)的数据,89%的CNCF最终用户正在使用或评估Kubernetes,这使得它成为容器编排市场的主导者。根据Sysdig的报告,Kubernetes在容器编排器市场占据了75%的份额。因此,Kubernetes已成为容器编排的事实标准。Kubernetes集群通常由控制平面和数据平面组成。控制平面作为整个集群的中央控制器,将集群用户的工作负载部署到数据平面的工作节点上。控制平面包含Kubernetes的必要组件,包括kube-apiserver、kube-scheduler、etcd和controller-manager。此外,它还运行来自第三方的附加组件或应用程序。作者将运行在Kubernetes控制平面上的这些第三方附加组件和应用程序称为第三方应用。这些第三方应用用于扩展Kubernetes的控制功能,并被授予对集群管理的关键权限。因此,它们的安全性对整个集群至关重要。然而,第三方应用的安全性在过去没有得到系统研究。现有的Kubernetes安全研究主要集中在共存攻击、针对自动扩展的DDoS攻击和配置错误方面。因此,作者对第三方应用的安全性进行深入分析研究, 作者的研究观察到,许多第三方应用被授予了额外的关键权限,称为过度权限,攻击者可以利用这些过度权限在Kubernetes中进行多次攻击,称为过度权限攻击。例如,通过滥用过度权限,攻击者可以获取集群管理员的身份凭证,导致Kubernetes中的权限提升。更糟糕的是,作者的研究表明,不同第三方应用的过度权限可以链接在一起,将非关键问题转化为严重的攻击向量。本文的贡献如下:

新的攻击面Kubernetes集群中存在大量拥有过度权限的第三方应用,攻击者可以利用这些第三方应用的过度权限获取集群管理员权限,并瘫痪整个集群
攻击策略:根据第三方应用在Kubernetes集群中的不同存在形式,作者提出了三个攻击策略。分别使用了不同的过度权限利用路径,来对Kubernetes集群发起攻击。

真实的攻击案例:作者扫描了CNCF的153个项目,并发现其中51个都存在由过度权限导致的安全风险;另外,作者也分析了Google GKE、Amazon EKS、Azure AKS和阿里云ACK使用的第三方应用,在其中也发现了大量安全隐患。作者已经向相关项目报告了所有问题,并得到确认,作者已经得到了8个新的CVE和一笔漏洞赏金。

研究动机

在Kubernetes集群中,需要一些第三方应用来扩展集群的功能,这些第三方应用的正常运行可能需要集群中的一些权限。而通常情况下,大多只对正常功能部分考虑较多,而忽略可能带来的安全问题,因此在权限分配时,为了方便,经常会出现权限分配过大的问题,即:没有做更细致的权限控制,这就导致了这些过多的权限可能被利用,从而威胁整个Kubernetes集群。在进行攻击时,主要分为识别与利用两部分:识别存在过度权限并可利用的组件,利用组件账户对集群发起攻击。作者以由作者发现的、已经分配CVE号的一个真实攻击为例详细解释利用过度权限的攻击过程。

G.O.S.S.I.P 阅读推荐 2023-11-03 接管整个集群:通过第三方应用冗余权限攻击Kubernetes

图1 利用kubevirt组件发起攻击

Kubevirt应用有两个组件:virt-handler和virt-operator。其中virt-handler是一个DaemonSet(这意味着其在集群中的多个节点上都运行着Pod)其有一个名为kubevirt-handler的服务账户,该账户通过ClusterRoleBinding绑定了一个名为kubevirt-handler的ClusterRole,该ClusterRole描述了对nodes资源的patch权限。因此,只要攻击者控制了一个运行着该DaemonSet的工作节点,则可利用virt-handler的相关权限。并且,virit-operator组件拥有着对secrets资源的list权限。综上,如图1所示,攻击者对Kubernetes集群的攻击可以分为两步:第一步,先利用virt-handler对node的patch权限,让其余正常node节点排斥所有Pod(通过patch一个taint实现),在这之后,Pod将被迫运行在攻击者控制的node节点上,这其中当然也包括着virt-operator组件;第二步,由于virt-operator已经运行在攻击者所控节点中,因此可利用virt-operator对secrets资源的list权限,直接请求kube-apiserver,拿到集群管理员的秘密,从而实现权限提升,控制整个集群。

攻击策略上述示例仅描述了一种典型的攻击情况,接下来,将对集群中可能存在的攻击情况作一总结,得到三种不同的攻击策略,如图2所示。

G.O.S.S.I.P 阅读推荐 2023-11-03 接管整个集群:通过第三方应用冗余权限攻击Kubernetes

图2三种攻击策略

第一种攻击策略是直接利用第三方应用程序的关键DaemonSet组件窃取集群管理员权限。具体来说,攻击者控制的工作节点一般会具有多个第三方应用的DaemonSets Pod,如果其中一个DaemonSet组件具有上文提到的过度权限,比如对secrets的list、get权限,则攻击者可以直接利用此权限窃取Kubernetes集群管理员的权限,从而导致权限提升。第二种攻击策略是利用第三方应用的关键DaemonSet劫持该应用的另一个关键组件,然后利用该组件获取集群管理员的权限。第三种攻击策略则就是:当一个第三方应用的过度权限不足以发起攻击时,可考虑劫持另一个应用的关键组件,迫使该关键组件在攻击者控制的工作节点上运行,然后攻击者可将不同第三方应用的过度权限链接在一起,从而实现过度权限的组合攻击。

真实案例研究

作者将真实案例研究分为两种类型,一种是安装在本地的CNCF项目中的应用,一种是国内外四大云厂商中的应用。

CNCF应用分析作者通过对CNCF中应用的真实攻击案例进一步阐述作者攻击策略的实际应用。其中典型的应用如表1 所示:

G.O.S.S.I.P 阅读推荐 2023-11-03 接管整个集群:通过第三方应用冗余权限攻击Kubernetes

表1 存在过度权限的应用汇总

其中CubeFS和OpenKruise都是利用攻击策略1直接获取Kubernetes集群管理员的身份凭证,实现权限提升。而Kubevirt和Fluid都是利用攻击策略二,通过具有patch node权限的DaemonSet将能够list secret的随机运行在工作节点上的组件劫持过来,间接地获取管理员的身份凭证,实现权限提升。对于其余的四个应用都是利用攻击策略三来实现提权攻击,通过利用Fluid或者Kubevirt类似的应用中拥有patch node 权限的DaemonSet来将自身能够list secret的随机组件劫持过来,获取集群管理员权限。

云厂商应用分析 为了进一步了解业务环境中过度权限攻击的普遍性,作者对云环境下的应用做了攻击测试,真实的攻击案例如表2所示:

G.O.S.S.I.P 阅读推荐 2023-11-03 接管整个集群:通过第三方应用冗余权限攻击Kubernetes

表2 云环境中存在过度权限的应用汇总

作者选择谷歌的GKE、亚马逊的EKS、微软的AKS以及阿里云的ACK为测试环境,对于在集群部署过程中预安装的第三方应用做了系统地分析。在GKE中作者发现了三个存在过度权限的应用,分别是Calico Network Policy、Config Connector以及Anthos,都是通过利用攻击策略三来实现提权攻击。在EKS中作者发现了3个存在过度权限的应用,同样也是使用策略三实现提权,分别是Amazon VPC CNI、Terate Istio Distro和Upbound Universial Crossplane。作者在AKS中发现两个存在过度权限的应用,其中Secret store CSI driver利用策略一获取集群管理员权限,实现提权,而Azure Policy则利用策略三实现提权攻击。作者在ACK集群中发现了9个存在过度权限的应用,其中通过策略一来实现提权攻击的有两个,分别是Prometheus Monitoring和CSI Volume Plugin。利用策略三实现提权攻击的有7个,分别是Node-problem-detector、Flannel、Terway、Nginx Ingress、ALB Ingress、MSE Ingress以及CloudMonitor Agent。

安全披露对于51个存在过度权限的CNCF项目,作者通过适当的渠道向相关社区报告已确定的问题,最终作者获得了8个新的CVE。对于四家云平台中存在过度权限的应用,作者向他们的安全团队报告了作者的发现,他们都承认存在权限提升的潜在风险,此外,谷歌还为作者的发现提供悬赏1337.00美元。

缓解措施分析最后,本工作对于这一系列操作转发带来的攻击面,提出了一些对应的缓解措施。首先,第三方应用供应商应审查并删除相关ClusterRoles和服务帐户的不必要权限。也可以考虑使用更复杂的服务帐户。对于包含多个组件且需要不同权限的第三方应用,使用多个具有不同权限级别的服务帐户比使用单个具有过多权限的服务帐户更安全。还可以使用RoleBinding限制相关服务帐户仅访问特定命名空间内的资源,而非直接使用ClusterRoleBinding。另外,也需要使用准确的资源名称,做好细粒度划分,特别是对于secrets等关键资源。但是,所有的缓解措施都有一定的不足,特定的缓解措施还可能影响应用正常功能的运行,因此,从根本上解决第三方应用过度权限带来的攻击面仍然需要大量的工作。

总结

本文揭示了Kubernetes集群中第三方应用过度权限引发的新攻击面。这样的过度权限可以被利用来进行具有严重后果的攻击(例如,接管整个集群并导致特权升级),作者称之为过度权限攻击。为了系统地探索过度权限攻击的路径,本文根据过度权限的不同利用方式设计了三种策略,并通过对本地集群中CNCF项目的分析评估了其影响,发现有51个CNCF项目容易受到过度权限攻击。此外,作者分析了Google GKE、Amazon EKS、Azure AKS和阿里云ACK中第三方应用的过度权限,四家云供应商都在其Kubernetes集群使用的第三方应用中存在过度权限。作者向相关社区和云供应商报告了作者的所有发现,并且得到了八个CVE和一笔奖金。

论文获取可邮件联系申老师or李老师
申老师:shenwenbo AT zju.edu.cn

李老师:[email protected]

作者信息:杨男子,西安电子科技大学网安学院博士研究生,导师为李金库老师和申文博老师,研究方向为容器安全,在ACM CCS 2021, Usenix Security 2023和ACM CCS 2023上发表三篇一作(共同一作)论文。申文博(https://person.zju.edu.cn/shenwenbo),浙江大学 百人计划研究员,博士生导师。研究方向为操作系统安全,云原生系统安全,软件供应链安全。在计算机安全、系统、网络国际顶级会议、期刊发表论文40余篇,获得3项杰出论文奖 (NDSS 16, AsiaCCS 17, ACSAC 22)。李金库(https://faculty.xidian.edu.cn/Jinku/zh_CN/index.htm),西安电子科技大学网络与信息安全学院教授,博士生导师。在包括USENIX Security、ACM CCS、ACM EuroSys、IEEE TIFS、IEEE TDSC等国际顶级学术会议和期刊上发表学术论文50余篇;出版学术著作2部;获得省部级科技一等奖2项,二等奖3项;申请技术发明专利70余项,已授权专利45项,完成专利科技成果转化5项;获得计算机软件著作权3项。




原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2023-11-03 接管整个集群:通过第三方应用冗余权限攻击Kubernetes

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年11月4日03:01:15
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   G.O.S.S.I.P 阅读推荐 2023-11-03 接管整个集群:通过第三方应用冗余权限攻击Kuberneteshttp://cn-sec.com/archives/2175226.html

发表评论

匿名网友 填写信息