Kubernetes(又名K8s)是Google开源的容器集群管理系统(谷歌内部:Borg),现在由Cloud Native Computing Foundation维护,旨在帮助提升Docker容器化工作负载、服务、应用程序的部署、扩展和管理的自动化程度和便捷性。
Kubernetes通过将应用程序容器组织到Pod、节点(物理机或虚拟机)和群集中来实现此目的,其中多个节点形成一个由主节点管理的群集,该主节点负责协调与群集相关的任务,例如扩展、调度或更新应用程序。
近日Kubernetes曝出一个“先天性”中间人攻击漏洞,Kubernetes产品安全委员会已经发布了一个有关如何暂时阻止攻击者利用漏洞的建议,该漏洞可能使攻击者能够在中间人(MiTM)攻击中拦截来自多租户Kubernetes集群中其他Pod的流量。
受影响的服务未广泛部署
曝光的漏洞严重性被评为“中等”,CVE编号为CVE-2020-8554,是一个影响所有Kubernetes版本的设计缺陷。
苹果公司负责Kubernetes安全的软件工程师Tim Allclair解释说:“如果潜在的攻击者已经可以在集群中创建或编辑服务和Pod,那么他们就可以拦截集群中其他Pod(或节点)的流量。”
“如果使用任意外部IP创建服务,则从群集内部到该外部IP的流量将被路由到该服务。”Allclair补充说。“这使攻击者有权使用外部IP创建服务,以拦截到任何目标IP的流量。”
幸运的是,由于外部IP服务未在多租户群集中广泛使用,并且不建议为租户用户授予LoadBalancer IP补丁服务/状态权限,因此该漏洞只会影响少数Kubernetes部署。
据Anevia公司的Etienne Champetier报告,利用该漏洞可以被攻击者远程利用,而无需用户参与,可以作为低复杂度攻击的一部分。
如何缓解CVE-2020-8554漏洞
由于Kubernetes开发团队尚未提供安全更新来解决此问题,建议管理员通过限制对易受攻击功能的访问来缓解CVE-2020-8554。
您可以使用准入webhook容器来限制外部IP使用,此处(https://github.com/kubernetes-sigs/externalip-webhook)提供了源代码和部署说明。
还可以使用此处(https://github.com/open-policy-agent/gatekeeper-library/tree/master/library/general/externalip)提供的模板,在Kubernetes的开放策略代理关守策略控制器的帮助下限制外部IP。
由于推荐的配置不容易受到攻击,因此未提供针对LoadBalancer IP的缓解措施,但是如果需要限制,则外部IP建议也适用于LoadBalancer IP。
要想检测尝试利用此漏洞的攻击,用户必须使用易受攻击的功能手动审核多租户群集中外部IP使用情况。
“外部IP服务并未得到广泛使用,因此我们建议手动审核任何外部IP使用情况。”Allclair说。“用户不应对服务状态进行修补,因为对于已通过用户身份验证的补丁服务状态请求的审核事件可能会令人怀疑。”