加入收藏 | 设为首页 | 会员中心 | 我要投稿 邯郸站长网 (https://www.0310zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 云计算 > 正文

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子系统中的一个特殊的组成部分,因为它不仅一种“资源核算和限制”机制,而且还是一个内核设备白名单控制器,与系统的资源耗尽相比,它可能造成更大的破坏。

(编辑:邯郸站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读