K8S安全风险及防护建议

Kubernetes(K8S)是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,方便进行声明式配置和自动化。一个Kubernetes集群通常包含跨多台计算机运行的控制平面和多个工作节点(node),控制平面用于管理集群中的node,node用于运行工作负载。

Kubernetes架构图

自从2014年首次发布以来,Kubernetes受到了越来越多的关注和广泛的应用。目前,它已成为云原生应用程序开发和部署的标准之一,被许多大型企业和组织广泛采用,如谷歌、微软、亚马逊、IBM、阿里巴巴、腾讯等。根据CNCF的调查显示,截至2021年11月,全球有超过90%的企业和组织正在使用Kubernetes进行容器编排和管理。

一、针对Kubernetes的攻击愈演愈烈

近年来,针对K8S的攻击事件逐渐增加,成为了安全领域的一个重要话题。根据一些安全厂商和研究机构的报告,K8S的攻击事件占比情况如下:

Trend Micro发布的《2021年1-6月全球云安全报告》显示,2021年上半年,云容器和Kubernetes攻击的比例达到了43%。攻击者的目的是获取敏感信息、窃取凭据、传播恶意软件等。

Aqua Security发布的《2020年云原生安全报告》中指出,针对Kubernetes的攻击事件在2020年增长了26%。其中,最常见的攻击包括未经身份验证的访问、挖矿、拒绝服务、数据泄露等。

CNCF(Cloud Native Computing Foundation)发布的《2021年技术调查报告》中指出,65%的受访者认为容器和Kubernetes面临的安全风险是他们使用云原生技术时最大的担忧之一。另外,55%的受访者认为Kubernetes容易受到攻击。

综合来看,K8S的攻击案例验证了未来的主流攻击趋势,那就是‍集权设施将会成为未来攻击者的主要攻击对象。集权安全值得企业安全负责人们重点关注。

二、常见的Kubernetes威胁来源

在针对K8S的攻击日益激烈的情况下,攻击来源也表现出了多样化,根据调研目前它正面临着来自供应链、恶意攻击者、内部成员的攻击以及黑客组织等的威胁。

1、供应链风险

供应链包含构成最终产品的任何元素,从组件到用于管理集群的第三方服务或软件,这些风险有很多来源,而且通常很难解决。

在 2019 年,Harbor作为一个Kubernetes基础架构下的开源仓库,其曾遭受到了供应链攻击。攻击者通过Harbor的供应链漏洞,注入恶意Docker镜像,这些镜像被部署在Kubernetes集群中,最终导致Kubernetes集群的安全受到威胁。

2、恶意攻击者

恶意攻击者可以利用Kubernetes架构组件中的漏洞和错误配置,例如控制平面、工作节点或容器化应用程序。

2018年,黑客入侵了Tesla公司的Kubernetes集群,并利用集群中的计算资源进行加密货币挖掘。这次攻击的原因是由于Tesla在使用Kubernetes时未采取适当的安全措施。

3、内部威胁

内部威胁可以是管理员、用户,甚至是云服务提供商。对组织的Kubernetes基础设施具有特殊访问权限的内部人员可能会滥用这些特权。

2019年,加拿大的电商平台Shopify遭受了内部员工的K8S攻击。该员工修改了K8S配置文件,使得攻击者能够在Shopify的K8S集群中创建新的管理用户,并窃取用户数据。

三、Kubernetes攻击面

K8S作为一种开源的容器编排平台,已经成为了云原生应用开发和部署的重要基础设施之一。但同时,K8S也因其高度复杂的架构和众多组件,成为了攻击者攻击的目标之一。那么,攻击者采用何种方式攻击K8S?

以下是微软官方在2021年给出的K8S威胁矩阵图,详细地呈现了攻击者在每个阶段使用的技术,从左到右通过执行每个阶段的攻击方式也呈现了成果扩大的过程。

随着攻击技术的发展,每个攻击阶段的攻击技术也更加丰富。接下来对K8S攻击过程中的一些重要攻击阶段进行详细介绍。

初始访问(Initial Access)

初始访问是指攻击者在进入系统前获得的第一步访问权限。在Kubernetes中,攻击者可以通过多种方式进行初始访问。其中,一种常见的方式是通过针对公网暴露的Kubernetes API Server进行攻击。

