当前位置: 首页 > news >正文

容器逃逸漏洞

用途限制声明,本文仅用于网络安全技术研究、教育与知识分享。文中涉及的渗透测试方法与工具,严禁用于未经授权的网络攻击、数据窃取或任何违法活动。任何因不当使用本文内容导致的法律后果,作者及发布平台不承担任何责任。渗透测试涉及复杂技术操作,可能对目标系统造成数据损坏、服务中断等风险。读者需充分评估技术能力与潜在后果,在合法合规前提下谨慎实践。

容器逃逸漏洞再linux上比较常见,容器化环境主要部署在linux上,这里来详细介绍容器逃逸漏洞。

容器逃逸漏洞是指攻击者利用容器化环境(如 Docker、Kubernetes、Containerd)的隔离机制缺陷、配置错误或底层内核漏洞,突破容器的资源隔离边界,获取宿主机(Host)的操作权限(通常是 root 权限)的一类高危漏洞。容器的安全依赖于 Linux 内核的隔离技术(Namespace、Cgroups、Capabilities 等),若这些机制被绕过或存在缺陷,就可能导致逃逸。

一、容器逃逸的核心分类

根据逃逸利用的核心路径,可分为 4 大类,每类包含典型漏洞案例和利用逻辑:

1. 利用容器隔离机制缺陷逃逸

容器的隔离依赖 Linux 内核的Namespace(命名空间) 和Cgroups(控制组),若这些机制存在设计缺陷或使用不当,攻击者可直接绕过隔离。

漏洞类型

典型案例

原理说明

影响场景

Namespace 逃逸

CVE-2022-0492(OverlayFS)

OverlayFS(容器常用存储驱动)的copy_up机制存在权限绕过,容器内可修改宿主机文件系统

Docker、Containerd 等使用 OverlayFS 的环境

Cgroups 权限滥用

Cgroups Release Agent 逃逸

攻击者通过修改 Cgroups 的release_agent(释放代理)路径,将其指向容器内的恶意脚本,当 Cgroups 触发释放时,宿主机以 root 执行该脚本

容器拥有CAP_SYS_ADMIN权限(非默认)

PID Namespace 逃逸

宿主机 PID 泄露 + 信号注入

若容器启动时未隔离 PID Namespace(--pid=host),容器内可看到宿主机所有进程,通过向宿主机 root 进程注入信号或代码逃逸

特权容器(Privileged)或 PID Namespace 配置错误

2. 利用 Linux 内核漏洞逃逸

容器运行在宿主机内核之上,若宿主机内核存在未修复的高危漏洞(如 UAF、权限绕过),攻击者可在容器内触发漏洞,突破内核隔离获取宿主机权限。这类漏洞本质是Linux 内核漏洞在容器环境的延伸,但容器环境会降低利用门槛(无需物理机 / 虚拟机访问)。

典型漏洞

内核模块

逃逸逻辑

CVE-2016-5195(Dirty COW)

内存子系统

容器内触发 COW 机制的竞争条件,修改宿主机的只读文件(如/etc/passwd),添加 root 用户

CVE-2021-41773(Apache HTTP Server)

内核 Netfilter

容器内通过恶意请求触发内核缓冲区溢出,执行宿主机内核态代码

CVE-2022-2588(Netfilter UAF)

内核 Netfilter

容器内构造特殊 Netfilter 规则,触发双重释放漏洞,获取宿主机 root 权限

3. 利用容器配置错误逃逸

这类逃逸并非依赖 “漏洞”,而是由于管理员 / 开发者对容器配置的安全选项忽略,导致隔离机制失效,是实际环境中最常见的逃逸场景。

配置错误类型

利用逻辑

典型操作示例

特权容器(Privileged)

启动容器时添加--privileged参数,容器会获得宿主机几乎所有 Capabilities 权限,可直接挂载宿主机文件系统(如/dev/sda1)

容器内执行:mount /dev/sda1 /mnt,直接修改宿主机/mnt/etc/passwd

宿主机目录挂载不当

将宿主机敏感目录(如/etc、/var/run/docker.sock)以rw(可写)权限挂载到容器内,攻击者可修改宿主机文件或控制 Docker 服务

挂载/var/run/docker.sock后,容器内通过docker run启动新特权容器,挂载宿主机根目录

Capabilities 权限过度授予

