qemu-kvm 虚拟机逃逸漏洞
(CVE-2020-14364)
8 月 24 日,qemu 官方更新了安全补丁,修复了一处数组越界读写的漏洞,漏洞编号为 CVE-2020-14364:https://access.redhat.com/security/cve/cve-2020-14364
CVE-2020-14364 漏洞可越界读写某一个堆之后 0xffffffff 的内容,根据该漏洞可以很轻松实现完整的虚拟机逃逸。
长亭科技安全研究团队经过研究后,认为该漏洞是 Qemu 历史上最严重的虚拟机逃逸漏洞,影响到绝大部分使用 OpenStack 的云厂商。各云厂商需要对此漏洞引起重视,并尽快修复。
漏洞描述
漏洞存在于 ./hw/usb/core.c 中。因为 libvirt 启动的虚拟机默认会有 usb 设备连接,而任何 usb 接口(如 uhci、ehci、xhci)与 usb 设备(如 usb-tablet、usb-mouse 等)之间交互都会经过 core.c 文件中的 usb_process_one 函数。而 usb_process_one 中可能进入的两个分支 do_parameter 和 do_token_setup 均存在一个问题:在检查最终需要使用的长度前已经提前设置了 s->setup_len:
而且在长度检查未通过的情况下并未将 s->setup_len 改为0,从而导致之后的 do_token_in 与 do_token_out 越界读写了 s->data_buf 这个数组。
影响范围
-
Qemu 1.x 至今。触发该漏洞需要虚拟机至少连接有一个 usb 设备。
解决方案
-
各云厂商可参考以下补丁进行漏洞修复:
https://www.openwall.com/lists/oss-security/2020/08/24/3/1
参考资料
-
https://access.redhat.com/security/cve/cve-2020-14364
-
https://www.openwall.com/lists/oss-security/2020/08/24/2
-
https://www.openwall.com/lists/oss-security/2020/08/24/3
-
https://www.openwall.com/lists/oss-security/2020/08/24/3/1
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论