通告编号:NS-2020-0049
2020-08-25
TAG: | Qemu、虚拟机逃逸、CVE-2020-14364 |
---|---|
漏洞危害: | 攻击者利用此漏洞,可实现虚拟机逃逸及代码执行。 |
版本: | 1.0 |
1
漏洞概述
8 月 24 日,Qemu更新安全补丁修复了一个虚拟机逃逸漏洞(CVE-2020-14364),此漏洞为QEMU USB模拟器中的数组越界读写造成,漏洞位于 ./hw/usb/core.c 中,当程序处理来自客户机的USB数据包时,如果在 do_token_in 与 do_token_out中'USBDevice->setup_len'超过了USBDevice->data_buf[4096],则存在此问题。越界后读取某一个堆之后 0xffffffff 的内容,从而强行终止虚拟化进程,进而实现虚拟机逃逸。
攻击者在拥有云环境虚拟机操作系统权限的情况下,可以利用该漏洞获取宿主机权限,进而攻击虚拟机所在资源池所有租户主机,甚至可通过已开通的内网权限攻击管理域系统。
QEMU(quick emulator)是一套由Fabrice Bellard等人编写的以GPL许可证分发源码的模拟处理器,是众多云厂商底层均涉及的商用组件,此漏洞影响了当前大部分使用 OpenStack 的云厂商,建议相关用户尽快采取措施进行修复。
参考链接:
https://www.openwall.com/lists/oss-security/2020/08/24/2
https://www.openwall.com/lists/oss-security/2020/08/24/3
SEE MORE →
2影响范围
受影响版本
- Qemu 1.x – 5.1.0
注:触发此漏洞需要虚拟机至少连接一个usb设备
3漏洞检测
3.1 版本检测
相关用户可使用以下两种命令查询当前使用的Qemu版本:
kvm -version |
---|
qemu-img -V |
---|
若当前版本在受影响范围内,则可能存在安全风险。
4漏洞防护
4.1 漏洞修复建议
请受影响的云厂商参考以下补丁进行修复:
https://www.openwall.com/lists/oss-security/2020/08/24/3/1
Red Hat:
https://access.redhat.com/security/cve/cve-2020-14364
Debain:
https://security-tracker.debian.org/tracker/CVE-2020-14364
4.2 应急修复方案
以 1.5.3 qemu 版本为例:
1、修改 qemu-1.5.3/hw/usb/core.c 文件中的 do_token_setup函数,添加下图红框中的内容:
修改qemu-1.5.3/hw/usb/core.c文件中的do_parameter函数,添加下图红框中的内容:
2、重新编译 qemu 软件包
此处以 src.rpm 简要介绍如何重新编译 qemu 包。
1)使用 rpm -ivh 命令解压 src.rpm
2)修改代码
2.1) 参考第1节修改如下文件(或以 patch 文件形式体现):
~/rpmbuild/SOURCES/qemu-1.5.3/hw/usb/core.c
2.2) 修改 spec 文件,修改版本号,changlog 描述等内容:
~/rpmbuild/SPEC/qemu-kvm
3)通过rpmbuild -ba ~/rpmbuild/SPEC/qemu-kvm生成rpm包;
3、 升级
在获取到更新后的软件包后,对宿主机的存量 qemu 软件进行升级,并硬重启虚机(若业务不允许中断,则需要研发人员提供热补丁方案)。
END
作者:绿盟科技威胁对抗能力部