Kubernetes安全漏洞公告(CVE-2020-8554)
漏洞详情
CVE-2020-8554是Kubernetes社区发现的关于集群内网络流量劫持的安全问题。具有创建和更新Service和Pod对象权限的潜在攻击者,能够劫持集群内来自其他Pod或者节点的流量。潜在攻击者通过设置Service对象的spec.externalIPs字段,能够劫持集群内其他Pod或者节点访问该externalIP(如某公网知名IP)的流量,并将其转发到攻击者创建的恶意Pod中,造成中间人攻击。同理,攻击者通过修改Service对象的status.loadBalancer.ingress.ip也能达到此目的。
漏洞类型 |
CVE-ID |
漏洞级别 |
披露/发现时间 |
---|---|---|---|
流量劫持 |
中 |
2020-12-07 |
漏洞影响
对于单集群内多个用户共享使用的场景,如果将Pod和Service的创建和更新权限授予不信任的用户易受此漏洞的影响。
涉及所有Kubernetes版本。
漏洞修复方案
建议您检查所有使用externalIP和loadBalancerIP的Service,确认是否有可疑的Service。
该问题由Kubernetes软件的设计缺陷导致,当前用户可以采取如下措施进行防范:
- 限制externalIP的使用
- 方法一:通过Admission Webhook容器(k8s.gcr.io/multitenancy/externalip-webhook:v1.0.0)限制externalIP的使用。源代码和部署说明发布在:https://github.com/kubernetes-sigs/externalip-webhook。
- 方法二:使用开源软件OPA Gatekeeper限制externalIP的使用。示例说明ConstraintTemplate和Constraint发布在:https://github.com/open-policy-agent/gatekeeper-library/tree/master/library/general/externalip。
- 限制LoadBalancerIP的使用
由于社区不建议集群管理员向集群内的用户授予service/status对象的patch权限,因此社区没有为LoadBalancerIP提供规避措施。如果您需要对LoadBalancerIP进行限制,则可以参考externalIP的规避措施。