近日Kubernetes官方披露了kube-apiserver组件的安全漏洞,攻击者可以通过截取某些发送至节点kubelet的升级请求,通过请求中原有的访问凭据转发请求至其他目标节点,从而造成节点的权限提升漏洞。本文介绍该漏洞的影响范围、漏洞影响和防范措施。

影响范围

从v1.6.0之后到下列修复版本的所有kube-apiserver组件均包含漏洞代码:
  • kube-apiserver v1.18.6
  • kube-apiserver v1.17.9
  • kube-apiserver v1.16.13
下列应用场景在此次漏洞的影响范围内:
  • 如果集群运行业务中存在多租户场景,且以节点作为不同租户间隔离的安全边界。
  • 不同集群间共享使用了相同的集群CA和认证凭据。

漏洞影响

  • 由于kube-apiserver中在升级请求的代理后端中允许将请求传播回源客户端,攻击者可以通过截取某些发送至节点kubelet的升级请求,通过请求中原有的访问凭据转发请求至其他目标节点,从而造成被攻击节点的权限提升漏洞。该漏洞为中危漏洞,CVSS评分为6.4
  • 如果有多个集群共享使用了相同的CA和认证凭证,攻击者可以利用此漏洞攻击其他集群,这种情况下该漏洞为高危漏洞。

防范措施

对于此次漏洞的跨集群攻击场景,ACK集群使用了独立签发的CA,同时不同集群间认证凭据完全隔离。

对于集群内跨节点的攻击,建议您采取以下安全防范措施:
  • 开启集群kube-apiserver审计日志,如果下列资源模型请求的请求响应码在300~399之间,则该集群可能已经被攻击:
    • pods/exec
    • pods/attach
    • pods/portforward
    • 任意资源模型的proxy类型(比如pods/proxy、services/proxy)
  • 及时吊销可能泄露的kubeconfig凭证,并且遵循权限最小化原则,收敛子账号不必要的pods/exec、pods/attach、pods/portforward和proxy类型的资源模型RBAC权限。