近日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版本,同时严格控制非受信人员的应用部署权限。

  1. 通过kubectl drain命令,排水掉目前需要升级的节点。
  2. 通过systemctl stop kubelet命令,停止节点的kubelet服务。
  3. 通过systemctl stop containerd命令,停止节点的Containerd服务。
  4. 安装最新的Containerd的RPM包。
  5. 通过systemctl start containerd命令,启动Containerd服务。
  6. 通过systemctl start kubelet命令,启动kubelet服务。
  7. 该节点升级完成,使用kubectl uncordon将节点恢复到可调度状态。
  8. 如还需继续升级其他节点,回到第2步继续升级其他节点。