2019 年 2 月 11 日,runc 维护者在 oss-security 邮件列表披露 runc 安全漏洞详情。该漏洞允许恶意用户覆写宿主机上的 runc 二进制文件,并获得宿主机的 root 权限,其恶劣影响波及 Docker, containerd, cri-o 等使用了 runc 的容器运行时。
漏洞详情
此次漏洞的编号为 CVE-2019-5736,它的出现源于运行容器时 runc 处理系统文件描述符的方式存在缺陷。攻击者可以使用指向 runc 二进制文件本身的自定义二进制文件替换容器内的目标二进制文件来完成攻击。
恶意容器可以通过此漏洞覆盖 host 上的 runc 二进制文件,从而在 host 上获取 root 访问权限,进而执行任意攻击代码。攻击代码采取的攻击方式有两种:
使用攻击者控制的镜像创建新容器;
进入到攻击者之前具有写入权限的容器中(docker exec)。
影响范围
目前,Docker 发布的 v18.09.2 已经修复了此漏洞,runc 还未发布包含漏洞修复补丁的新版本。因此 Docker 版本低于 18.09.2 及 runc 版本不高于 1.0.0-rc6 的环境都在影响范围内。
解决方案
截至目前,该问题的最佳解决方法是把 Docker 升级到 18.09.2 或以上版本。由于 runc 新版本尚未发布,如果要单独升级 runc,用户需要自行编译。
缓解办法:
启用 selinux 规则,防止容器内的进程覆盖主机 runc 二进制文件;
Host 使用只读文件系统,或至少 runc 文件位置只读;
在容器内使用低权限用户,或将容器内 uid0 用户映射到 host 的普通用户(没有 runc 访问权限的用户)。
漏洞对 Caicloud Compass 的影响
考虑到 runc 的流行度,这个漏洞对容器的影响是普遍的。
该漏洞只需要较小的权限(host runc 的权限)即可完成攻击。默认情况下,容器内进程都是以 root 权限运行的,如果没有做用户 ID 映射,就会对 host 上的 runc 二进制文件有所有权限,因此都会受到该漏洞的影响。
面对这个安全隐患,才云 Caicloud 将从以下三方面为用户提供帮助:
对于在生产环境使用 Caicloud Compass 的用户,才云 Caicloud 工程师团队可以协助完成 Docker 升级;
对于新发布的 Caicloud Compass 2.7.3 版本,我们会通过热补丁修复这个漏洞;
在下个版本中,Caicloud Compass 也会使用 18.09.2 或以上版本的 Docker。
本文转载自才云 Caicloud 公众号。
原文链接:https://mp.weixin.qq.com/s/PxvXCj6cfLslzRlV3mlSYw
评论