文档首页/ 云容器引擎 CCE/ 服务公告/ 漏洞公告/ runc漏洞(CVE-2024-21626)对CCE服务的影响说明
更新时间:2024-05-09 GMT+08:00

runc漏洞(CVE-2024-21626)对CCE服务的影响说明

漏洞详情

runc是一个基于OCI标准实现的一个轻量级容器运行工具,是Docker、Containerd、Kubernetes等容器软件的核心基础组件。近日,runc社区发布最新版本,修复了一处高危级别的容器逃逸漏洞(CVE-2024-21626)。由于内部文件描述符泄漏,攻击者可通过控制容器进程的工作目录,或命令路径,将其设置为文件描述符的父级目录下的路径,读写主机任意文件,实现容器逃逸。

详细信息请参见:runc容器逃逸漏洞预警(CVE-2024-21626)

漏洞利用条件

CCE服务的正常使用场景不受此漏洞影响。

仅当攻击者具备以下条件之一时,可利用该漏洞:

  1. 攻击者具有集群工作负载的创建或更新权限。
  2. 集群中工作负载的容器镜像来源不可信,攻击者拥有修改源镜像权限。

典型漏洞利用场景:

  • 攻击者具有集群工作负载的创建或更新权限,创建工作负载时设置容器进程的WORKDIR为/proc/self/fd/<num>,以实现在容器运行后访问节点文件系统。
  • 工作负载的容器镜像来源不可信,攻击者拥有修改源镜像权限,将镜像中WORKDIR设置为/proc/self/fd/<num>,以实现在容器运行后访问节点文件系统。

漏洞影响

满足上述漏洞利用条件时,容器进程可能逃逸到节点,导致节点信息泄露或执行恶意命令。

判断方法

集群版本范围为v1.21.1-r0 - v1.21.12-r2,v1.23.1-r0 - v1.23.11-r2,v1.25.1-r0 - v1.25.6-r2,v1.27.1-r0 - v1.27.3-r10,v1.28.1-r0 - v1.28.1-r10,同时集群中工作负载配置或容器镜像具备如下特征时,可能存在风险:

  • 工作负载中容器进程的WORKDIR为 /proc/self/fd/<num>。
    图1 有安全风险的工作负载配置示例
  • 工作负载的容器镜像中默认WORKDIR或启动命令包含 /proc/self/fd/<num>。
    可通过以下命令查看容器镜像元数据:
    • docker运行时执行:docker inspect <镜像ID>
    • containerd运行时执行:crictl inspecti <镜像ID>
    图2 有安全风险的镜像配置示例

漏洞修复方案

规避措施

  • 配置工作负载的WORKDIR为固定目录。
  • 若未设置工作负载WORKDIR目录,需确保工作负载使用的容器镜像来源可信。

执行以上规避措施前前请评估对业务的影响,并进行充分测试。

修复方案

当前CCE团队已修复该漏洞,请您关注补丁版本发布记录,及时将集群升级至漏洞修复版本。已EOS集群版本请升级到在维版本进行修复。

已修复集群版本:v1.21.12-r4、v1.23.11-r4、v1.25.6-r4、v1.27.3-r4、v1.28.1-r4及以上版本。

集群升级至漏洞修复版本后,新启动的容器不存在漏洞风险,对于已运行的容器需要进一步排查,详情请参见判断方法

  • 已运行的容器中,如果启动容器进程时设置WORKDIR为/proc/self/fd/<num>,仍存在风险,需要删除该配置后重新部署容器。
  • 已运行的容器中,使用的镜像中WORKDIR设置为/proc/self/fd/<num>,仍存在风险,需要使用可信的镜像,重新部署容器。
  • 已运行的容器中,容器WORKDIR未设置为/proc/self/fd/<num>,无风险。