K8s社区披露了编号为CVE-2020-8562的安全漏洞。攻击者可以通过某种方式绕过API Server对内网Proxy请求的IP限制,访问到集群内网中的ControlPlane管控组件,从而造成越权访问的问题。本文介绍该漏洞的影响和影响范围,以及防范措施。

CVE-2020-8562漏洞在CVSS的评分为2.2,威胁等级属于低级。

漏洞影响

由于安全原因,Kubernetes社区已经禁止了由用户触发的对Services,Pods,Nodes,StorageClass对象的内网Proxy访问权限。在这个禁止触发流程中,Kubernetes首先会对请求进行域名解析,并且校验Proxy请求的IP地址是否属于本地地址(169.254.0.0/16或127.0.0.1/8)的范围。然后再进行第二次域名解析,且不再进行IP地址的校验。如果一个非标准的DNS服务器不断返回不同的非缓存解析请求,攻击者可以利用竞争条件绕过代理IP地址限制,并成功访问内网ControlPlane管控组件。

攻击者能够成功绕过拦截的前提是拥有节点的创建或修改权限,并且能够以Proxy的方式访问节点。或者拥有对StorageClass对象的创建和修改权限,并且能够获取到kube-controller-manager的组件日志。

漏洞现象

从集群API Server审计日志中寻找关键字为address not allowed的日志,当有大量相关日志时,说明该集群可能受到该漏洞攻击。
说明 正常情况下集群API Server审计日志中不会有关键字为address not allowed的日志。

影响范围

以下枚举的Kubernetes集群版本所安装的kube-apiserver均存在该漏洞:

  • Kubernetes≤v1.21.0
  • Kubernetes≤v1.20.6
  • Kubernetes≤v1.19.10
  • Kubernetes≤v1.18.18

K8s社区尚未发布针对该漏洞的修复版本。

防范措施

遵循权限最小化原则,对节点和StorageClass对象的创建和修改权限严格限制。