您的位置: 翼速应用 > 业内知识 > 运维 > 正文

一起探讨docker容器逃逸的相关问题

今天和大家一起探讨一下docker容器逃逸的相关问题,docker容器逃逸指的是攻击者通过劫持容器化业务逻辑或直接控制等方式,已经获得容器内某种权限下的命令执行能力的过程和结果;因为docker使用的是隔离技术,因此容器内的进程无法看到外面的进程,但外面的进程可以看到里面,所以如果一个容器可以访问到外面的资源,甚至是获得了宿主主机的权限,这就叫做“Docker逃逸”。


11.jpg


本文适用于linux7.3系统、docker19.03版、Dell G3电脑。


一起探讨docker容器逃逸的相关问题


容器逃逸之含义


容器逃逸指的是攻击者通过劫持容器化业务逻辑,或直接控制(CaaS等合法获得容器控制权的场景)等方式,已经获得了容器内某种权限下的命令执行能力;


攻击者利用这种命令执行能力,借助一些手段进一步获得该容器所在直接宿主机(经常见到“物理机运行虚拟机,虚拟机再运行容器”的场景,该场景下的直接宿主机指容器外层的虚拟机)上某种权限下的命令执行能力。


因为Docker所使用的是隔离技术,就导致了容器内的进程无法看到外面的进程,但外面的进程可以看到里面,所以如果一个容器可以访问到外面的资源,甚至是获得了宿主主机的权限,这就叫做“Docker逃逸”。


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


●  由内核漏洞引起。


●  由Docker软件设计引起。


●  由特权模式与配置不当引起。


接下来依次对这三种逃逸方法做简单说明。


1、由于内核漏洞引起的逃逸


因为Docker是直接共享的宿主主机内核,所以当宿主主机的内核存在安全漏洞时会一并影响Docker的安全,导致可能会造成Docker逃逸。具体流程如下:


●  使用内核漏洞进入内核上下文


●  获取当前进程的task struct


●  回溯task list 获取pid = 1的task struct,复制其相关数据


●  切换当前namespace


●  打开root shell,完成逃逸


2、由于Doker软件设计引起的逃逸


比较典型的例子是Docker的标准化容器执行引擎----runc。Runc曾在2019年2月被爆出来过一个Docker逃逸漏洞CVE-2019-5736。其漏洞原理是,Docker、Containerd或其他基于runc的容易在运行时存在安全漏洞,攻击者可以通过特定的容器镜像或者exec操作获取到宿主机runc执行文件时的文件句柄并修改掉runc的二进制文件,从而获取到宿主机的root执行权限,造成Docker逃逸。


3、由于特权模式+目录挂载引起的逃逸


这一种逃逸方法较其他两种来说用的更多。特权模式在6.0版本的时候被引入Docker,其核心作用是允许容器内的root拥有外部物理机的root权限,而此前在容器内的root用户只有外部物理机普通用户的权限。


使用特权模式启动容器后(docker run --privileged),Docker容器被允许可以访问主机上的所有设备、可以获取大量设备文件的访问权限、并可以执行mount命令进行挂载。


当控制使用特权模式的容器时,Docker管理员可通过mount命令将外部宿主机磁盘设备挂载进容器内部,获取对整个宿主机的文件读写权限,此外还可以通过写入计划任务等方式在宿主机执行命令。


除了使用特权模式启动Docker会引起Docker逃逸外,使用功能机制也会造成Docker逃逸。Linux内核自版本2.2引入了功能机制(Capabilities),打破了UNIX/LINUX操作系统中超级用户与普通用户的概念,允许普通用户执行超级用户权限方能运行的命令。例如当容器以--cap-add=SYSADMIN启动,Container进程就被允许执行mount、umount等一系列系统管理命令,如果攻击者此时再将外部设备目录挂载在容器中就会发生Docker逃逸。


关于docker容器逃逸的相关问题就讲解到这里,翼速应用平台内有更多相关资讯,欢迎查阅!

我来说两句

0 条评论

推荐阅读

  • 响应式布局CSS媒体查询设备像素比介绍

    构建响应式网站布局最常见的是流体网格,灵活调整大小的站点布局技术,确保用户在使用的幕上获得完整的体验。响应式设计如何展示富媒体图像,可以通过以下几种方法。

    admin
  • 提升网站的性能快速加载的实用技巧

    网站速度很重要,快速加载的网站会带来更好的用户体验、更高的转化率、更多的参与度,而且在搜索引擎排名中也扮演重要角色,做SEO,网站硬件是起跑线,如果输在了起跑线,又怎么跟同行竞争。有许多方法可提升网站的性能,有一些技巧可以避免踩坑。

    admin
  • 织梦CMS TAG页找不到标签和实现彩色标签解决方法

    织梦cms是我们常见的网站程序系统的一款,在TAG标签中常常遇到的问题也很多。当我们点击 tags.php 页的某个标签的时候,有时会提示:“系统无此标签,可 能已经移除!” 但是我们检查程序后台,以及前台显示页面。这个标签确实存在,如果解决这个问题那?

    admin
  • HTML关于fieldset标签主要的作用

    在前端开发html页面中常用的标签很多,今天为大家带来的是关于HTML中fieldset标签主要的作用说明,根据技术分析HTML

    admin

精选专题