另外攻击者还常用容器内漏洞入侵、kubeconfig file泄露、etcd未授权访问、恶意镜像等方式,进行前期的信息收集工作,以获得初始权限。

命令执行(Execution)

在Kubernetes中,命令执行通常是指攻击者通过各种手段在容器或节点上执行任意命令。比如攻击者可通过容器中运行的SSH服务执行命令,如果攻击者通过暴力破解或者其他方法获得了容器的有效凭证,他们就可以通过SSH获得对容器的远程访问。

另外,如果容器自身存在漏洞,那么攻击者也会通过漏洞执行命令。命令执行方式多种多样,常见的执行命令的攻击还有创建后门Pod、利用API Server执行命令、通过Sidecar注入执行命令、通过curl执行容器命令等。

权限维持(Persistence)

在Kubernetes中,攻击者利用权限维持来获取对系统的长期控制。例如,攻击者可以通过向容器镜像中添加恶意代码来创建一个具有相同标签的deployment或ReplicaSet。这样,当新的Pod创建时,它将自动更新为攻击者的容器镜像。攻击者可以在该容器中添加后门或其他恶意代码,以确保他们在以后的访问中能够维持其权限。

针对权限维持的其它利用方式包括挂载主机路径、K8s cronjob、Shadow API Server等,这些攻击方式常常被攻击者使用。

权限提升(Privilege Escalation)

Kubernetes中的权限提升攻击是指攻击者通过各种手段提升其在集群中的权限。一旦攻击者成功地提升了其权限,就可以对整个集群进行更多的攻击,比如访问其他资源、执行恶意代码等。例如,攻击者可以创建一个特权容器,该容器可以访问宿主机上的资源,并在该容器内执行命令,从而使其获得更高的权限。

另外,挂载根目录逃逸、容器内访问Docker.sock逃逸、docker漏洞逃逸、篡改ServiceAccount等方式也被经常使用。

横向移动(Lateral Movement)

横向移动是指攻击者利用已经获得的某个系统或账户的权限,在整个网络中移动并寻找其他系统或账户,以便进一步扩大攻击面和获取更高的权限。在Kubernetes中,攻击者可以利用各种漏洞和配置错误来获取对一个或多个节点的访问权限,然后通过控制这些节点来进行横向移动。

例如,攻击者可以通过利用kubelet的漏洞或未经授权的凭据访问节点,并在这些节点上启动恶意容器或修改已有容器的配置。一旦攻击者获得了节点的访问权限,他们可以扫描网络并寻找其他容器或节点,以便进一步扩大攻击范围。其它的横向攻击方式有通过容器逃逸进行横向、Cluster内网渗透、窃取凭证攻击云服务等。

总的来说,攻击者可以通过利用K8S集群内各组件的漏洞或者未经适当保护的访问权限来进一步深入攻击,这可能会导致敏感数据泄露、服务中断、系统崩溃等严重后果。

四、ITDR保护K8S集群

针对K8S的攻击日益激烈,如何避免K8S不被攻击值得大家思考,保护K8S中的敏感数据意义重大。为了保护您的K8S集群,可采用中安网星的ITDR平台进行全方位的保护。

ITDR(身份威胁检测与响应)平台是中安网星推出的针对身份威胁检测与响应高级威胁分析平台。主要围绕Identity及Infrastructure为核心进行防护,涵盖主流身份基础设施及集权设施,围绕从攻击的事前加固、事中监测,事后阻断出发,产品的设计思路覆盖攻击者活动的全生命周期。

事前,利用ITDR内置引擎对K8S集群中的不合理配置项、K8S相关的历史漏洞进行主动发现,在遭受恶意攻击之前,提前加固K8S集群,不给攻击者以可乘之机。

事中,通过融合图计算、身份欺骗等技术,对K8S进行全方位的监测,及时发现针对K8S的漏洞利用、身份窃取等风险,在遭受攻击的第一时间及时发现攻击者,对攻击行为进行阻断。结合威胁狩猎思想,将身份蜜罐技术应用于ITDR平台中,为反制攻击者提供保证。

事后,对攻击事件进行取证调查,禁用不合理的用户,清理危险的凭据,根据基线事件对K8S进行加固。

All in one:中安网星ITDR平台能力持续演进与突破