常见逃逸路径
- 特权容器 + 宿主机文件系统挂载:以 --privileged 运行的容器几乎无安全限制,可 chroot 到宿主机。攻击者挂载宿主机根目录(/)即可读写任意文件。
- Docker Socket 挂载:若 /var/run/docker.sock 被挂载入容器,容器内进程可使用 Docker API 创建新特权容器并挂载宿主机文件系统——这是最常见的配置错误之一。
- 内核漏洞利用:利用共享内核的本地提权漏洞(如 Dirty Pipe CVE-2022-0847)从容器内突破到宿主机。
- 容器运行时漏洞:runc CVE-2019-5736 允许恶意容器覆盖宿主机上的 runc 二进制文件,导致后续任何容器启动时攻击者获宿主机代码执行。
- capabilities 过度授予:CAP_SYS_ADMIN、CAP_SYS_PTRACE 等危险 Linux capabilities 可被用于逃逸。
防御措施
- 最小权限容器:禁用 --privileged;使用 securityContext 设置 runAsNonRoot + readOnlyRootFilesystem + drop ALL capabilities。
- 运行时安全:Seccomp 系统调用过滤 + AppArmor/SELinux 安全配置文件 + gVisor/Kata Containers 沙箱运行时(提供用户态内核级隔离)。
- 镜像安全:定期漏洞扫描(Trivy/Grype/Snyk)+ 最小基础镜像(distroless/alpine)+ 镜像签名验证。
- 运行时检测:Falco/Sysdig 等运行时安全工具监控异常系统调用(如挂载操作、命名空间变更)。
- 从不挂载 Docker Socket:CI/CD 中如需构建镜像,使用 Kaniko/Buildah 等无守护进程方案。