360CERT [三六零CERT](javascript:void(0)😉 今天
报告编号:B6-2020-082502
报告来源:360CERT
报告作者:360CERT
更新日期:2020-08-25
0x01 漏洞简述
2020年08月25日,360CERT监测发现qemu
发布了 qemu 内存越界漏洞
的风险通告,该漏洞编号为 CVE-2020-14364
,漏洞等级:严重
,漏洞评分:10
。
qemu 已发布安全补丁
攻击者通过 构造特殊的内存数据
,可造成虚拟机逃逸并执行任意代码
的影响。
对此,360CERT建议广大用户及时将 qemu
升级到最新版本。与此同时,请做好资产自查以及预防工作,以免遭受黑客攻击。
0x02 风险等级
360CERT对该漏洞的评定结果如下
评定方式 | 等级 |
---|---|
威胁等级 | 严重 |
影响面 | 广泛 |
360CERT评分 | 10 |
0x03 漏洞详情
CVE-2020-14364: 内存越界漏洞
该漏洞存在于Qemu USB模块,可造成越界读写,进而实现虚拟机逃逸。
@@ -129,6 +129,7 @@ void usb_wakeup(USBEndpoint *ep, unsigned int stream) static void do_token_setup(USBDevice *s, USBPacket *p) { int request, value, index;+ unsigned int setup_len; if (p->iov.size != 8) { p->status = USB_RET_STALL;@@ -138,14 +139,15 @@ static void do_token_setup(USBDevice *s, USBPacket *p) usb_packet_copy(p, s->setup_buf, p->iov.size); s->setup_index = 0; p->actual_length = 0;- s->setup_len = (s->setup_buf[7] << 8) | s->setup_buf[6];- if (s->setup_len > sizeof(s->data_buf)) {+ setup_len = (s->setup_buf[7] << 8) | s->setup_buf[6];+ if (setup_len > sizeof(s->data_buf)) { fprintf(stderr, "usb_generic_handle_packet: ctrl buffer too small (%d > %zu)\n",- s->setup_len, sizeof(s->data_buf));+ setup_len, sizeof(s->data_buf)); p->status = USB_RET_STALL; return; }+ s->setup_len = setup_len;
根据补丁分析漏洞成因为:
当s->setup_len 获得的值大于sizeof(s->data_buf) 时,返回时没有将s->setup_len的值清零。导致后续在函数do_token_in 或 do_token_out使用s->setup_len时出现越界读写漏洞。
0x04 影响版本
- qemu:qemu
: 全版本
0x05 修复建议
通用修补建议
及时更新官方修复补丁,补丁地址:
XSA-335 - Xen Security Advisories
http://xenbits.xen.org/xsa/advisory-335.html
0x06 时间线
2020-08-13 ISC2020第八届互联网安全大会公开漏洞信息2020-08-24 Qemu官方更新安全补丁2020-08-25 360CERT发布漏洞通告
0x07 参考链接
1、 XSA-335 - Xen Security Advisories
http://xenbits.xen.org/xsa/advisory-335.html
2、 ISC2020: Qemu-kvm和ESXI虚拟机逃逸示例分享
https://isc.360.com/2020/detail.html?vid=108
转载自https://mp.weixin.qq.com/s/9apek5ufRrMFIWFcA-zGww