观点

更多

2个月零7天后 官方公布了这枚高危漏洞(附漏洞详解)

关键词:

发表于2016-11-12 19:47:32 0 0
可能正是因为影响巨大,在360 Marvel Team 9月22日提交该漏洞后并没有得到及时回应,直到11月30日,即2个月零7天后,qemu官方才正式将其公开。
              相信最近amazon,阿里云等云供应商都已经收到了xen官方的CVE-2015-7504漏洞通知邮件(http://lists.xen.org/archives/html/xen-devel/2015-11/msg03351.html 或者 http://seclists.org/oss-sec/2015/q4/405 ),在这封邮件中,官方声明:这枚编号为CVE-2015-7504的高危虚拟化安全漏洞可同时影响KVM和XEN两个平台。经证实,黑客利用这个漏洞不但可以偷取到重要信息,甚至可以从一台虚拟机的普通用户发起攻击,控制宿主机,最终控制整个云环境的所有用户。并且,与之前披露出的大部分漏洞不同,该漏洞溢出位置非常精妙,可以轻松使黑客控制代码流程,可以说,这是一枚上等的高危虚拟化安全漏洞。也可能正是因为影响巨大,在360 Marvel Team 9月22日提交该漏洞后并没有得到及时回应,直到11月30日,即2个月零7天后,qemu官方才正式将其公开。

  一、什么是pcnet


  QEMU软件中,实现了对大量网卡的模拟,如pcnet,rtl8139,ne2000,eepro100,e1000等,通过组件满足虚拟机用户对各种网卡的需求。网卡相关的漏洞也发现了很多,如之前我们发现的e1000网卡的漏洞,就是在数据报接收过程中出现的代码问题引起的。


  pcnet是虚拟化软件QEMU中实现AMD PCNET网卡功能模拟的组件,相关的代码实现位于/hw/net/pcnet.c中。


  在qemu软件中使用pcnet网卡,需要如下的命令行进行配置:


  qemu-system-x86_64 centos-6.5-x64.img -m 1024 - net nic,model=pcnet -net user


  二、漏洞原理分析


  了解了pcnet的基础知识,再来聊聊CVE-2015-7504漏洞原理。我们前面已经说到,该漏洞利用时可以直接控制代码执行路径,那么它是怎么做到的呢?


  首先我们来看漏洞触发过程,该漏洞发生在pcnet网卡模块的接收数据包的过程中,相关函数pcnet_receive的执行逻辑:首先检测CSR_DRX(s),CSR_STOP(s),CSR_SPND(s),size,CSR_LOOP(s),s->looptest这些值是否符合边界要求,确定函数是否继续处理。并且如果buf太小,则把它扩充到MIN_BUF_SIZE,之后检测是否要接受此包。最终把数据拷到rmd中物理地址中。相关代码截图如下: 



       

图1. 有缺陷的代码


  在上述代码中,我们可以看到,在实现数据包buffer操作的逻辑时,程序员出现了一个明显的错误:未判断数据包的长度是否已经等于buffer长度。另外,在pcnet.c的另一个函数pcnet_transmit中也有对缓冲区位置和数据包长度的处理,截图如下:  



       

图2. pcnet_transmit函数中进行缓冲区相关的处理


  如果数据包长度临近缓冲区长度(4096)时,由于代码逻辑会自动添加4个字节的crc值,因此就会发生缓冲区溢出。


  巧合的是溢出了buffer之后的四个字节恰好会覆盖一个结构体指针。如图所示: 



       

图3.buffer所在的结构体 



       

图4.qemu_irq的结构体


  在溢出发生之后,代码流程进入pcnet_update_irq函数中,该函数经过层层调用,最终使用了irq->handler作为函数指针!!!而该irq的结构体指针我们可以对其进行控制,因此就完成了对代码逻辑的劫持。 



       

图5. pcnet_update_irq的代码逻辑


  三、漏洞危害&利用演示


  CVE-2015-7504被xen和qemu社区官方安全团队定义为高危漏洞,一旦被黑客恶意利用,可以实现虚拟机逃逸攻击。在成功利用该漏洞发动攻击之后,黑客进而可以控制宿主机执行任意指令,后果十分可怕。 



       

 图6. xen官方对该漏洞内容和危害的描述


  Marvel Team在演示环境中(64位centos 系统)完成了对该漏洞的完美利用。在该视频中,黑客通过虚拟机漏洞实现代理功能,控制虚拟机所在宿主机,并且在宿主机中执行任意指令。


  实验视频地址云盘:http://yunpan.cn/c3wGdEInx7LMC 访问密码 5299


  (观看视频时,请注意“被攻击的宿主机”和“黑客主机”两个标签页之间的切换。另外视频演示的攻击方式,绕过了目前大部分针对宿主机和虚拟机的防护手段,可谓是相当残暴。)


  四、漏洞修复方案


  xen官方在MarvelTeam的帮助下提供了对该漏洞的修复补丁,截图如下: 



       

图7. 官方公布的补丁信息


  在该补丁文件中,对pcnet_receive和pcnet_transmit两个函数的缓冲区处理都进行了修正,完美修复了之前存在的漏洞。(财经新闻网)


0条评论发表评论

热门文章

京ICP备11027698号 CopyRight 2010-2015 All Rights Reserved 

公司旗下网站:www.sendto.cn(公司网站)www.jiuye.net(就业数字图书馆)

合作单位:北京交通大学出版社