如何进行QEMU USB模块越界读写漏洞CVE-2020-14364通告,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
2020年08月25日,360CERT监测发现 qemu
发布了 qemu 内存越界漏洞
的风险通告,该漏洞编号为 CVE-2020-14364
,漏洞等级:高危
,漏洞评分:8.2
。
qemu 已发布安全补丁
攻击者通过 构造特殊的内存数据
,可造成 虚拟机逃逸并执行任意代码
的影响。
该漏洞在2020年8月13日的ISC2020第八届互联网安全大会上,由360 VulcanTeam团队公开
对此,360CERT建议广大用户及时将 qemu
应用最新修复方案。与此同时,请做好资产自查以及预防工作,以免遭受黑客攻击。
360CERT对该漏洞的评定结果如下
评定方式 | 等级 |
---|---|
威胁等级 | 高危 |
影响面 | 广泛 |
360CERT评分 | 8.2 |
该漏洞存在于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时出现越界读写漏洞。
- qemu:qemu
: 全版本
及时安装修复补丁,补丁地址:
XSA-335 - Xen Security Advisories
http://xenbits.xen.org/xsa/advisory-335.html
Red Hat:
Red Hat Customer Portal
https://access.redhat.com/security/cve/CVE-2020-14364
Debain:
Debain CVE-2020-14364
https://security-tracker.debian.org/tracker/CVE-2020-14364
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。