近期qemu官方修复了由360gearteam研究员李强报告的一个高危漏洞cve-2017-2615。这是qemu的vga设备cirrusclgd54xxvga中存在一个内存越界访问读写漏洞,影响使用kvm及xen的云平台,可以造成宿主机层面的任意代码执行,威胁程度完全不亚于2015年著名的qemu“毒液”漏洞。
qemu是全球流行的开源虚拟化软件。黑客攻击者一旦利用qemu漏洞控制宿主机,除了利用宿主机强大的性能,可以进行比特币挖矿、密码暴力破解,还可窃取宿主机所有的虚拟机数据甚至进一步的云平台内部横向攻击,危害非常严重。
由于历史原因及软件兼容性的考虑,很长一段时间qemu的默认vga设备是cirrusclgd54xxvga。使用qemu作为用户态模拟的虚拟化软件如kvm,xen(hvm模式)的vga也默认是cirrus。经过实际的版本比对分析,国内主流的公有云平台均受到此漏洞影响,应尽快执行升级修复,目前已经有相关受影响公有云平台启动了修复计划。
漏洞检测
由于该漏洞存在于cirrusvga的模拟中,可以在guest中直接执行lspci(相关的软件包是pciutils)查看vga是否是cirrus,如果是则存在该漏洞,如下图:
修复方案
经过360gearteam安全团队的分析,建议参考以下任一策略进行修复。
1.自行更新qemu版本或更新对补丁进行修复
补丁链接:
2.修改启动虚拟机相关选项,不使用cirrusvga,改用stdvga或者virtiovga
事实上,cirrusvga是90年代早期的设备,存在各种bug和安全问题。详细可以参考qemuvga的维护者gerdhoffmann的这篇文章qemu:usingcirrusconsideredharmful()。在qemu的upstream中,已经准备放弃cirrus显卡模拟。
漏洞细节
该漏洞存在于cirrusvga的bitblt操作中,bitblt是bitblocktransfer的缩写。在vga模拟中,会分配一段内存vram作为vga的显示区域,进行bitblt的拷贝操作时,会在这个内存区域中进行数据的拷贝与传输。
该漏洞即发生在向后拷贝的安全检查中,直接看补丁。
在补丁中,pitch<0时,表示是从vram的后面往前面拷贝数据,min表示的是前面的起始位置。未打补丁之前,会允许读写vram的前面部分,这可能导致读host的信息,也可能导致代码执行,造成宿主机层面代码任意执行。
运行poc(漏洞验证代码)之后,在宿主机可以看到qemu处于一个不正常的状态。
关于360gearteam
360gearteam是360公司一支专注于云安全与互联网核心开源组件安全研究的新锐团队,2016年获qemu、xen、virtualbox、docker等虚拟化软件致谢67次,以及openssl、ntp、firefox等重要开源项目致谢49次,成立不到一年就荣获了上百次漏洞报告致谢。团队在保卫360自身内部业务的同时,也在守护互联网的安全。
相关新闻 2016-07-22 2016-07-26 2016-12-04 2017-08-07 2017-08-24