关于开源:分享一款可以检测容器逃逸风险的开源工具

4次阅读

共计 2173 个字符,预计需要花费 6 分钟才能阅读完成。

  • 1、前言

    • 什么是容器逃逸?
  • 2、veinmind-escalate 性能介绍
  • 3、veinmind-escalate 应用场景
  • 逃逸危险自检
  • 4、veinmind-escalate 的应用

    • (1)查看本地某个镜像有无逃逸危险。
    • (2) 查看本地所有镜像有无逃逸危险。
    • (3) 查看本地某个容器有无逃逸危险。
    • (4) 查看本地所有容器有无逃逸危险。
  • 5、VeinMind Tools

​1、前言

什么是容器逃逸?

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

其中,每一个容器都领有一个独立的过程运行空间,现实状况下,容器中的过程只能在该容器的过程运行空间中运行。若容器中存在「有歹意过程脱离容器」的过程运行空间,继而对宿主机或其余容器开展攻打,这种景象被称为容器逃逸。


目前产生逃逸的起因总共有三种:
1. 由内核破绽引起。
2. 由 docker 软件设计引起。
3. 由特权模式与配置不当引起。


基于上述三种产生逃逸的起因,veinmind-tools 收集了每种逃逸起因对应的逃逸细节,提取并整合其逃逸原理及形式,并据此 制订了齐备详尽的平安检测规定以实现对于容器以及镜像的逃逸危险检测 ,旨在防止因为容器逃逸所导致的进一步侵害。在此基础上,veinmind-tools 我的项目 增加了一个新的插件,veinmind-escalate

2、veinmind-escalate 性能介绍

veinmind-escalate 插件反对对指定 容器或镜像进行逃逸危险检测

目前反对的检测危险点如下
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-escalate 插件通过查看 docker 配置文件实现对于 docker remote api 逃逸危险的检测。防止因为 docker remote api 未受权拜访导致的逃逸危险。
5. 不平安的挂载:查看指标容器的挂载目录,查看是否有不平安的文件或目录被挂载进容器。防止因为某些敏感文件 / 目录被挂载导致的逃逸危险。目前反对检测的挂载文件 / 目录包含: /、/lxcfs、/etc、/proc、/var、/root 等。
6. 容器内提权:因大多数容器逃逸伎俩可能胜利的前提是「容器内的用户为 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


5、VeinMind Tools

点击应用 VeinMind Tools(问脉社区版):https://github.com/chaitin/veinmind-tools

正文完
 0