容器默认仅保留基础 Capabilities(如CAP_NET_RAW),若额外授予CAP_SYS_ADMIN(系统管理权限),攻击者可利用该权限创建宿主机级别的命名空间或修改内核参数

容器内执行:mount -t proc proc /host/proc,读取宿主机进程信息并注入代码

容器镜像使用 root 用户

容器默认以 root 用户运行(非默认,但常见配置),若结合其他缺陷(如文件挂载),可直接操作宿主机文件

镜像中内置恶意脚本,挂载宿主机/root目录后修改~/.bashrc,宿主机 root 登录时触发

4. 利用容器 runtime 漏洞逃逸

容器 runtime(如 RunC、Containerd)是管理容器生命周期的核心组件,若 runtime 本身存在漏洞,攻击者可通过容器内操作篡改 runtime 逻辑,实现逃逸。

典型漏洞

影响组件

逃逸逻辑

CVE-2019-5736(RunC)

RunC

容器内进程可通过/proc/self/exe(指向宿主机的runc二进制)修改runc文件,当宿主机执行runc exec等命令时,触发恶意代码执行

CVE-2023-28840(Containerd)

Containerd

Containerd 的cri组件处理镜像时存在路径遍历,攻击者可通过恶意镜像将文件写入宿主机任意路径(如/etc/cron.d),触发定时任务执行

CVE-2022-24769(Docker Desktop)

Docker Desktop(Windows/macOS)

Windows/macOS 下的 Docker Desktop 存在权限绕过,容器内可访问宿主机的 Windows 文件系统(如C:盘),修改系统配置

二、如何判断容器环境是否存在逃逸风险?

除了 “内核漏洞”(需依赖漏洞扫描工具),其他类型的逃逸风险可通过容器内自查和宿主机检测两步判断,操作门槛低且效果直接:

1. 容器内自查:判断当前容器是否存在逃逸条件

在容器内执行以下命令,检查是否存在配置缺陷或隔离失效:

检查项

执行命令

风险判断标准

1. 是否为特权容器

grep -E '^CapEff:' /proc/self/status 或 capsh --print

若输出包含0000003fffffffff(全 Capabilities),或capsh显示Current: = cap_setpcap,cap_setuid,cap_setgid,...(包含CAP_SYS_ADMIN等高危权限),则为特权容器

2. 宿主机目录挂载情况

mount 或 cat /proc/mounts

若存在挂载/var/run/docker.sock、/etc、/proc/sys、/dev/sda1(宿主机磁盘)等路径,且权限为rw(可写),则存在风险

3. PID Namespace 隔离

ps aux 或 ls /proc

若能看到宿主机进程(如systemd、sshd,PID 通常 < 1000),则 PID Namespace 未隔离(--pid=host配置)

4. Cgroups 配置

ls /sys/fs/cgroup/ 或 cat /sys/fs/cgroup/cpu/release_agent

若release_agent路径可修改(非/bin/true),或 Cgroups 目录权限为w(可写),则存在release_agent逃逸风险

5. runtime 版本漏洞

docker version(容器内若有 docker 客户端)或 cat /proc/1/comm(查看 runtime)

若 RunC 版本 < 1.0.0-rc93(CVE-2019-5736)、Containerd 版本 < 1.6.18(CVE-2023-28840),则存在 runtime 漏洞

2. 宿主机检测:排查整体容器环境的逃逸风险

在宿主机上执行以下操作,发现全局风险配置:

检测目标

执行命令

风险判断标准

1. 特权容器列表

docker ps --format '{{.ID}} {{.Names}} {{.Ports}}' --filter "privileged=true"

输出非空则存在特权容器,需重点排查

2. 危险挂载容器

`docker inspect --format '{{.Id}} {{.Mounts}}' $(docker ps -q)

grep -E '/var/run/docker.sock

/etc

/dev/sda'`

输出非空则存在宿主机敏感目录挂载的容器

3. 内核漏洞排查

uname -r(查看内核版本) + 漏洞数据库匹配

对比 CVE 数据库(如CVE Details),若内核版本包含未修复的高危漏洞(如 CVE-2022-0492、CVE-2021-41773),则存在风险

4. runtime 版本检查

runc -v 或 containerd -v

若版本低于安全版本(RunC ≥1.0.0-rc93,Containerd ≥1.6.18),需立即更新

三、容器逃逸的防御核心

