freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

分享:一款可以检测容器逃逸风险的开源工具
2023-02-17 11:17:19
所属地 浙江省
  • 前言

    • 什么是容器逃逸?

  • veinmind-escalate 功能介绍

  • veinmind-escalate 应用场景

    • 逃逸风险自检

  • veinmind-escalate 的使用

​1、前言

什么是容器逃逸?

所谓容器技术,是在操作系统层实现虚拟化,容器内所有进程都依赖于宿主机内核,相比于传统虚拟化技术(如 VMware 等)更加轻量级。同时容器利用操作系统自身机制如 Namespace和 CGroup等,提供了相对独立的应用程序运行环境和资源控制。

其中,每一个容器都拥有一个独立的进程运行空间,理想情况下,容器中的进程只能在该容器的进程运行空间中运行。若容器中存在「有恶意进程脱离容器」的进程运行空间,继而对宿主机或其他容器展开攻击,这种现象被称为容器逃逸

目前产生逃逸的原因总共有三种:

  1. 由内核漏洞引起。
  2. 由 docker 软件设计引起。
  3. 由特权模式与配置不当引起。

基于上述三种产生逃逸的原因,veinmind-tools 收集了每种逃逸原因对应的逃逸细节,提取并整合其逃逸原理及方式,并据此制定了完备详尽的安全检测规则以实现对于容器以及镜像的逃逸风险检测,旨在避免由于容器逃逸所导致的进一步损害。在此基础上,veinmind-tools 项目添加了一个新的插件,veinmind-escalate

2、veinmind-escalate 功能介绍

veinmind-escalate 插件支持对指定容器或镜像进行逃逸风险检测。

目前支持的检测风险点如下:

  1. CVE 检测:将容器的相关特征(如内核版本号等)进行提取,并将其与已知的可用于逃逸的 CVE 漏洞的特征进行比对。检测目标容器是否存在某些已知的可用于逃逸的 CVE 漏洞。避免由于 CVE 漏洞导致的逃逸风险。
  1. 特权模式检测:通过读取目标容器的 CapEff 值并进行比对,检测目标容器是否以特权模式启动。避免由于特权模式启动容器带来的逃逸风险。
  1. 不安全的 linux Capability:通过读取目标容器的 CapEff 值,并将其解析后进行比对,检测目标容器是否被赋予了某些不安全的 Capability。避免由于不安全的 Capability 造成的逃逸风险。目前支持检测的 Capability 包括:DAC_READ_SEARCH、SYS_MODULE、SYS_PTRACE、SYS_ADMIN 等。
  2. docker remote api 未授权:docker remote api 是一个取代远程命令行界面(rcli)的 REST API。docker remote api 如配置不当可导致未授权访问,攻击者利用 docker client 或者 http 直接请求就可以访问这个 API。veinmind-escalate 插件通过检查 docker 配置文件实现对于 docker remote api 逃逸风险的检测。避免由于 docker remote api 未授权访问导致的逃逸风险。
  3. 不安全的挂载:检查目标容器的挂载目录,查看是否有不安全的文件或目录被挂载进容器。避免由于某些敏感文件/目录被挂载导致的逃逸风险。目前支持检测的挂载文件/目录包括: /、/lxcfs、/etc、/proc、/var、/root等。
  4. 容器内提权:因大多数容器逃逸手段能够成功的前提是「容器内的用户为 root 用户」,所以 veinmind-escalate 插件提供了容器内的提权风险检测。目前支持的提权检测方式包括:sudo 提权检测,suid 提权检测,敏感文件权限检测等。

3、veinmind-escalate 使用场景

逃逸风险自检

当攻击者通过 sql 注入、文件上传、RCE 等攻击手段获取到某个容器的权限时,如果该容器存在容器逃逸问题,则攻击者可以通过一定手段获得宿主机的权限,并且通常情况下,这个权限是宿主机的高权限。在获取到宿主机的高权限之后,攻击者可以窃取宿主机上存放的敏感数据,控制宿主机上运行的所有容器和存储的所有镜像。甚至还可以通过宿主机对其他和宿主机在同一网段下的其他主机实施入侵。

因此,容器逃逸是一个十分严重的安全问题。为了避免出现这类安全问题,使用者可以通过 veinmind-escalate 插件提前进行自检,该插件会报告出可能存在的逃逸风险。根据此报告,相关人员可以对这些风险问题进行修复,防止出现容器逃逸的问题。

4、veinmind-escalate 的使用

  1. 检查本地某个镜像有无逃逸风险。

./veinmind-escalate scan image [imageID/imageName]

2. 检查本地所有镜像有无逃逸风险。

./veinmind-escalate scan image

3. 检查本地某个容器有无逃逸风险。

./veinmind-escalate scan container [containerID/containerName]

4. 检查本地所有容器有无逃逸风险。

./veinmind-escalate scan container


https://github.com/chaitin/veinmind-tools


# 容器安全 # 开源工具 # 云原生安全 # 容器逃逸
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录