使用 privileged 特权容器是业界最常见以及最广为人知的逃逸手法,对容器安全有一定要求的产品一般都会严格限制特权容器的使用和监控。不过依然会有一些著名的云产品犯类似的低级错误,例如微软的 Azure 出现的问题:

https://thehackernews.com/2021/01/new-docker-container-escape-bug-affects.html

privileged 特权容器的权限其实有很多,所以也有很多不同的逃逸方式,挂载设备读写宿主机文件是特权容器最常见的逃逸方式之一。

当你进入 privileged 特权容器内部时,你可以使用 fdisk -l 查看宿主机的磁盘设备:

fdisk -l

图片
如果不在 privileged 容器内部,是没有权限查看磁盘列表并操作挂载的。

图片

因此,在特权容器里,你可以把宿主机里的根目录 / 挂载到容器内部,从而去操作宿主机内的任意文件,例如 crontab config file, /root/.ssh/authorized_keys, /root/.bashrc 等文件,而达到逃逸的目的。

图片
当然这类的文件的读写是 EDR 和 HIDS 重点监控的对象,所以是极易触发告警的;即使 HIDS 不一定有针对容器安全的特性进行优化,对此类的逃逸行为依旧有一些检测能力。

最后编辑: kuteng  文档更新时间: 2022-06-01 16:15   作者:kuteng