你阻止了 docker.sock。你的容器仍然不安全。
Source: Dev.to
我在过去两周里搭建了一个完整的运行时逃逸实验室——包括五个攻击场景、自动化防御脚本、Falco 规则等。Scenario 1(docker.sock 挂载)已经有了自己的 深度解析在 DZone。大家都很熟悉这个场景。
但 Scenario 3 和 Scenario 4 才是真正让我夜不能寐的原因。不是因为它们轰动或戏剧化,而是因为它们潜伏得很安静。它们能够通过你们团队的检测,在 docker inspect 中看起来也很正常,却为攻击者提供了一条通往宿主机的路径。
本文将覆盖以下两点:
- 审计盲点 – 一个大多数扫描器都会漏掉的单一能力。
- 提权链 – 一个不需要
--privileged标志的双容器提权过程。
审计盲点:CAP_SYS_ADMIN

为什么扫描器会错过它
大多数 Docker 安全检查清单只会查找 Privileged: true。如果该标志为 false,它们就会打上绿色勾选并继续往下走。
单独的 CAP_SYS_ADMIN —— 即使没有 --privileged —— 也几乎赋予容器特权模式的全部功能:挂载文件系统、操作命名空间,并且在某些内核配置下,甚至可以完全逃逸到宿主机。在审计日志中,它只会显示为列表中的另一个能力,而不会被标记为红色警告。
审计盲点 – 这唯一的能力经常在自动化扫描中被遗漏,因为扫描器只针对 Privileged 布尔值进行检测,而不是针对各个能力实际能做的事情。
它的表现形式
# What your scanner sees
docker inspect my-container | jq '.[] | {Privileged: .HostConfig.Privileged}'
# Output:
# { "Privileged": false }
# Example detection rule (illustrative)
condition: >
container.image.digest != "" and
evt.type = container_start and
ka.verb = create and
container.privileged = true and
container.mount.dest in ("/etc", "/root", "/var/run")
output: >
Escalation chain: socket container spawned privileged mount
(container=%container.name image=%container.image)
priority: CRITICAL
这段规则捕获的是 模式,而不是单个容器。思路的这种转变才是关键所在。
实践实验
所有五个场景——包括此处涵盖的两个——都在开源实验仓库中。每个场景包含:
demo.sh– 运行攻击,以便您可以看到它defense.sh– 生成检测工件(Falco 规则、审计脚本)validate.sh– 验证您的防御是否真正有效cleanup.sh– 干净地清理所有内容
git clone https://github.com/opscart/docker-security-practical-guide
cd labs/09-runtime-escape
# Run Scenario 3 (CAP_SYS_ADMIN audit gap)
cd scenario-3-sys-admin
chmod +x *.sh && ./demo.sh
# Run Scenario 4 (host mount escalation chain)
cd ../scenario-4-host-mount
chmod +x *.sh && ./demo.sh
可在 Docker Desktop(macOS/Windows)和 Linux 上运行。README 中包含针对在 VM 层行为不同的部分的 Docker Desktop‑特定说明。
实际该怎么做
两件事。每件只需五分钟。
-
运行上述的能力审计 对你的环境进行检查。查找
SYS_ADMIN、SYS_PTRACE、SYS_MODULE。如果发现它们,追溯它们出现的原因。通常情况下,没人记得。 -
审计升级‑链模式: 在同一环境中,任何挂载了
docker.sock的容器与挂载了主机路径绑定的容器。如果两者共存——即使它们是无关的服务——攻击面仍然存在。
相关阅读
-
Docker Runtime Escape:
Why Mounting docker.sock Is Worse Than Running Privileged Containers — 场景 1,套接字逃逸链(DZone) -
Docker Security:
6 Practical Labs From Audit to AI Protection — 实验 01–06,基础(DZone) -
Advanced Docker Security:
From Supply Chain Transparency to —Network Defense — 实验 07–08(DZone)
实验仓库包含所有内容:
github.com/opscart/docker-security-practical-guide
联系
- 博客:
- GitHub:
- 领英: