
# Kubernetes kubelet资源管理错误漏洞公告（CVE-2020-8557）
#### 漏洞详情
kubelet的驱逐管理器（eviction manager）中没有包含对Pod中挂载的/etc/hosts文件的临时存储占用量管理，因此在特定的攻击场景下，一个挂载了/etc/hosts的Pod可以通过对该文件的大量数据写入占满节点的存储空间，从而造成节点的拒绝访问（Denial of Service）。
表1漏洞信息 
| 漏洞类型   | CVE-ID                                                                        | 漏洞级别 | 披露/发现时间    |
|:---|:---|:---|:---|
| 资源管理错误 | [CVE-2020-8557](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-8557) | 中    | 2020-07-15 |
   
#### 漏洞影响
kubelet的驱逐管理器（eviction manager）中没有包含对Pod中挂载的/etc/hosts文件的临时存储占用量管理，因此在特定的攻击场景下，一个挂载了/etc/hosts的Pod可以通过对该文件的大量数据写入占满节点的存储空间，从而造成节点的拒绝访问（Denial of Service）。该漏洞为中危漏洞，CVSS评分为5.5。
具备以下特权的Pod拥有节点上/etc/hosts文件的写入权限：
- Pod中的容器具备CAP_DAC_OVERRIDE系统权限（默认具备）。
- Pod以root（UID为0）用户启动或者Pod Security Context中的allowPrivilegeEscalation设置为true（当以特权容器或者加了CAP_SYS_ADMIN权限运行时默认为true）。
下列版本的kubelet组件均在此CVE的影响范围内：
- kubelet v1.18.0\~v1.18.5
- kubelet v1.17.0\~v1.17.8
- kubelet\<v1.16.13
 
#### 漏洞修复方案
建议您采取以下安全防范措施：
- 通过设置集群Pod安全策略或admission准入机制强制Pod删除CAP_DAC_OVERRIDE系统权限：
  ```
  securityContext:
        capabilities:
          drop: ["DAC_OVERRIDE"]
  ```
  
- 通过使用集群Pod安全策略或其他admission准入机制限制以root用户启动容器，或设置参数allowPrivilegeEscalation为false：
  ```
  securityContext:
        allowPrivilegeEscalation: false
  ```
  
- 通过以下命令对容器内的/etc/hosts文件进行监控，如果该文件的大小异常，请采取相应告警或容器隔离措施。
  ```
  find /var/lib/kubelet/pods/*/etc-hosts -size +1M
  ```
  
 
