云安全提醒:Docker for windows 版本出现远程控制漏洞
扫描二维码
随时随地手机看文章
Docker已修复了一个漏洞,该漏洞可使攻击者使用其服务获得对Windows系统的控制。安全咨询公司Pen Test Partners的研究员Ceri Coburn发现了这个漏洞,这使Docker for Windows暴露在特权提升的环境中。
Docker是一个容器系统,管理员可以在自己的环境中运行应用程序。容器有点像虚拟机,但它们不是在软件中重新创建整个操作系统,而是共享主机操作系统的许多底层资源。这使得它们比虚拟机(vm)更小、更灵活。
Windows下运行的两个Docker组件对此漏洞很重要:Docker Desktop 服务(DDS)和Docker Desktop for Windows(DDW)。DDS在后台运行,而DDW是允许管理员管理其容器的控制面板。
当DDW打开时,它会在Windows中生成许多支持容器管理的子进程。DDS使用称为管道的Windows机制连接到这些子进程,该机制允许不同进程相互通信。
DDS在Windows中的系统帐户下运行,该帐户是一个非常高的权限帐户。攻击者获得系统帐户的访问权限,即可获取重要的密钥。
Pen Test Partners发现的漏洞使用名为模拟的Windows功能。它允许进程的服务器端模拟客户端。这是因为客户端进程通常需要服务器进程以它们的名义执行系统任务。
并非所有帐户都具有此模拟权限。根据Coburn的说法,在Windows服务帐户下启动的任何东西都可以。
这意味着可以使系统在服务帐户下启动进程的攻击者可以利用其系统帐户权限操纵DDS。如果进程使用了DDS通常会连接到的名称,那么在建立连接之后,它可以删除自己的凭据,而使用DDS凭据。科伯恩解释道:
连接docker后,我们模拟连接客户端(即系统),并使用CreateProcessWithTokenW API启动一个新进程。CreateProcessWithTokenW是一个Win32 API,允许您创建新进程。
Coburn指出,要创建这样的帐户,您需要一个已经破坏了的系统,但他解释说,用户可以通过在IIS(微软的web服务器)中操作易受攻击的web应用程序来进入,IIS很可能运行在同一台计算机上。这将使此漏洞成为一个潜在的有用漏洞,作为链接攻击的一部分,该攻击将多个漏洞串在一起,首先获得立足点,然后提升权限。
根据科伯恩的说法,Docker一开始并没有多大帮助,他说:
最初披露时,Docker甚至否认该漏洞存在。他们的立场是模仿是Windows的一项功能,我们应该和微软谈谈。
不过,他坚持认为,如果开发人员正在开发与命名管道作为客户端进行交互的系统服务,则应关闭模拟功能。Docker拒绝了两次,然后试图在没有模拟权限的帐户下运行概念验证代码,因此Coburn发送了有关如何复制问题的说明。当时,该公司确认了这个bug,并于5月11日在2.3.0.2版中发布了补丁。
这个bug有CVE 2020-11492,在编写本文时被列为“reserved”。