近日Containerd社区披露了CRI实现中的漏洞,在调用ExecSync API时,容器内的程序可以不受约束地消耗内存,从而导致Containerd消耗容器所在节点的所有可用内存,完成DoS攻击。在K8s Probe和容器Lifecycle Hooks中的exec机制均可触发该攻击。
CVE-2022-31030漏洞被评估为中危漏洞。
影响范围
以下枚举的Containerd版本均在该漏洞影响范围内:
- ≤v1.5.12
- v1.6.0~v1.6.5
Kubernetes社区在以下版本修复了该漏洞:
- v1.5.13
- v1.6.6
说明 该漏洞只影响使用Containerd运行时节点池中的节点。
关于漏洞的详细信息,请参见CVE-2022-31030。
防范措施
参考如下方案及时升级集群存量节点Containerd版本,同时严格控制非受信人员的应用部署权限。
- 通过
kubectl drain
命令,排水掉目前需要升级的节点。 - 通过
systemctl stop kubelet
命令,停止节点的kubelet服务。 - 通过
systemctl stop containerd
命令,停止节点的Containerd服务。 - 安装最新的Containerd的RPM包。
- 通过
systemctl start containerd
命令,启动Containerd服务。 - 通过
systemctl start kubelet
命令,启动kubelet服务。 - 该节点升级完成,使用
kubectl uncordon
将节点恢复到可调度状态。 - 如还需继续升级其他节点,回到第2步继续升级其他节点。