0x01 容器逃逸简介

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

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

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

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

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

0x02 Veinmind-escape 功能介绍

Veinmind-escape插件支持对指定容器或镜像进行逃逸风险检测。目前支持的检测风险点如下:

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

    0x03 Veinmind-escape 使用场景

    逃逸风险自检

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

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

0x04 Veinmind-escape 实战展示

  1. 检查本地某个镜像有无逃逸风险
./veinmind-escape scan image [imageID/imageName]

image alt

  1. 检查本地所有镜像有无逃逸风险
./veinmind-escape scan image

image alt

  1. 检查本地某个容器有无逃逸风险
./veinmind-escape scan container [containerID/containerName]

image alt

  1. 检查本地所有容器有无逃逸风险
./veinmind-escape scan container

image alt

0x05 在线使用

如果需要更方便地使容器逃逸检测功能,请前往 牧云·云原生安全平台,开通团队版。

results matching ""

    No results matching ""