CVE-2020-15257(containerd逃逸)
影响版本 containerd <1.3.9 或 <1.4.3 漏洞原理 containerd 是 Docker 等容器平台的核心运行时组件,其架构中包含containerd-shim进程,负责中间层管理(如进程监控、信号转发、IO 重定向等),隔离 containerd 主进程与容器进程。containerd<->containerd-shim<->runc 攻击者可通过恶意容器构造特殊进程,利用 containerd-shim 进程的文件描述符(FD)管理缺陷,获取宿主机的敏感文件描述符,最终实现容器逃逸并访问宿主机资源。 shim 在处理子进程退出信号(SIGCHLD)时,未正确验证进程 PID 的归属,导致攻击者可伪造 PID 欺骗 shim,获取本应属于宿主机的文件描述符。 shim 的进程管理逻辑: 当容器内进程退出时,内核会发送 SIGCHLD 信号给 shim,shim 通过waitpid()系统调用回收进程资源。此时,shim 会将该进程关联的文件描述符(如标准输入 / 输出的 FD)关闭。 PID 验证缺陷: 正常情况...
CVE-2019-5736(runc逃逸)
影响版本 runc 1.0.0-rc6 及更早版本 Docker 18.09.2 之前的版本 Kubernetes、LXC、Apache Mesos 等依赖 runc 的容器平台 漏洞原理 CVE-2019-5736 的核心原理是runc 进程在启动容器时未正确隔离自身文件描述符,导致容器内恶意进程可覆盖宿主机的 runc 二进制文件,最终实现容器逃逸并获取宿主机 root 权限。 利用方式: 文件描述符泄露: runc 启动容器时,会通过/proc/self/exe(指向自身二进制文件)创建进程,且未关闭该文件描述符(FD)。容器内的进程可通过/proc/self/fd/访问此泄露的 FD,该 FD 直接指向宿主机上的 runc 二进制文件。 覆盖宿主机 runc: 容器内的恶意进程通过该 FD 以可写方式打开宿主机 runc 文件,循环写入恶意代码。 触发条件:攻击者需控制容器,由于 runc 通常以 root 权限执行,覆盖runc 后,宿主机后续任何调用 runc 的操作(如docker run)都会触发恶意代码,导致攻击者获得宿主机 root 权限。 注:文件描...
Docker基本知识总结
本文是学习《每天五分钟玩转Docker容器技术》的总结。是基础知识学习,熟悉docker容器技术,为了更好的研究docker相关漏洞。 容器知识图谱 容器的基本架构 Docker客户端:Client Docker服务器:Docker daemon Docker镜像:Image Docker仓库:Registry Docker容器:Container 通过docker我们可以方便地在Host上构建和运行容器。最常用的Docker客户端是docker命令。用户也可以通过REST API与服务器通信。 常用的命令 命令分类 命令 功能说明 常用示例 容器生命周期管理 docker run 创建并启动容器 docker run -d -p 80:80 --name mynginx nginx(后台启动 nginx,映射 80 端口) docker start [容器名/ID] 启动已停止的容器 docker start mynginx docker stop [容器名/ID] 停止运行中的容器(优雅关闭) dock...







