李强 QEMU漏洞之殇

白帽子

2019/03/21 发布于 技术 分类

文字内容
1. QEMU漏洞之殇 李强 奇虎360信息安全部 云安全研究员
2. 关于我  奇虎360信息安全部  漏洞挖掘与利用  QEMU安全研究 -- 目前发现30多个漏洞,已获得14个CVE,剩余仍在处理
3. 目录 QEMU简介 QEMU设备模拟 QEMU漏洞分析 QEMU漏洞挖掘心得
4. QEMU简介
5. QEMU简介 QEMU整体架构
6. QEMU设备模拟 Guest Applications Guest Applications Guest Operating System Guest Operating System Virtual Hardware Virtual Hardware Hypervisor Host Operating System Physical Hardware
7. QEMU设备模拟 QEMU设备模拟  虚拟机中操作系统期待真实的硬件  QEMU模拟各种各样的硬件  网卡,VGA,磁盘等
8. QEMU设备模拟  KVM做转发  虚拟机->QEMU的数据流
9. QEMU设备模拟  QEMU映射一段内存作为模拟设备的BAR->MMIO  QEMU为模拟设备注册端口->PIO  正常的设备驱动通过IO port和MMIO驱动设备  恶意驱动也可以写设备的IO port和MMIO
10. QEMU漏洞分析
11. QEMU漏洞分析 漏洞分布 3% 缓冲区溢出(39%) 3% 5% 越界读写(31%) 5% 死循环(9%) 5% 39% 9% 信息泄露(5%) 空指针引用(5%) 内存泄露(5%) 31% UAF(3%) 算术异常(3%)
12. QEMU漏洞分析 vmxnet3漏洞分析  QEMU漏洞种类繁多  一个设备一般也就2、3种漏洞  vmxnet3有6种不同类型的漏洞(本人独立发现 其中的5个),包括内存泄露,UAF,空指针 引用,死循环,信息泄露,缓冲区溢出
13. CVE-2016-2841 QEMU漏洞分析 vmxnet3设备模拟  driver提供一块shared memory的物理地址给 vmxnet3网卡  vmxnet3网卡从shared memory取数据,执行各 种命令
14. CVE-2016-2841 CVE-2016-2841 QEMU漏洞分析 内存泄露  漏洞发现:内存泄露是 QEMU中很常见的bug  漏洞成因:激活设备时未对 当前设备的状态进行判断, 能够多次激活设备  漏洞危害:内存泄露,耗尽 宿主机内存
15. CVE-2016-2841 CVE-2016-2841 QEMU漏洞分析 UAF  漏洞发现:意外发现,将 vmxnet3反激活之后,发现进程 崩溃  漏洞成因:在将设备反激活之 后,相关数据结构已经free掉 了,但是依然可以写bar 0空间, 从而使用释放掉的数据结构  漏洞危害:代码执行,QEMU进 程崩溃
16. CVE-2016-2841 CVE-2016-2841 QEMU漏洞分析 空指针引用  漏洞发现:这里本质上是一 个整数溢出漏洞  漏洞成因:没有对 max_frags做检查,导致了 g_malloc(0),p->raw赋值 为NULL  漏洞危害:QEMU进程崩溃
17. CVE-2016-2841 QEMU漏洞分析 死循环  漏洞发现:典型的QEMU 漏洞之一,循环处理网络 数据包、SCSI和USB主控 处理请求帧都经常存在这 类问题  漏洞成因:未考虑 fragment_len=0的情况, 会导致more_frags不变, 循环条件不会改变  漏洞危害:会导致QEMU 虚拟机CPU占用率长时间 保持在100%,拒绝服务
18. CVE-2016-2841 QEMU漏洞分析 信息泄露  漏洞发现:QEMU常见 漏洞之一,QEMU向虚 拟机写入数据  漏洞成因:txcq_descr 没有完全初始化就写入 虚拟机内存  漏洞危害:泄露QEMU 栈上的数据,能够用于 ASLR的绕过
19. CVE-2016-2841 QEMU漏洞分析 堆溢出  漏洞发现:网卡在处理 数据包的过程中,会使 用数据包中的数据  漏洞成因:l3_hdr>iov_len从数据包中解 析而来,表示IP头大 小,未做大小判断,在 iov_bo_buf,最后一个 参数会导致整数下溢  漏洞危害:代码执行, QEMU进程崩溃
20. CVE-2016-2841 CVE-2016-2841 QEMU漏洞挖掘心得 代码审计 发现漏洞
21. CVE-2016-2841 CVE-2016-2841 QEMU漏洞挖掘心得  太阳底下无新事,QEMU 漏洞与其他软件漏洞并没 有什么区别  熟悉数据流  熟悉漏洞类型
22. CVE-2016-2841 CVE-2016-2841 结语  虚拟机逃逸相关:CVE-2016-4439  致谢:蔡玉光,胡智斌  Q&A
23. 谢 谢