runC漏洞对UCS服务的影响说明(CVE-2024-21626)
漏洞详情
runC是一个基于OCI标准实现的一个轻量级容器运行工具,是Docker、Containerd、Kubernetes等容器软件的核心基础组件。近日,runC社区发布最新版本,修复了一处高危级别的容器逃逸漏洞(CVE-2024-21626)。由于内部文件描述符泄漏,攻击者可通过控制容器进程的工作目录,或命令路径,将其设置为文件描述符的父级目录下的路径,读写主机任意文件,实现容器逃逸。
漏洞名称 |
CVE-ID |
漏洞级别 |
披露/发现时间 |
---|---|---|---|
runC漏洞 |
CVE-2024-21626 |
高 |
2024-02-01 |
漏洞利用条件
UCS服务的正常使用场景不受此漏洞影响,仅当攻击者具备以下条件之一时,可利用该漏洞:
- 攻击者具有集群工作负载的创建或更新权限。
- 集群中工作负载的容器镜像来源不可信,攻击者拥有修改源镜像权限。
漏洞影响
满足上述漏洞利用条件时,容器进程可能逃逸到节点,导致节点信息泄露或执行恶意命令。
典型漏洞利用场景
- 攻击者具有集群工作负载的创建或更新权限,创建工作负载时设置容器进程的WORKDIR为/proc/self/fd/<num>,以实现在容器运行后访问节点文件系统。
- 工作负载的容器镜像来源不可信,攻击者拥有修改源镜像权限,将镜像中WORKDIR设置为/proc/self/fd/<num>,以实现在容器运行后访问节点文件系统。
判断方法
该漏洞范围涉及中国站本地集群和国际站多云集群类型,同时集群中工作负载配置或容器镜像具备如下特征时,可能存在风险:
- 工作负载中容器进程的WORKDIR为 /proc/self/fd/<num>。
图1 有安全风险的工作负载配置示例
- 工作负载的容器镜像中默认WORKDIR或启动命令包含 /proc/self/fd/<num>。
可通过以下命令查看容器镜像元数据:
- docker运行时执行:docker inspect <镜像ID>
- containerd运行时执行:crictl inspecti <镜像ID>
图2 有安全风险的工作负载配置示例
漏洞修复方案
规避措施
- 配置工作负载的WORKDIR为固定目录。
- 若未设置工作负载WORKDIR目录,需确保工作负载使用的容器镜像来源可信。
执行以上规避措施前,请评估对业务的影响,并进行充分测试。
修复方案
当前UCS已修复该漏洞,请您使用最新版本的本地集群和多云集群。