Kubernetes kubelet资源管理错误漏洞公告(CVE-2020-8557)
漏洞详情
kubelet的驱逐管理器(eviction manager)中没有包含对Pod中挂载的/etc/hosts文件的临时存储占用量管理,因此在特定的攻击场景下,一个挂载了/etc/hosts的Pod可以通过对该文件的大量数据写入占满节点的存储空间,从而造成节点的拒绝访问(Denial of Service)。
漏洞类型 |
CVE-ID |
漏洞级别 |
披露/发现时间 |
---|---|---|---|
资源管理错误 |
中 |
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 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