
# runc漏洞（CVE-2024-21626）对CCE服务的影响说明
#### 漏洞详情
runc是一个基于OCI标准实现的一个轻量级容器运行工具，是Docker、Containerd、Kubernetes等容器软件的核心基础组件。近日，runc社区发布最新版本，修复了一处高危级别的容器逃逸漏洞（[CVE-2024-21626](https://cve.mitre.org/cgi-bin/cvename.cgi?name=2024-21626)）。由于内部文件描述符泄漏，攻击者可通过控制容器进程的工作目录，或命令路径，将其设置为文件描述符的父级目录下的路径，读写主机任意文件，实现容器逃逸。
详细信息请参见：[runc容器逃逸漏洞预警（CVE-2024-21626）](https://www.huaweicloud.com/notice/2022/20240201161258542.html)
#### 漏洞利用条件
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有安全风险的工作负载配置示例   
  ![](https://support.huaweicloud.com/bulletin-cce/zh-cn_image_0000001838906437.png "点击放大") 
- 工作负载的容器镜像中默认WORKDIR或启动命令包含 /proc/self/fd/\<num\>。
  可通过以下命令查看容器镜像元数据：
  - docker运行时执行：**docker inspect \<镜像ID\>**
  
  - containerd运行时执行：**crictl inspecti \<镜像ID\>**
  
  
  图2有安全风险的镜像配置示例   
  ![](https://support.huaweicloud.com/bulletin-cce/zh-cn_image_0000001838905949.png "点击放大") 
 
#### 漏洞修复方案
**规避措施**：
- 配置工作负载的WORKDIR为固定目录。
- 若未设置工作负载WORKDIR目录，需确保工作负载使用的容器镜像来源可信。
![](https://support.huaweicloud.com/bulletin-cce/public_sys-resources/note_3.0-zh-cn.png)
执行以上规避措施前请评估对业务的影响，并进行充分测试。
**修复方案**：
当前CCE团队已修复该漏洞，请您关注[CCE补丁版本发布记录](https://support.huaweicloud.com/bulletin-cce/cce_10_0405.html)，及时将集群升级至漏洞修复版本。已EOS集群版本请升级到在维版本进行修复。
已修复集群版本：v1.21.12-r4、v1.23.11-r4、v1.25.6-r4、v1.27.3-r4、v1.28.1-r4及以上版本。
![](https://support.huaweicloud.com/bulletin-cce/public_sys-resources/note_3.0-zh-cn.png)
集群升级至漏洞修复版本后，新启动的容器不存在漏洞风险，对于已运行的容器需要进一步排查，详情请参见[判断方法]。
- 已运行的容器中，如果启动容器进程时设置WORKDIR为/proc/self/fd/\<num\>，仍存在风险，需要删除该配置后重新部署容器。
- 已运行的容器中，使用的镜像中WORKDIR设置为/proc/self/fd/\<num\>，仍存在风险，需要使用可信的镜像，重新部署容器。
- 已运行的容器中，容器WORKDIR未设置为/proc/self/fd/\<num\>，无风险。
 
