Linux 内核 cgroups 新漏洞可导致攻击者逃逸容器
编译:代码卫士
Linux 内核修复了一个高危漏洞 (CVE-2022-0492),它本可被滥用于逃逸容器,在容器主机上执行任意命令。
该缺陷存在于Linux 内核特征 control groups(也被成为 cgroups v1)中,可导致进程被组织到层级结构群组中,从而可能限制并监控资源的使用情况如CPU、内存、磁盘I/O和网络。
该漏洞和cgroups v1 release_agent 功能中的提权情况有关。Release_agent 脚本在cgroup中的任意进程终止后执行。
本周,Unit 42 团队的研究员 Yuval Avrahami 表示,“该漏洞是近期发现的最简单的Linux 提权漏洞之一。Linux 内核错误地将提权操作暴露给低权限用户。”
Cgroups 解释该函数时表示,“当特定cgroup 为空时是否调用 release_agent 程序由相应 cgroup 目录notify_on_release 文件中的值决定。如果该文件中包含值0,则不会调用 release_agent 程序;如果包含值1,则调用release_agent 程序。根cgroup中的该文件默认值是0。”
具体而言,研究人员表示该漏洞是因为缺少对进程是否为 release_agent 文件设置管理员权限的检查,因此导致其可能遭利用。换句话说,如果 release_agent 文件遭攻击者覆写,则内核可被强制通过最高可能权限调用发布代理中的任意二进制,从而导致及其遭完全接管。
不过,值得注意的是,只有具有“根”权限的进程才可写入文件,即该漏洞仅允许root进程提权。Avrahami 解释称,“仅有root用户才可利用提权漏洞乍一看似乎很奇怪。以根身份运行并不一定说明机器遭完全控制。根用户和完全权限之间存在一个灰色地带,包括能力、名称空间和容器。在,根进程并不具备对机器的完全控制权限的场景下,CVE-2022-0492就变成严重漏洞。”
尽管运行 AppArmor 或 SELinux 的容器不受该漏洞影响,但建议用户应用补丁,因为其它恶意主机进程可能滥用该漏洞提升权限。
这并非 release_agent 首次成为攻击向量。2019年7月,谷歌Project Zero 团队的研究员 FelixWilhelm 演示了粗略的PoC exploit,利用该特性攻破权限 Kubernetes 和 Docker 容器。
2021年11月,Aqua公司披露了利用同样的容器逃逸技术将XMRig 密币挖矿机释放到受感染主机的详情,标志着真实发生的首个利用实例。
Avrahami 总结道,“CVE-2022-0492再次说明Linux漏洞可被用于容器逃逸。幸运的是,遵循最佳实践的环境免受该漏洞影响。毫无疑问,托管不受信任或公开暴露的容器的环境面临较高风险。”
代码卫士试用地址:https://codesafe.qianxin.com/#/home
开源卫士试用地址:https://oss.qianxin.com
谷歌宣布 Linux Kernel、Kubernetes 0day 漏洞奖励加倍
Linux 基金会发布《软件物料清单和网络安全准备度现状》报告
Linux 系统服务漏洞PwnKit 已存在12年,可获得所有主流发布版本的root 权限
Linux 内核漏洞可用于逃逸 Kubernetes 容器
Control Web Panel 中两个严重漏洞使Linux 服务器易受RCE攻击
https://thehackernews.com/2022/03/new-linux-kernel-cgroups-vulnerability.html
题图:Pixabay License
本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的产品线。