欢迎访问Sunbet,Sunbet是欧博Allbet的官方网站!

首页Sunbet_新闻事件正文

2020年Pwn2Own中VMware虚拟机逃逸最新UAF漏洞分析(CVE-2020-3947)

e6e9fdb1a932f3282020-04-0730漏洞

自2016年在Pwn2Own引入虚拟化软件以来,guest-to-host 虚拟机逃逸漏洞一直是比赛的亮点,今年的比赛也不例外。全年,其他guest-to-host 虚拟机逃逸漏洞也都通过ZDI计划进行。实际上,VMware 在今年比赛之前一周发布了针对此漏洞的补丁程序。在此文章中,我们研究了CVE-2020-3947,该漏洞由一位匿名研究人员于12月下旬提交给ZDI程序(ZDI-20-298)。该漏洞影响VMware Workstation的DHCP服务器组件,并且可能允许攻击者从guest操作系统上提升特权并在host操作系统上执行代码。

 https://www.vmware.com/security/advisories/VMSA-2020-0004.html
 
 https://www.zerodayinitiative.com/advisories/ZDI-20-298/

0x01 动态主机配置协议(DHCP)

动态主机配置协议(DHCP)用于通过在DHCP客户端和服务器之间交换DHCP消息来动态分配和管理IP地址。DHCP消息包括DHCPDISCOVER,DHCPOFFER,DHCPRELEASE和其他一些消息

所有DCHP消息均以以下通用头结构开头:

2020年Pwn2Own中VMware虚拟机逃逸最新UAF漏洞分析(CVE-2020-3947)  漏洞 第1张

图1-DHCP标头结构

该选项 DHCP消息的字段包含序列的选项字段。

选项字段的结构如下:

2020年Pwn2Own中VMware虚拟机逃逸最新UAF漏洞分析(CVE-2020-3947)  漏洞 第2张

图2-选项字段结构

所述optionCode字段定义选项的类型。对于DHCP消息类型和客户端标识符选项,optionCode的值分别为0x35和0x3d 。

DHCP消息必须包含一个DHCP消息类型选项。对于DHCP消息类型选项,optionLength字段的值为1,而optionData字段指示消息类型。值1表示DHCPDISCOVER消息,而值7表示DHCPRELEASE消息。这是对该漏洞很重要的两种消息类型。客户端广播DHCPDISCOVER以获取IP地址,然后客户端发送DHCPRELEASE放弃IP地址。

0x02 漏洞分析

在VMWare中,vmnetdhcp.exe模块为guest计算机提供DHCP服务服务,此启动项作为Windows服务安装。当反复向易受攻击的DHCP服务器发送DHCPDISCOVER消息和随后的DHCPRELEASE消息时,就会出现攻击情况。

在处理DHCPRELEASE消息期间,DHCP服务器调用vmnetdhcp! supersede_lease(vmnetdhcp+0x3160)。supersede_lease。然后,该函数将数据从一个结构复制到另一个结构。这个结构包含诸如已分配的客户端IP地址,客户端硬件地址,期限,状态等信息。

完整的结构如下:

2020年Pwn2Own中VMware虚拟机逃逸最新UAF漏洞分析(CVE-2020-3947)  漏洞 第3张

如何对Android系统中的应用软件进行渗透测试

开发应用程序时,必须使应用程序尽可能安全,尤其是在处理敏感的用户信息时。要确定应用程序安全性的薄弱环节,最好由移动安全专家对其进行渗透测试。 在本文的示例中,我们将使用OkHttp,因为它是一个完善的库,并且是Android社区中最受欢迎的库。另外,在这篇文章中,我们将集中讨论网络,特别是TLS协议,以及在连接到特定web服务时如何使应用程序尽可能安全的技巧。 TLS连接 如今,大多数应用程序都与某种Web服务进行通信。因此,拥有一个安全的连接是非常重要的。 最坏的情况是,应用程序使用HTTP连接,而没有传输层安全(TLS)协议。它将不可避免地失败,因为你的数据将以纯文本的形式传输。因此,非常容易跟踪。TLS是加密通信的核心部分,它使HTTPS调用安全且经过身份验证。 尽管它基于SSL 3.0,但你会

图3-结构

对于此漏洞,uid和uid_len字段很重要。UID字段指向从包含字符串的数据的缓冲器optionData所述的客户端标识符的选项,所述uid_len*字段指示该缓冲区的大小。

supersede_lease首先检查由源和目标的各自uid字段指向的字符串数据是否相等。如果这两个字符串匹配,则该函数释放由源的uid字段指向的缓冲区。然后,supersede_lease调用write_lease(vmnetdhcp+016e0),并将目标租约作为参数传递,以写入内部表。

2020年Pwn2Own中VMware虚拟机逃逸最新UAF漏洞分析(CVE-2020-3947)  漏洞 第4张

图4 –比较uid字段

2020年Pwn2Own中VMware虚拟机逃逸最新UAF漏洞分析(CVE-2020-3947)  漏洞 第5张

图5-释放uid字段

在易受攻击的情况下,这意味着当服务器重复收到DHCPDISCOVER消息和DHCPRELEASE消息时,源结构和目标结构的各自uid字段实际上指向同一内存位置,该supersede_lease功能不检查这个条件。结果,当它释放源的uid字段指向的内存时,目标的uid指针将变为挂起指针。最终,当write_lease访问目标的uid字段时,将出现UAF漏洞条件。

2020年Pwn2Own中VMware虚拟机逃逸最新UAF漏洞分析(CVE-2020-3947)  漏洞 第6张

图6-触发漏洞

0x03  漏洞补丁

VMware使用VMSA-2020-004修复了此漏洞以及两个严重性较轻的漏洞,CVE-2020-3947的补丁有一项更改:supersede_lease。

 https://www.vmware.com/security/advisories/VMSA-2020-0004.html

补丁比较supersede_lease在VMnetDHCP.exe版本15.5.1.50853与15.5.2.54704版本如下:

2020年Pwn2Own中VMware虚拟机逃逸最新UAF漏洞分析(CVE-2020-3947)  漏洞 第7张

图7-BinDiff补丁比较

在supersede_lease的修补版本中,在执行源和目标的各个uid字段之间的字符串比较之后,它将执行新的检查,以查看各个uid字段是否实际上在引用同一缓冲区。如果是,则该函数跳过对free的调用。

由于没有列出解决方法,因此确保免受此漏洞影响的唯一方法是打补丁。

本文翻译自:https://www.zerodayinitiative.com/blog/2020/4/1/cve-2020-3947-use-after-free-vulnerability-in-the-vmware-workstation-dhcp-component