微软 Azure Kubernetes 服务中最近修复的一个漏洞凸显了加强云中 Kubernetes 集群抵御网络攻击的难度和重要性。
Azure Kubernetes 服务 (AKS) 中的一个安全漏洞,它允许黑客利用该漏洞获取 Kubernetes 集群中使用的一系列服务的凭据,从而使他们能够访问和窃取敏感信息并提升权限以运行其他恶意操作。
研究人员说,攻击者可以在受影响的 Azure Kubernetes Services 集群中运行的 pod 中执行命令,下载用于配置集群节点的配置,提取传输层安全性 (TLS) 引导令牌,并执行 TLS 引导攻击以读取集群内的所有机密。这种攻击不需要将 pod 运行并将 hostNetwork 设置为 true,也不需要 pod 以 root 身份运行。利用此问题的攻击者可以获取敏感信息,从而导致数据盗窃、财务损失、声誉损害和其他影响。
未记录的组件
这个漏洞影响了在网络配置设置中使用 Azure CNI 和 Azure 网络策略的 AKS 群集。研究人员说,该漏洞源于 Azure 中一个名为 Azure WireServer 的未记录组件,该平台出于多种原因在内部使用该组件。
他们遵循了 CyberCX 提出的一种攻击技术,并能够从 WireServer 恢复集群的 TLS 书带令牌,获得对 WireServer 和 HostGAPlugin 端点的访问权限后,攻击者可以检索和解密提供给多个扩展的设置,包括“自定义脚本扩展”,这是一项用于为虚拟机提供初始配置的服务。
研究人员已向微软披露了此安全漏洞,微软目前已修复该漏洞,发现该漏洞进一步证明保护 TLS 证书变得越来越重要。
这类漏洞让黑客受益匪浅,他们越来越多地将目标对准开发人员管道和底层云基础设施,尤其令人担忧的是,攻击者现在正在使用恶意软件搜索 Kubernetes 集群以获取机器身份,例如 TLS 证书。
复杂云环境中的风险
企业需要发现、可观察性和自动化功能,以便“在复杂的多云和多集群云原生环境中”保护 Kubernetes 集群。
如此复杂的云环境可能会带来意想不到的安全风险,并补充说这不仅仅是一个简单的配置错误。
这是一种复杂的攻击,利用未记录的 Azure 组件在 Kubernetes 集群中获得提升的权限。特别令人担忧的是,攻击者不需要 root 访问权限或特殊网络权限即可利用它。他们只需要破坏集群中的一个 pod。从那里,他们可能可以访问整个集群的敏感信息,包括各种服务的凭据。
这就像是,仅仅因为他们设法潜入庭院,就把王国的钥匙交给了他们。
强化 Kubernetes
强制内部服务身份验证、应用细粒度网络策略以及使用 pod 安全限制不安全的工作负载,现在已成为防止可能危及整个集群的后利用活动的必要条件。这些限制攻击面的安全配置有助于防止已知和未知攻击。
Kubernetes 集群的部署往往没有考虑到攻击者可能拥有 Pod 的代码执行权限。这种情况可能通过多种方式发生,例如通过工作负载中的现有漏洞、持续集成构建作业或受感染的开发者帐户。在这种情况下,一旦漏洞被利用,网络警察就是防止恶意活动的关键。
研究人员说,如果没有网络策略,你应该假设一个被入侵的 pod 可以访问集群中任何其他 pod 可以访问的任何网络资源。这可能包括另一个 pod 的本地 Redis 缓存、在云提供商中运行的托管数据库,甚至你的本地网络。当这些服务需要身份验证并且配置正确时,这是一个相对低风险的配置——攻击者需要利用其中一个服务中的漏洞。
引导信任
Kubernetes 安全专家多年来一直知道在 Kubernetes 节点中建立信任非常困难。在 Kubernetes 上运行的 Kubelet 不需要由控制平面证书颁发机构签名的 TLS 证书才能安全运行,但“在一个不断创建和销毁节点(或虚拟机 [VM])的大型分布式系统中,应该如何将该证书配置到 VM 上?”
可以通过使用跨云提供商的元数据服务器向已配置的虚拟机提供静态令牌来实现这一点,以证明虚拟机应该是集群的一部分,从而颁发 kubelet 证书。但是,此类元数据服务可供网络访问,如果攻击者拥有网络访问权限,则可能导致令牌被盗。有了这些令牌,不法分子可以为自己的系统创建 kubelet 证书,并使用这些凭据攻击控制平面、窃取机密并破坏其恶意节点上调度的工作负载。
虽然通过拒绝应用程序访问元数据服务器来保护这些令牌会有所帮助,但托管的 Kubernetes 行业已经超越了简单的令牌配置,成为识别虚拟机以做出关键安全决策的手段。
以 Google Kubernetes Engine (GKE) 为例,指出它使用信任引导过程,该过程由加密可验证的虚拟可信平台模块 (vTPM) 支持,该模块是屏蔽节点的一部分,自 2021 年起,已为新建的 GKE 集群默认启用该节点。
GKE 屏蔽节点消除了引导令牌被盗的风险,而不是将其隐藏起来。”“虚拟机不再依赖静态令牌来验证和授权新的 kubelet 证书请求,而是向虚拟机的 vTPM 请求证明,然后在颁发 kubelet 证书之前由控制平面进行验证。