Azure AKS节点镜像问题CVE-2024-21626分析与修复指南
【免费下载链接】AKS Azure Kubernetes Service 项目地址: https://gitcode.com/gh_mirrors/ak/AKS
问题概述
在Azure Kubernetes Service(AKS)环境中,研究人员发现了一个重要的容器隔离问题CVE-2024-21626。该问题影响runc 1.1.11及更早版本,可能被利用突破容器隔离限制,获取宿主机文件系统访问权限。
技术原理分析
该问题源于runc组件内部文件描述符处理不当,具体表现为:
- runc在初始化过程中意外保留了某些文件描述符到runc init进程中,包括对宿主机/sys/fs/cgroup的句柄
- runc未完全验证工作目录是否位于容器挂载命名空间内
- 可能通过特定路径(如/proc/self/fd/7/)将容器进程的工作目录指向宿主机文件系统
风险场景
研究人员识别出四种主要风险方式:
风险1:通过特殊配置的镜像process.cwd参数,当用户运行该镜像时,容器进程可能访问宿主机文件系统。CVSS评分为8.2(重要)。
风险2:已存在于容器内的特殊进程,当管理员执行runc exec并指定特定工作目录时,通过符号链接重定向到/proc/self/fd/7/实现容器隔离突破。CVSS评分为7.2(重要)。
风险3a/3b:前两种风险的变种,通过修改宿主机二进制文件(如/bin/bash)实现持久化控制。CVSS评分分别为8.6和8.2(均为重要)。
影响范围
该问题影响使用以下操作系统的AKS节点:
- Ubuntu 22.04
- Azure Linux
Windows节点不受此问题影响。
修复方案
Microsoft已发布更新版本:
- Ubuntu 22.04节点镜像版本至少需升级至202401.17.1,包含更新后的runc 1.1.9-2版本
- Azure Linux节点镜像版本至少需升级至202401.17.2,包含更新后的runc 1.1.9-4版本
更新包含以下关键改进:
- 加强验证工作目录是否位于容器内
- 在runc init最终阶段关闭所有内部文件描述符
- 修复特定的文件描述符保留问题
- 在执行runc init前标记所有非标准IO文件为O_CLOEXEC
运维建议
AKS管理员应立即采取以下措施:
- 检查节点当前使用的镜像版本
- 对于Ubuntu 22.04节点,确保使用202401.17.1或更高版本
- 对于Azure Linux节点,确保使用202401.17.2或更高版本
- 规划节点滚动更新策略,优先更新面向互联网的工作负载
常见问题解答
Q:Ubuntu 18.04或20.04是否受影响? A:AKS官方仅支持Ubuntu 22.04,其他版本不在支持范围内。
Q:安全扫描工具仍报告kubelet/containerd组件存在风险? A:这是误报,虽然这些组件引用了runc库,但不包含可能被利用的代码路径。
Q:更新镜像何时在所有区域可用? A:更新镜像已开始全球部署,各区域可见时间可能略有差异。
【免费下载链接】AKS Azure Kubernetes Service 项目地址: https://gitcode.com/gh_mirrors/ak/AKS
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



