特权容器逃逸(privileged)
影响版本
危险的配置错误。只要满足以下条件,无论 Docker 版本新旧,均存在风险
漏洞原理
启用–privileged标志的容器拥有宿主机所有权限,可直接操作宿主机设备(如挂载/dev/sda5)或加载内核模块突破隔离。
环境搭建
1 | docker run --privileged -it ubuntu /bin/bash |
漏洞复现
容器内查看磁盘
1 | lsblk |
容器内的/etc/passwd
容器内获取权限
1 | mkdir /test |
成功把内核加载进容器,获得宿主机权限。
修复建议
避免使用–privileged模式或–cap-add=SYS_ADMIN赋予容器宿主机级权限,而是采用–cap-drop=ALL --cap-add=NET_ADMIN等方式,只给容器授予必要的权限。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Kaelthlog!