2024-01-12 20:51:40
Linux内核cgroups v1的release_agent功能存在高危漏洞(CVE-2022-0492),攻击者可利用该漏洞实现容器逃逸并在宿主机上执行任意命令。以下是关于该漏洞的详细分析:
漏洞背景与影响主要影响基于cgroups v1的容器技术(如Docker、Kubernetes等云原生架构)。
漏洞利用需满足特定条件:容器内进程以root权限运行,且宿主机未启用安全加固机制(如AppArmor、SELinux)。

cgroups允许通过notify_on_release文件(位于cgroup目录下)配置是否在cgroup变空时调用release_agent脚本。
若notify_on_release值为1,内核会在cgroup内最后一个进程终止时执行release_agent指定的程序。
内核未验证设置release_agent文件的进程是否具有管理权限(如CAP_SYS_ADMIN能力)。
攻击者可通过覆盖release_agent文件,强制内核调用任意高权限二进制文件,从而实现提权。
若容器以root权限运行,攻击者可直接修改release_agent文件,指向宿主机上的恶意程序(如/bin/sh)。
当容器内进程终止时,内核会以最高权限执行该程序,导致容器逃逸。
恶意程序可在宿主机上执行任意命令,完全控制主机环境。
漏洞利用需容器内进程具备root权限,但实际生产环境中大量容器以root运行,风险极高。
运行AppArmor或SELinux的容器可阻止此类攻击,但未启用的环境仍易受攻击。
2017年谷歌研究员曾利用release_agent突破特权容器,此次漏洞再次证明该功能的危险性。
用户应尽快升级至修复该漏洞的Linux内核版本(具体版本需参考官方安全公告)。
避免以root权限运行容器,使用非特权用户(如--user参数)。
启用--cap-drop=ALL减少容器能力,仅保留必要权限。
启用AppArmor或SELinux,限制容器对宿主机的访问。
监控release_agent文件的修改行为,审计异常进程活动。
容器应仅拥有完成任务所需的最小权限,避免默认root运行。
cgroups v2改进了权限管理,默认禁用release_agent功能,建议迁移至v2版本。
定期更新系统补丁,使用工具(如CVE-2022-0492专项扫描)检测潜在风险。
总结:CVE-2022-0492漏洞暴露了cgroups v1在权限验证上的缺陷,攻击者可利用此漏洞实现容器逃逸。尽管利用条件需root权限,但实际环境中大量容器以高权限运行,风险不容忽视。建议用户通过升级内核、限制容器权限、启用安全模块等措施综合防护。