一款可以检测容器逃逸风险的开源工具 | VeinMind Tools v2.0 技术分享(二)
2023-3-6 19:44:9 Author: mp.weixin.qq.com(查看原文) 阅读量:2 收藏

👉:VeinMind Tools 正式发布 v2.0 版本 | 支持镜像/容器漏洞扫描等多种插件

👉:VeinMind Tools v2.0 技术分享 |(一):容器/镜像漏洞扫描


  • 😈 前言

    • 👻 什么是容器逃逸?

  • 👹 veinmind-escalate 功能介绍

  • 👺 veinmind-escalate 应用场景

    • 👻 逃逸风险自检

  • 🤡 veinmind-escalate 的使用

1前言

什么是容器逃逸?

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

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

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

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

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

2veinmind-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 提权检测,敏感文件权限检测等。

3veinmind-escalate 使用场景

逃逸风险自检

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

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

4veinmind-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


❗❗接下来,我们将分享「报告器 」、「命令行」、「容器扫描」相关内容,文章会在本周内陆续与大家见面❗❗

😎 扫码添加小助手加入用户交流群,不错过每一次干货分享噢 ❗❗

👇 点击阅读原文使用 VeinMind Tools


文章来源: https://mp.weixin.qq.com/s?__biz=MzIzOTE1ODczMg==&mid=2247495211&idx=2&sn=4402c21d912f7ffd4b446b8506c1ca78&chksm=e92cfa88de5b739e2a704571c23db0162113dd8707323f0ce2b9ed0851599312a28d60dbcf34&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh