文章总结: 本文介绍了云原生Docker的安全问题,包括Docker的基本概念和架构,重点分析了Docker面临的安全风险,特别是容器逃逸漏洞。文章详细列举了Docker自身漏洞(cve-2021-25741等)、内核漏洞(cve-2020-14386等)以及不安全配置(特权容器、挂载敏感目录等)导致的逃逸风险,为云环境安全防护提供了重要参考。
综合评分: 85
文章分类: 云安全,漏洞分析,应用安全,网络安全,容器安全
云攻防之云原生Docker安全问题
原创
OneDay一卒的老付
老付话安全
2025年8月14日 20:29
山东
点击蓝字
关注我们
始于理论,源于实践,终于实战
老付话安全,每天一点点
激情永无限,进步看得见
严正声明
本号所写文章方法和工具只用于学习和交流,严禁使用文章所述内容中的方法未经许可的情况下对生产系统进行方法验证实施,发生一切问题由相关个人承担法律责任,其与本号无关。
特此声明!!!
1
Docker是什么,它是干啥的?
Docker 是一种开源的容器化平台,它允许开发者将应用程序及其所有依赖项打包到一个标准化单元(称为容器)中,从而实现快速、一致的部署和运行。
简单说,它一个容器技术,类似于VM虚拟机,别人环境封装好打包成一个镜像,使用docker技术就能快速把这个镜像环境还原出来。
Docker 架构和关键组件 的简单示意图
- Client(客户端)
• 用户通过 Docker 客户端与 Docker 交互,输入命令如:
◦ docker build:根据 Dockerfile 构建镜像。
◦ docker pull:从镜像仓库拉取镜像到本地。
◦ docker run:运行一个容器(基于镜像创建的实例)。
• 客户端通过环境变量 DOCKER_HOST 与 Docker 守护进程通信(默认是本地,也可以是远程主机)。

- Docker Daemon(守护进程)
• 核心后台服务,负责管理 Docker 对象:
◦ Images(镜像):只读模板,用于创建容器(例如 NGINX 镜像)。
◦ Containers(容器):镜像的运行实例(如一个正在运行的 NGINX 服务)。
• 守护进程监听客户端命令,执行构建、拉取、运行等操作。
- Registry(镜像仓库)
• 存储和分发镜像的中心化服务(如 Docker Hub、私有仓库)。
• 图中提到的 NGINX 是一个示例镜像,用户可以通过 docker pull 从仓库获取它,或通过 docker push 上传自定义镜像。
2
Docker的安全问题
docker就相当于一台独立的应用系统,拿到它的权限就相当于整个系统就暴漏给攻击者。攻击者可以攻击虚拟空间磁盘,拿到最高权限也是虚拟空间的权限,但是这里不是真实物理环境的权限。
Docker 所面临的风险
- 容器镜像存在的风险:引入了不安全的第三方容器镜像。
- 不安全的容器应用存在的风险:主要是配置不当,如数据库端口的映射,不安全配置挂载和共享。
- 容器管理程序接口的风险:Docker 守护进程主要监听 UNIX socket 和 TCP socket,默认情况下,Docker 只会监听 UNIX socket
- 除此之外还有宿主机操作系统风险、容器网络风险、Docker 自身存在的一些漏洞等。
Docker 的安全风险主要还是集中在逃逸上,下面是docker逃逸漏洞汇总
3
Docker 逃逸漏洞盘点
1、Docker 自身漏洞
cve-2021-25741
cve-2021-30465
cve-2022-0492
2、内核漏洞
cve-2020-14386
cve-2021-22555
cve-2022-0847 DirtyPipe
3、不安全的配置
privileged-container
• 含义:容器以 privileged(特权)模式运行。
• 风险:特权容器拥有主机上的几乎所有内核能力(Capabilities),几乎等同于主机上的 root 权限。攻击者如果突破容器,可能直接控制主机。
• 典型场景:某些特殊应用(如 Docker in Docker)需要特权模式,但通常应避免。
mount-docker-sock
• 含义:容器挂载了主机的 Docker 守护进程套接字文件(/var/run/docker.sock)。
• 风险:通过该套接字,容器可以直接与主机 Docker 引擎交互,从而创建或删除其他容器,甚至运行恶意容器(相当于获得主机控制权)。
• 典型场景:CI/CD 工具(如 Jenkins 容器)可能需要挂载 Docker 套接字来构建镜像,但这是高风险操作。
mount-host-etc
• 含义:容器挂载了主机的 /etc 目录。
• 风险:/etc 包含主机系统的关键配置(如密码文件、影子文件 /etc/shadow、SSH 密钥等)。攻击者可能读取或修改这些文件,导致主机沦陷。
• 典型场景:某些监控或日志工具需要访问主机配置,但应限制为只读或最小权限。
mount-host-procfs
• 含义:容器挂载了主机的 /proc 文件系统。
• 风险:/proc 暴露了主机内核和进程信息,攻击者可利用它逃逸到主机(如通过修改 core_pattern触发任意代码执行)。
• 典型场景:调试工具可能需要访问 /proc,但生产环境应禁用。
mount-var-log
• 含义:容器挂载了主机的 /var/log 目录。
• 风险:日志中可能包含敏感信息(如认证日志、应用日志)。攻击者可利用这些信息进行横向渗透。
• 典型场景:日志收集器(如 Fluentd)需要访问日志文件,但应限制为只读。
cap_dac_read_search-container
• 含义:容器拥有 CAP_DAC_READ_SEARCH 内核能力。
• 风险:该能力允许容器绕过文件读权限检查,可读取主机上的任意文件(如 /etc/shadow)。
• 缓解:除非必要,否则应通过 –cap-drop 移除该能力。
cap_sys_admin-container
• 含义:容器拥有 CAP_SYS_ADMIN 内核能力。
• 风险:这是最危险的能力之一,允许执行挂载文件系统、命名空间操作等,极易导致容器逃逸(如利用 cgroup 漏洞)。
• 缓解:除非绝对必要(如运行 systemd 的容器),否则必须禁用。
END
枯燥乏味的知识点,学起来有点费劲。
但不积跬步无以至千里。
日拱一卒,每天一点点的进步。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:老付话安全 OneDay一卒的老付《云攻防之云原生Docker安全问题》