Docker Socket 攻击
Docker Socket 攻击 是什么?
Docker Socket 攻击通过容器内挂载的 /var/run/docker.sock 控制宿主机上的 Docker 守护进程,实现容器逃逸并获取宿主 root 权限。
/var/run/docker.sock 是 Docker 守护进程的无认证控制平面,而 dockerd 通常以宿主机 root 身份运行。当容器把该 socket 挂载进来(常见于 CI runner、监控代理、Sidecar 等场景),其内任何进程都能直接调用守护进程 API。攻击者一旦进入该容器,就能创建新的特权容器,把宿主机根文件系统挂载到 /host,植入后门、读取 /etc/shadow 或转入宿主网络命名空间。缓解措施:不要在不可信容器中挂载 docker.sock;采用 rootless Docker;通过 mTLS 暴露守护进程;或使用 sysbox、kaniko 等受限代理替代直接访问。
● 示例
- 01
攻陷一个挂载了 /var/run/docker.sock 的 Jenkins 代理容器,启动 --privileged -v /:/host 的新容器。
- 02
Portainer 容器内的攻击者通过绑定的 socket 列举并启动 root 容器。
● 常见问题
Docker Socket 攻击 是什么?
通过容器内挂载的 /var/run/docker.sock 控制宿主机上的 Docker 守护进程,实现容器逃逸并获取宿主 root 权限。 它属于网络安全的 攻击与威胁 分类。
Docker Socket 攻击 是什么意思?
通过容器内挂载的 /var/run/docker.sock 控制宿主机上的 Docker 守护进程,实现容器逃逸并获取宿主 root 权限。
Docker Socket 攻击 是如何工作的?
/var/run/docker.sock 是 Docker 守护进程的无认证控制平面,而 dockerd 通常以宿主机 root 身份运行。当容器把该 socket 挂载进来(常见于 CI runner、监控代理、Sidecar 等场景),其内任何进程都能直接调用守护进程 API。攻击者一旦进入该容器,就能创建新的特权容器,把宿主机根文件系统挂载到 /host,植入后门、读取 /etc/shadow 或转入宿主网络命名空间。缓解措施:不要在不可信容器中挂载 docker.sock;采用 rootless Docker;通过 mTLS 暴露守护进程;或使用 sysbox、kaniko 等受限代理替代直接访问。
如何防御 Docker Socket 攻击?
针对 Docker Socket 攻击 的防御通常结合技术控制与运营实践,详见上方完整定义。
Docker Socket 攻击 还有哪些其他名称?
常见的别称包括: docker.sock 挂载逃逸。