移动新媒体
中国搜索

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

2015-12-03 16:14:35
相信最近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中物理地址中。相关代码截图如下:

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

图1. 有缺陷的代码

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

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

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

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

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

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

图3.buffer所在的结构体

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

图4.qemu_irq的结构体

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

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

图5. pcnet_update_irq的代码逻辑

三、漏洞危害&利用演示

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

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

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

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

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

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

四、漏洞修复方案

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

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

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

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

编辑: 王璟标签: 函数指针 rmd MarvelTeam 网卡 官方声明
海军第19批护航编队潍坊舰进行实弹射击训练 571名中国公民撤离也门
海军第19批护航编队潍坊舰进行实弹射击训练 571名中国公民撤离也门
假装在英国 从影视剧中的英伦关键词感受英伦风 谢耳朵将在莱纳德婚礼上搅局 盘点美剧婚礼上的麻烦事
争做好命女 心理学家教你学撒娇 超模性感演绎奢华珠宝大片

新闻热搜榜

      李克强出席东亚合作领导人系列会议并访问马来西亚

      详细>>

      世界机器人大会

      详细>>
         
      • 专访世界银行行长

        专访世界银行行长

      • 专访韩国驻华大使

        专访韩国驻华大使

      联系我们

      电话:010-84883646 E-mail:wangsn@chinadaily.com.cn