
# Kubernetes安全漏洞公告（CVE-2020-8554）
#### 漏洞详情
CVE-2020-8554是Kubernetes社区发现的关于集群内网络流量劫持的安全问题。具有创建和更新Service和Pod对象权限的潜在攻击者，能够劫持集群内来自其他Pod或者节点的流量。潜在攻击者通过设置Service对象的spec.externalIPs字段，能够劫持集群内其他Pod或者节点访问该externalIP（如某公网知名IP）的流量，并将其转发到攻击者创建的恶意Pod中，造成中间人攻击。同理，攻击者通过修改Service对象的status.loadBalancer.ingress.ip也能达到此目的。
表1漏洞信息 
| 漏洞类型 | CVE-ID                                                                    | 漏洞级别 | 披露/发现时间    |
|:---|:---|:---|:---|
| 流量劫持 | [CVE-2020-8554](https://cve.mitre.org/cgi-bin/cvename.cgi?name=2020-8554) | 中    | 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的规避措施。
  
 
#### 相关链接
<https://github.com/kubernetes/kubernetes/issues/97076>
