我们一起看一看如何使用Falco来检测何时有人试图使用外部IP创建集群类型的服务事件。
source link: https://www.freebuf.com/vuls/258937.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
漏洞概述
漏洞CVE-2020-8554是一个能够影响多用户Kubernetes群集的漏洞,如果潜在的攻击者可以创建或编辑服务和Pod,那么他们就可以拦截来自集群中其他Pod或节点的流量了。
攻击者如果能够创建一个ClusterIP服务并设置.spec.externalIPs字段的话,他们就能够拦截全部到该IP的流量。除此之外,攻击者还可以修复LoadBalancer服务的状态,并通过设置status.loadBalancer.ingress.ip来实现类似的效果。通常来说,这种都属于特权操作,一般不会授予普通用户去进行操作访问。
这个漏洞属于Kubernetes设计缺陷,如果不对用户层面的运行机制进行修改的话,该漏洞将很难被修复或缓解。
安全按等级
中危
漏洞分析
Kubernetes (简称K8s)是是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了应用部署、规划、更新、维护的一种机制。K8s 最早是由谷歌开发的,目前由Cloud Native Computing Foundation 基金会维护。
研究人员在K8s 中发现一个影响所有K8s版本的设计漏洞,允许租户创建和更新服务的多租户集群成为最易受到攻击的目标。如果攻击者可以创建或编辑服务或pod,可能就可以拦截集群中来自其他pod的流量。如果用任意的外部IP 来创建一个服务,集群中到该IP 的流量就会被路由到该服务,这样有权限利用外部IP 来创建服务的攻击者就可以拦截到任意目标IP的流量。
CVE-2020-8554漏洞是中危漏洞,有创建和编辑服务和pod等基本租户权限的攻击者可以在没有任何用户交互的情况下远程利用该漏洞。
由于External IP (外部IP)服务并没有广泛应用于多租户集群中,而且授予租户LoadBalancer IP 的补丁服务/状态权限并不推荐,因此该漏洞只影响少量的Kubernetes 部署。
使用Falco检测CVE-2020-8554
检测针对该漏洞的漏洞利用尝试或攻击活动是防范此类网络攻击的关键,我们现在可以使用Falco来在主机和容器层面检测针对该漏洞的而已活动。Falco是CNCF的开源项目,可以用于容器和Kubernetes的运行时威胁检测。
Falco的好处之一是其功能强大而灵活的规则语言,当Falco发现由一组可定制的规则定义的异常行为时,它将为我们生成并报告安全事件。与此同时,Falco还提供了一些现成的检测规则可供我们使用。
接下来,我们一起看一看如何使用Falco来检测何时有人试图使用外部IP创建集群类型的服务事件。
如前文所述,漏洞CVE-2020-8554是由Kubernetes设计缺陷造成的。它允许具有创建/修复服务权限的用户将网络流量重定向到外部IP地址。大多数情况下,当一个只用于内部通信的服务被创建时,一个私有IP地址被分配给这个服务。
由于这是一个私有IP地址,那么Kubernetes集群中就没有人可以访问这种服务了。不过,用户还可以给这个服务配置并绑定一个外部IP地址。
实际上,这种操作行为是符合规范的。但是,恶意攻击者也可以利用该功能来执行中间人(MitM)攻击。
Falco规则:检测绑定外部IP地址的Kubernetes服务
如果你认为自己受到了漏洞CVE-2020-8554的影响,可以使用下列Falco规则来进行漏洞检测:
- macro: service_with_external_IP condition: (jevt.value[/requestObject/spec/externalIPs] exists and jevt.value[/requestObject/spec/externalIPs] != "<NA>") - rule: Create/Update ClusterIP Service with External IP desc: Detect an attempt to modify a ClusterIP type service with external IP assigned (CVE-2020-8554)" condition:kevt and service and kmodify and jevt.value[/responseObject/spec/type]=ClusterIP and service_with_external_IP output: ClusterIP type service created/updated with external IP assigned (user=%ka.user.name service=%ka.target.name ns=%ka.target.namespace operation=%ka.verb ports=%ka.req.service.ports external IP=%jevt.value[/requestObject/spec/externalIPs]) priority: WARNING source: k8s_audit
当有人使用外部IP地址创建或修改一个服务的话,Falco将会输出下列安全事件:
总结
请记住,漏洞CVE-2020-8554是一个由于设计缺陷而无法修复的漏洞,因此我们建议广大用户应该使用适当的安全工具来对Kubernetes集群进行安全监控。
Recommend
-
7
十年前,有这样一个问题:软硬件是否可以像生物大脑一样工作?如今,这个问题的回答是“可以”,但行业面临的挑战是,如何利用神经形态技术开发的历史、如何应对紧迫的、甚至是生死攸关的计算挑战?就这一话题,科技作者 William Van Winkl...
-
5
· 这是第 3729 篇原创首发文章 字数 5 k+ ·
-
3
我们的希望小学已投入使用!一起来看看吧!_哔哩哔哩_bilibili活动作品我们的希望小学已投入使用!一起来看看吧!518.0万播放 · 2.5万弹幕2021-06-09 10:00:19 全...
-
5
刮刮乐想必大家都玩过,小时候兜里一有钱,就喊上小伙伴兴冲冲的跑去家旁边的小卖部,用那稚嫩地小手递给老板那被捏的皱巴巴的五毛钱,满眼期待的刮着买来的刮刮乐,心里早已想好中了100块钱大钞要去买好多好多辣条、卡片、陀螺、奥迪双钻的悠悠...
-
4
蔚来错了吗?我们来看一看特斯拉 8月12日,31岁的企业家林文钦,在驾驶蔚来ES8汽车启用自动驾驶功能(NOP领航状态)时,发生交通事故不幸身亡,目前调查结果还没有出来。 四天之后的8月16日,美国国家最高汽车安全监管机构——美国公路交通安...
-
4
Kotlin协程的使用与封装 相信作为一个现代Android开发者,应该都用过或者听过协程了,还不少大佬都已经把协程给扒皮了,其本质就是线程...
-
3
新版Hilt在Android各种场景的详细使用手册 关于Hilt与Koin的性能对比,之前有过分析。Hilt可以在Java/Kotin的语言环境中使用,内存使用、启动时间、体积大小等都小有优势,但是...
-
5
作为设计师,在设计一款产品的过程中你是否会站在用户的角度关注到不同的细节?本文作者从五个部分分析了微交互的好处,希望能帮助到你的工作。
-
0
庆祝:此功能现已在所有三个主要浏览器引擎中可用!浏览器最近获得了一种新的可互操作方法,您可以在数组上调用它:Array.prototype.with() 。Browser Support 浏览器支持:chrome 110Edge 110firefox 115Safa...
-
5
什么是接口幂等性接口幂等性这一概念源于数学,原意是指一个操作如果连续执行多次所产生的结果与仅执行一次的效果相同,那么我们就称这个操作是幂等的。在互联网领域,特别是在Web服务、API设计和分布式系统中,接口幂等性具有非常重要的意义。具体...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK