Docker越狱,你拿到它了吗?
发布时间:2021-12-07 14:21:05 所属栏目:云计算 来源:互联网
导读:因为一个关于Docker容器安全的事件,把曾一度以稳定性和安全性著称的Docker,演绎成了拥有特权漏洞的容器引擎,使其能够直接访问底层宿主机,就好比CVE-2020-27352安全漏洞导致代码在主机上执行,一夜之间,Docker容器的安全性形同虚设: Docker在一夜之间更
|
因为一个关于Docker容器安全的事件,把曾一度以稳定性和安全性著称的Docker,演绎成了拥有特权漏洞的容器引擎,使其能够直接访问底层宿主机,就好比CVE-2020-27352安全漏洞导致代码在主机上执行,一夜之间,Docker容器的安全性形同虚设: Docker在一夜之间更改了cgroup,这使我们能够提升权限并获得主机的root访问权限。我们能够利用cgroups在主机上运行反向Shell并获得代码执行权限。 此问题是由于Canonical的Snap中的配置错误而导致的,并且影响了许多产品。它被指定为CVE-2020-27352 CVE-2020-27352 在为docker生成systemd服务单元时,snapd未指定"Delegate=yes",结果systemd会将进程从这些容器中移入主守护程序的cgroup中。重新加载系统单元时会自动对齐。这可能会向快照中的容器授予原本不希望的其他特权。 一、Linux容器–命名空间和cgroup Docker是利用cgroup和namespaces来创建安全,可靠和强大的隔离框架。为了构建轻量级容器,需要创建有效的资源管理和隔离,为了使我们能够虚拟化系统环境,Linux内核以namespace和cgroups来提供低级隔离机制。 从根本上说,namespace是限制Linux进程树对各种系统实体(例如网络接口,进程树,用户ID和文件系统安装)的访问和可见性的机制。 另一方面,Linux cgroups功能不仅提供了一种限制机制,而且还可以管理和说明一组进程的资源使用情况。它限制并监视系统资源,例如CPU时间,系统内存,磁盘带宽,网络带宽等。 这样看上去cgroup看起来非常安全。是这样吗?如果有人在Docker容器上错误配置了cgroups那该怎么办? 让我们看看Docker在其“安全”网页上对cgroup的评价: 起到阻止一个容器访问或影响另一个容器的数据和进程的作用,它们对于抵御某些拒绝服务攻击非常重要。它们在公共和私有PaaS之类的多租户平台上尤其重要,即使在某些应用程序出现异常时,也要保证一致的正常runtime。 这就是说,如果Docker容器的cgroup配置错误的话,我们面临的最糟糕的情况就是拒绝服务。 二、Devices cgroup的特殊案例 尽管cgroup被描述为实现资源核算和限制的机制,但“内核” cgroups文档中的“Devices” cgroup(也称为“设备白名单控制器”)比较特殊。因此,Devices cgroup的作用被描述为: 实施cgroup来跟踪并强制执行对设备文件的打开和mknod限制…” 红帽Linux指南对此不透明的定义提供了一些启示: 设备子系统允许或拒绝cgroup中的任务访问设备。 回到内核cgroups文档,可以清晰的看到: 访问权限是r,w和m的组合。 确切地说,从我们的安全角度出发,无论是创建,读取还是写入,都要对 Linux内核的设备禁止各种访问。 受此白名单机制控制的设备可以是内核使用的任何设备。也包括安全的设备,例如/dev/null和/dev/zero,还包括USB设备(例如/dev/uhid),cdroms(/dev/ cdrom),甚至内核的硬盘(例如/dev/sda设备)。 总结来说:Devices cgroup是cgroup子系统中的一个特殊的组成部分,因为它不仅一种“资源核算和限制”机制,而且还是一个内核设备白名单控制器,与系统的资源耗尽相比,它可能造成更大的破坏。 (编辑:邯郸站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐
热点阅读

