clash 节点最新
Kubernetes是开源历史上最受欢迎的容器编排系统,也是发展最快的项目之一,已成为许多公司计算堆栈中的重要组成部分。根据权威调查报告显示,77%受访者表示组织正在使用K8S集群,83.3%使用Docker的受访者也使用K8S。
容器的灵活性和可扩展性鼓励许多开发人员将工作负载转移到Kubernetes。尽管Kubernetes具有许多优势,但它也带来了新的安全挑战clash 节点最新。因此了解容器化环境(尤其是Kubernetes)中存在的各种安全风险至关重要。
要了解如何保护Kubernetes环境,就要了解其相关的攻击面。从Windows和Linux开始,MITRE ATT&CK中那些战术和技术知识库,帮助企业更加深入去了解其环境中的攻击状况,并确保他们对各种风险有足够的检测和缓解措施。
针对Kubernetes的安全攻防,虽然攻击技术与针对Linux或Windows的攻击技术不同,但战术实际上是相似的,我们基于目前在ATT&CK领域的研究,创建一个类似ATT&CK的矩阵Kubernetes攻击矩阵(如图1所示),将它们作为一个框架,描述跨越Kubernetes基础设施和应用的关键攻击战术和技术。
初始访问战术包括所有用于获得资源访问权限的攻击技术。在容器化环境中,这些技术可以实现对集群的初始访问。这种访问可以直接通过集群管理工具来实现,也可以通过获得对部署在集群上的恶意软件或脆弱资源的访问来实现。
用户将项目代码上传到Github等第三方代码托管平台,或者个人办公PC被黑等都可能导致云账号访问凭证发生泄漏,如果泄漏的凭证被恶意利用,可能会导致用户上层的资源(如ECS)被攻击者控制,进而导致K8S集群被接管。
在集群中运行一个不安全的镜像可能会破坏整个集群的安全。进入私有镜像仓库的攻击者可以在镜像仓库中植入不安全的镜像。而这些不安全的镜像极有可能被用户拉取出来运行。此外,用户也可能经常使用公有仓库(如Docker Hub)中不受信任的恶意镜像。基于不受信任的根镜像来构建新镜像也会导致类似的结果。
kubeconfig文件中包含了关于Kubernetes集群的详细信息,包括集群的位置和相关凭证。如果集群以云服务的形式托管(如AKS或GKE),该文件会通过云命令下载到客户端。如果攻击者获得该文件的访问权,那么他们就可以通过被攻击的客户端来访问集群。
在集群中运行一个面向互联网的易受攻击的应用程序,攻击者就可以据此实现对集群的初始访问。例如那些运行有RCE漏洞的应用程序的容器就很有可能被利用。如果服务账户被挂载到容器(Kubernetes中的默认行为)上,攻击者就能够使用这个服务账户凭证向API服务器发送请求。
拥有权限的攻击者可以使用exec命令(kubectl exec)在集群的容器中运行恶意命令。在这种方法中,攻击者可以使用合法的镜像,如操作系统镜像(如Ubuntu)作为后门容器,并通过使用kubectl exec远程运行其恶意代码。
攻击者可能试图通过部署一个新的容器在集群中运行他们的代码。如果攻击者有权限在集群中部署pod或controller(如DaemonSet / ReplicaSet / Deployment),就可以创建一个新的资源来运行其代码。
在集群中部署的应用程序,如果存在远程代码执行漏洞,攻击者就可以在集群中运行代码。如果服务账户被挂载到容器中(Kubernetes中的默认行为),攻击者将能够使用该服务账户凭证向API服务器发送请求。
运行在容器内的SSH服务可能被攻击者利用。如果攻击者通过暴力破解或者其他方法(如钓鱼)获得了容器的有效凭证,他们就可以通过SSH获得对容器的远程访问。
攻击者在集群的容器中运行他们的恶意代码。通过使用Kubernetes控制器,如DaemonSets或Deployments,攻击者可以确保在集群中的一个或所有节点上运行确定数量的容器。
用docker--privileged可以启动docker的特权模式,这种模式允许我们以其宿主机具有(几乎)所有能力来运行容器,包括一些内核特性和设备访问,这种模式下运行容器会让docker拥有宿主机的访问权限,并带有一些不确定的安全风险。
如果容器内运行的Web服务存在一些远程命令执行(RCE)漏洞或文件上传漏洞,攻击者可能利用该类漏洞写入WebShell,由于主机环境和容器环境的差异性,一些主机上的安全软件可能无法查杀此类WebShell ,所以攻击者也会利用此类方法进行权限维持。
权限提升战术包括攻击者用来在环境中获得比他们目前拥有的更高权限的技术。在容器化环境中,这可能包括从容器中获得对节点的访问,在集群中获得更高权限,甚至获得对云资源的访问。
特权容器是一个拥有主机所有能力的容器,它解除了普通容器的所有限制。实际上,这意味着特权容器几乎可以做主机上可操作的所有行为。攻击者如果获得了对特权容器的访问权,或者拥有创建新的特权容器的权限(例如,通过使用被攻击的pod的服务账户),就可以获得对主机资源的访问权。
基于角色的访问控制(RBAC)是Kubernetes的一个关键安全功能。RBAC可以限制集群中各种身份操作的权限。Cluster-admin是Kubernetes中一个内置的高权限角色。如果攻击者有权限在集群中创建绑定权限,那么就可以创建一个绑定到集群管理员ClusterRole或其他高权限的角色。
如果Kubernetes集群部署在云中,在某些情况下,攻击者可以利用他们对单个容器的访问,获得对集群外其他云资源的访问。例如,在AKS中,每个节点都包含服务凭证,存储在/etc/kubernetes/azure.json中。AKS使用这个服务主体来创建和管理集群运行所需的Azure资源。
默认情况下,该服务委托人在集群的资源组中有贡献者的权限。若攻击者获得了该服务委托人的文件访问权(例如通过hostPath挂载),就可以使用其凭证来访问或修改云资源。
Kubernetes日志,记录集群中资源的状态变化和故障。事件包括容器的创建、镜像的拉取、或一个节点上的pod调度。Kubernetes日志对于识别集群中发生的变化非常有用。因此,攻击者可能想删除这些事件(例如,通过使用kubectl delete events-all),以免检测到他们在集群中的活动。
由控制器(如Deployment或DaemonSet)创建的Pod在其名称中具有随机后缀。攻击者可以利用这一事实,将他们的后门pods命名为由现有控制器创建的pod的名称。例如,攻击者可以创建一个名为coredns-{随机后缀}的恶意pod,看起来与CoreDNS部署有关。另外,攻击者可以在管理容器所在的kube-system命名空间中部署他们的容器。
K8S API Server会记录请求IP,攻击者可以使用代理服务器来隐藏他们源IP。具体来说,攻击者经常使用匿名网络(如TOR)进行活动。这可用于与应用程序本身或与API服务器进行通信。
凭证访问战术包括攻击者用来窃取凭证的一系列技术。在容器化环境中,这包括运行中的应用程序的凭证、身份、存储在集群中的秘钥或云凭证。
Kubernetes secret也是K8S中的一个资源对象,主要用于保存轻量的敏感信息,比如数据库用户名和密码,令牌,认证密钥等。Secret可以通过pod配置进行使用。有权限从API服务器中检索Secret的攻击者(例如,通过使用pod服务账户)就访问Secret中的敏感信息,其中可能包括各种服务的凭证。
当集群部署在云中时,在某些情况下,攻击者可以利用他们对集群中的容器的访问来获得云的凭证。例如,在AKS中,每个节点都包含服务凭证。
开发人员在Kubernetes配置文件中存储敏感信息,例如pod配置中的环境变量。攻击者如果能够通过查询API服务器或访问开发者终端上的这些文件来访问这些配置,就可以窃取存储的敏感并加以利用,例如数据库,消息队列的账号密码等。
发现战术是攻击者用来探索他们获得环境访问权限的技术。这种探索有助于攻击者进行横向移动并获得对额外资源的访问权限。
Kubernetes API是进入集群的网关。集群中的行动是通过向RESTful API发送各种请求来执行的。集群的状态,包括部署在其上的所有组件,可以由API服务器检索。攻击者可以发送API请求来探测集群,并获得关于集群中的容器、秘密和其他资源的信息。
Kubelet是安装在每个节点上的Kubernetes代理。Kubelet负责正确执行分配给该节点的pod。如果Kubelet暴露了一个不需要认证的只读API服务(TCP端口10255),攻击者获得主机的网络访问权(例如,通过在被攻击的容器上运行代码)后就可以向Kubelet API发送API请求。具体来说,查询可以检索节点上正在运行的pod。可以检索节点本身的信息,例如CPU和内存消耗。
攻击者可以在cluster中发起内网扫描来发现不同pod所承载的服务,并通过其漏洞进行后续渗透。
Kubernetes dashboard是一个基于Web的用户界面,用于监控和管理Kubernetes集群。通过仪表盘,用户可以使用其服务账户(kubernetes-dashboard)在集群中执行操作,其权限由该服务账户绑定或集群绑定决定。攻击者如果获得了对集群中容器的访问权,就可以使用其网络访问仪表盘的pod。因此,攻击者可以使用仪表盘的身份检索集群中各种资源的信息。
云提供商提供实例元数据服务,用于检索虚拟机的信息,如网络配置、磁盘和SSH公钥。该服务可通过一个不可路由的IP地址被虚拟机访问,该地址只能从虚拟机内部访问。攻击者获得容器访问权后,就可以查询元数据API服务,从而获得底层节点的信息。
横向移动战术包括攻击者用来在受害者的环境中移动的技术。在容器化环境中,这包括从对一个容器的特定访问中获得对集群中各种资源的访问权限,从容器中获得对底层节点的访问权限,或获得对云环境的访问权限。
攻击者获得对集群中容器的访问权后,就可能会使用挂载的服务账户令牌向API服务器发送请求,并获得对集群中其他资源的访问权限。
默认状态之下,通过Kubernetes可以实现集群中pod之间的网络连接。攻击者获得对单个容器的访问权后,就可能会利用它来实现集群中另一个容器的网络访问权限。
Helm是一个流行的Kubernetes软件包管理器,由CNCF维护。Tiller在集群中暴露了内部gRPC端点,监听端口为44134。默认情况下,这个端点不需要认证。攻击者可以在任何可以访问Tiller服务的容器上运行代码,并使用Tiller的服务账户在集群中执行操作,而该账户通常具有较高的权限。
攻击者可能会滥用失陷的资源来运行任务。一个常见情况是攻击者使用失陷的资源来进行数字货币挖掘。攻击者如果能够访问集群中的容器或有权限创建新的容器,就可能利用失陷的资源来进行这种活动。
攻击者可能试图进行拒绝服务攻击,让合法用户无法使用服务。在容器集群中,这包括损害容器本身、底层节点或API服务器的可用性。
了解容器化环境的攻击面是为这些环境建立安全解决方案的第一步。上面介绍的矩阵可以帮助企业确定其防御系统在应对针对Kubernetes的不同威胁方面存在的差距。
此外,为了确保应用的安全,系统管理员还应该按照该指南谨慎行事,及时打补丁、进行更新和升级,降低风险。NSA和CISA还建议定期对K8S设置进行审查并进行漏洞扫描,确保考虑到了所有相关风险并及时应用了安全补丁。
青藤云幕NPatch发布,超强人气吸引3万+人在线日,以“漏洞无效·安全有道”为主题的青藤云幕·漏洞无效化新产品发布会成功举办
数智化时代,安全防护面临新的变化,遇到了新的挑战。不仅有流动的数据带来的防护挑战,还有人工智能大爆发给企业带来的生产挑战。
本文将通过一些关键策略和最佳实践,介绍亚马逊云科技在保持创新文化的同时,如何实现安全与合规的规模化。
腾讯安全一直以来积极参与网络安全标准的制定,将腾讯安全的经验、方法分享给行业。自2016年开始,腾讯云积极参与国家在云计算安全方面的标准建设,包括不限于关键信息基础
在企业数字化转型的浪潮下,丰富的数字资产为企业带来了巨大的机遇。然而,随之而来的是风险暴露面的扩大和安全盲点的增多,企业必须采取有效的措施来应对不断进化的威胁。