甲骨文 VirtualBox高危堆溢出漏洞(CVE-2017-3332)剖析

作者:星期五, 一月 20, 20170
分享:

1月17日,甲骨文公司发布新一期安全补丁修复公告,修复旗下产品安全漏洞,本次补丁更新中,修复了虚拟化产品Oracle  VirtualBox软件的一个高危险漏洞(CVE-2017-3332),并向漏洞发现者360公司 Gear Team团队工程师公开致谢。

公告介绍,Oracle的产品VirtualBox在SVGA显卡模拟中存在堆溢出漏洞,该漏洞能造成拒绝服务和宿主机任意代码执行。在公告中,Oracle对该漏洞危险评分为8.4分,属于风险性较高的漏洞。

%e5%9b%be%e7%89%87-1

桌面虚拟化已经越来越成为IT专业人士的重要助手,他们经常在本地机器运行不同操作系统,比如在Mac电脑上运行专为Windows设计的软件。

对于IT专业人士而言,VMware Workstation和Oracle VirtualBox是创建和运行虚拟机的两个主要选择。Oracle VirtualBox广泛用于对Mac OS X、Solaris或32位Windows主机虚拟化,为用户提供实用的用户界面,简化虚拟机的构建、部署和管理。对于大型的虚拟机,VirtualBox的强大处理功能也毫不逊色,因此受到专业人士的青睐。

360Gear Team团队研究员李强发现,VirtualBox在SVGA显卡模拟中存在堆溢出漏洞,该漏洞能造成拒绝服务和宿主机任意代码执行。2016年12月2日,李强将漏洞报告给Oracle安全团队,该漏洞于今年1月获得修复。

360 Gear Team是360公司一支专注于云安全与互联网核心开源组件安全研究的新锐团队,2016年获QEMU、Xen、VirtualBox等虚拟化软件致谢65次,以及OpenSSL、NTP、Firefox等重要开源项目致谢49次,成立不到一年就荣获了上百次漏洞报告致谢。团队在保卫360自身内部业务安全的同时,也在守护互联网的安全。

时间线:

2017年1月17日正式在Oracle的Critical Patch Updates公布

2017年1月14日邮件通知预公布

2016年12月22日通知漏洞已修复

2016年12月3日Oracle回复确认邮件

2016年12月2日Qihoo 360Gear Team的 Li Qiang 将漏洞报告给Oracle安全团队

具体描述:

在VirtualBox的文件src\VBox\Devices\Graphics\DevVGA-SVGA.cpp中SVGA设备模拟在处理FIFO命令SVGA_CMD_REMAP_GMR2的过程中存在堆溢出漏洞。

%e5%9b%be%e7%89%87-2

左边是存在漏洞的文件,paNewPage64在堆上分配一块内存,大小由pGMR->cMaxPages指定,之后在一个循环中向该内存写入数据,通过pGMR->paDesc[i].numPages控制写入的数据。如果pGMR->cMaxPages比较小,但是pGMR->paDesc[i].numPages又比较大则会造成堆溢出。

进一步分析一下补丁。

首先看看pGMR->cMaxPages的限制。

pGMR->cMaxPages在修补之前可以由guest直接设置,只要长度大于VMSVGA_MAX_GMR_PAGES即可。在补丁之后,我们看到会有一个判断其是否小于pGMR->cbTotal/X86_PAGE_SIZE,这样就保证了pGMR->cMaxPages不会小于一定值。

%e5%9b%be%e7%89%87-3

继续看pGMR->paDesc[i].numPages的限制,在补丁之前,对该值是没有限制的,补丁只有也有一个最大的限制,即assertBreakStmt(desc.numPages <= cMaxPages, rc = VERR_OUT_OF_RANGE)附近。

%e5%9b%be%e7%89%87-4

 

关键词:
分享:

相关文章

写一条评论

 

 

0条评论