禁用特权容器:除非绝对必要,否则不使用--privileged参数启动容器;若需部分权限,通过--cap-add仅授予最小必要的 Capabilities(如仅授予CAP_NET_BIND_SERVICE而非CAP_SYS_ADMIN)。

谨慎挂载宿主机目录:避免挂载/var/run/docker.sock、/etc、/proc/sys等敏感路径;若必须挂载,使用ro(只读)权限(如-v /host/data:/container/data:ro)。

及时更新组件:定期更新宿主机内核(修复内核漏洞)、容器 runtime(RunC/Containerd)、Docker/Kubernetes 版本(修复配置缺陷和 runtime 漏洞)。

使用非 root 用户运行容器:在 Dockerfile 中通过USER指令指定普通用户,或启动容器时添加--user参数(如docker run --user 1000:1000 ubuntu),降低容器内用户权限。

部署安全监控工具:使用 Falco、Aqua Security 等工具监控容器异常行为(如容器内挂载宿主机磁盘、修改/etc/passwd、执行mount命令),及时告警逃逸尝试。


文章转载自:

http://lLSkAjNG.kfbth.cn
http://cCZIuqwj.kfbth.cn
http://6O3dzxd6.kfbth.cn
http://Zc8yanu4.kfbth.cn
http://7jtZcwqp.kfbth.cn
http://nqEiKgxT.kfbth.cn
http://eWGeBkLn.kfbth.cn
http://NCtingvb.kfbth.cn
http://v1qBmAWC.kfbth.cn
http://bY2UWII7.kfbth.cn
http://AwMI2gDN.kfbth.cn
http://F8CTr8Fn.kfbth.cn
http://ej1emMD5.kfbth.cn
http://ewgrpnfB.kfbth.cn
http://VPrJDqU3.kfbth.cn
http://eudeOoI1.kfbth.cn
http://suU0OEmx.kfbth.cn
http://BloVmbpq.kfbth.cn
http://SuTjFsja.kfbth.cn
http://IgBLQdmR.kfbth.cn
http://hwP3KHLT.kfbth.cn
http://meFVQ3uy.kfbth.cn
http://u0EFUTaA.kfbth.cn
http://yOweTj5n.kfbth.cn
http://xgLi9uKS.kfbth.cn
http://IenuY6YK.kfbth.cn
http://XROreUAD.kfbth.cn
http://1TAHGkd0.kfbth.cn
http://pYKcd28y.kfbth.cn
http://htCPQRew.kfbth.cn
http://www.dtcms.com/a/385049.html

相关文章:

  • 石头科技出海升级:全球电商业财一体化与OMS实践
  • (二)文件管理-文件权限-chmod命令的使用
  • 使用 cAdvisor 监控容器
  • MongoDB 删除集合
  • 【C++】C++中内存管理的利器“智能指针”
  • C++——高并发内存池设计(一)
  • 快速入门HarmonyOS应用开发(一)
  • 深入解析 `pthread_detach`:告别线程的优雅之道
  • Arduino 通讯接口全景解析:从硬件到软件的跨板对话艺术
  • Python3练习题
  • AI GEO 实战:借百度文小言优化,让企业名称成搜索热词
  • 数字图像处理(1)OpenCV C++ Opencv Python显示图像和视频
  • 《拆解Unity开发顽疾:从UI渲染异常到物理交互失效的实战排障手册》
  • 安装和初始化配置Git
  • 蓝牙BLE调制端GFSK高斯滤波查表设计原理
  • PPO算法-强化学习
  • Spring Boot 实战:优雅地将配置文件映射为Java配置类并自动注入
  • ADC转换原理与应用详解
  • 第五章 搭建ZYNQ视频图像处理系统——软件设计
  • Chapter6—原型模式
  • Java字符串操作:从入门到精通
  • 如何科学评估CMS系统性能优化效果?
  • 批量更新和批量插入,内含jdbc工具类
  • 3D地球可视化教程 - 第2篇:夜晚纹理与着色器入门
  • Ajax笔记2
  • DDoS高防IP是什么? DDoS攻击会暴露IP吗?
  • Java 设计模式——原则:从理论约束到项目落地指南
  • 从零开始打造个性化浏览器导航扩展:极简高级风格设计
  • 软件包安装
  • QARM:Quantitative Alignment Multi-Modal Recommendation at Kuaishou