特权模式启用后容器拥有全量 capabilities、可挂载宿主机设备与文件系统、能加载内核模块、绕过 dac 权限限制,并可能通过 docker.sock 或缺失 userns 实现逃逸。

直接分析 Docker 特权模式的安全风险,核心是验证它是否被启用、确认容器获得了哪些超出常规的权限、并检查是否存在可被利用的逃逸路径。不需要复杂工具,Linux 命令组合就能完成关键判断。
确认容器是否运行在特权模式
这是第一步,也是最基础的判断依据:
- 用 docker ps 查出目标容器 ID 或名称
- 执行:docker inspect --format='{{.HostConfig.Privileged}}' 容器ID,输出 true 即表示已启用特权模式
- 补充验证:进入容器后执行 cat /proc/1/status | grep CapEff,若看到全为 ffffffffff(十六进制满位),说明所有 capabilities 已开启,符合特权容器特征
检查设备与敏感目录挂载情况
特权模式默认放开 /dev 访问,但实际风险还取决于是否挂载了危险路径:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 在宿主机上运行:docker inspect 容器ID | jq '.Mounts[] | select(.Source == "/dev" or .Source | startswith("/proc") or .Source | startswith("/sys"))'(需安装 jq)
- 若发现 /dev 以读写方式挂载,或 /proc、/sys、/etc 等被挂载且为 rw,攻击面显著扩大
- 容器内执行 ls -l /dev/sd* 或 mount | grep sda,能列出物理磁盘设备即表明具备直接读写能力
验证关键高危能力是否生效
特权模式会默认启用 CAP_SYS_ADMIN、CAP_NET_RAW、CAP_DAC_OVERRIDE 等高风险 capability,可针对性测试:
- 尝试挂载宿主机文件系统:在容器内执行 mkdir /mnt/test && mount /dev/sda1 /mnt/test(需有对应设备)。成功即说明 CAP_SYS_ADMIN 生效,存在逃逸基础
- 检查能否加载内核模块:运行 lsmod | head -3 看是否可读;再试 modprobe dummy(非必需模块),若不报错则风险极高
- 绕过文件权限测试:找一个宿主机挂载进来的只读配置文件(如 /host-etc/shadow),执行 touch /host-etc/shadow.test,成功写入说明 CAP_DAC_OVERRIDE 起效
排查常见逃逸入口点
特权容器配合其他不当配置,极易触发已知逃逸链:
- 检查容器内是否可访问 /var/run/docker.sock:ls -l /var/run/docker.sock,若存在且可读写,攻击者可调用 Docker API 创建新特权容器
- 检查是否启用用户命名空间(userns):docker info | grep 'Userns',若显示 disabled,说明无额外隔离层
- 运行 ps aux | grep dockerd,确认 Docker daemon 是否以 root 运行且未启用 --userns-remap










