0x00背景

安全娱乐圈媒体Freebuf对该漏洞的有关报道:

提供的POC没有触发崩溃,在MJ0011的博客给出了修改后可以使qemu崩溃的poc。详见:

http://blogs.360.cn/blog/venom-%E6%AF%92%E6%B6%B2%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90%EF%BC%88qemu-kvm-cve%E2%80%902015%E2%80%903456%EF%BC%89/

0x01漏洞重现

注:qemu的用户交互性体验相对于vmware来说,极差

a.Linux 的qemu虚拟机

环境:

Win 10 物理机 + qemu-system-i386.exe (2.0.50) + CentOS 6.3虚拟机

Linux 因为在用户层就可以直接操作端口,所以在linux虚拟机中将MJ给的POC保存成一个C文件,用gcc编译后运行,就可以看到qemu崩溃了:

b.Windows的qemu虚拟机

环境:

Win 10 物理机 + Qemu Manager 7.0 + WinXP虚拟机

Windows因为不可以在用户层直接和端口操作,需要借助驱动,所以就存在了和物理机的交互:驱动加载工具和编译好的驱动程序。

测试的过程中,使用了Qemu Manager 7.0来建立共享文件夹。在物理机设置一个共享文件夹,然后就可在windows虚拟机的网上邻居访问了:

编写的驱动关键代码,换成对应对端口操作的函数就好了:

物理机中用windbg附加到qemu进程后,在xp虚拟机中加载驱动后,就可以观察到windbg捕获到异常了:

注:如果不用windbg附加到qemu.exe进程的话,那么看到的是qemu mannager把虚拟机给关了。

0x02分析

MJ的文章对漏洞成因进行了较为详细的分析了,具体的情况可以查看其blog。下面进行简要的说明:

qemu接受到FIFO命令后,会先调用fdctrl_write_data 函数,该函数会确保fdctrl的状态是可写入的,才会进行下一步操作。

outb(0x8e,0x3f5)对应的函数为fdctrl_handle_drive_specification_command:

因为 fdctrl->fifo[fdctrl->data_pos - 1] 是我们可控的,加上fdctrl ->data_len =6,不可能大于7,所以可以绕过这两个对fdctrl写入状态的改写,其状态还是可以被写入的。

而接受写入数据buffer fdctrl->fifo的大小为0x1000 bytes,poc中对其进行不断的写入,也就发生了越界写了。

by:会飞的猫
转载请注明:http://www.cnblogs.com/flycat-2016

qemu毒液漏洞分析(2015.9)的更多相关文章

  1. CVE-2014-1767 漏洞分析(2015.1)

    CVE-2014-1767 漏洞分析 1. 简介 该漏洞是由于Windows的afd.sys驱动在对系统内存的管理操作中,存在着悬垂指针的问题.在特定情况下攻击者可以通过该悬垂指针造成内存的doubl ...

  2. PHPCMS \phpcms\modules\member\index.php 用户登陆SQL注入漏洞分析

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述2. 漏洞触发条件 0x1: POC http://localhost/p ...

  3. Java反序列化漏洞分析

    相关学习资料 http://www.freebuf.com/vuls/90840.html https://security.tencent.com/index.php/blog/msg/97 htt ...

  4. CVE-2016-10190 FFmpeg Http协议 heap buffer overflow漏洞分析及利用

    作者:栈长@蚂蚁金服巴斯光年安全实验室 -------- 1. 背景 FFmpeg是一个著名的处理音视频的开源项目,非常多的播放器.转码器以及视频网站都用到了FFmpeg作为内核或者是处理流媒体的工具 ...

  5. Intel CPU 漏洞分析

    Intel CPU漏洞分析报告 预备知识 存储分级 由于计算机存储分级的特性(第一级:寄存器,第二级:高速缓存,第三级:内存,第四级:磁盘),每一级之间的访问速度差距高达数量级.所以处理器会将用到的数 ...

  6. ref:Java安全之反序列化漏洞分析(简单-朴实)

    ref:https://mp.weixin.qq.com/s?__biz=MzIzMzgxOTQ5NA==&mid=2247484200&idx=1&sn=8f3201f44e ...

  7. 学习笔记 | java反序列化漏洞分析

    java反序列化漏洞是与java相关的漏洞中最常见的一种,也是网络安全工作者关注的重点.在cve中搜索关键字serialized共有174条记录,其中83条与java有关:搜索deserialized ...

  8. 【我的第一个现实漏洞分析】 CVE-2017-17215 华为智能路由器HG532 漏洞分析笔记

    0x00 基本信息 2017.11.27 Check Point团队报告华为 HG532 产品的远程命令执行漏洞(CVE-2017-17215),Mirai的升级版变种中已经使用该漏洞. 华为HG53 ...

  9. Vivotek 摄像头远程栈溢出漏洞分析及利用

    Vivotek 摄像头远程栈溢出漏洞分析及利用 近日,Vivotek 旗下多款摄像头被曝出远程未授权栈溢出漏洞,攻击者发送特定数据可导致摄像头进程崩溃. 漏洞作者@bashis 放出了可造成摄像头 C ...

随机推荐

  1. 使用WCF Data Service 创建OData服务

    使用WCF Data Service 创建OData服务 在 上一章 中,介绍了如何通过 OData 协议来访问 OData 服务提供的资源.下面来介绍如何创建一个 OData 服务.在这篇文章中,主 ...

  2. hdu 4467 Graph

    P. T. Tigris is a student currently studying graph theory. One day, when he was studying hard, GS ap ...

  3. 设置Linux可以查看历史命令的执行时间

    大家都知道Linux平台上,可以通过history命令查看最近所执行过的命令,但history命令默认所显示的只有编号和命令的,只知道命令是最近所执行的,但不知具体执行的日期.时.分.秒,有时给寻找证 ...

  4. Js-Html 前端系列--checkbox

    今天搞全选按钮,设置Checkbox的时候,处于Checked状态但是不显示勾.最后得出解决方案: var c = boxcList.eq(i).attr("checked"); ...

  5. 高可用的池化 Thrift Client 实现(源码分享)

    本文将分享一个高可用的池化 Thrift Client 及其源码实现,欢迎阅读源码(Github)并使用,同时欢迎提出宝贵的意见和建议,本人将持续完善. 本文的主要目标读者是对 Thrift 有一定了 ...

  6. C#Redis列表List

    一.前戏 在Redis中,List类型是按照插入顺序排序的字符串链表.和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素.在插入时,如果该键并不存在,Redis将 ...

  7. bzoj1588: [HNOI2002]营业额统计 splay瞎写

    最近各种瞎写数论题,感觉需要回顾一下数据结构 写一发splay冷静一下(手速过慢,以后要多练练) 用splay是最直接的方法,但我感觉离散一波应该可以做出来(没仔细想过) 现在没有很追求代码优美,感觉 ...

  8. CodeForces 645B Mischievous Mess Makers

    简单题. 第一次交换$1$和$n$,第二次交换$2$和$n-1$,第三次交换$3$和$n-2$.....计算一下就可以了. #pragma comment(linker, "/STACK:1 ...

  9. socket 心跳包机制

    心跳包的发送,通常有两种技术 方法1:应用层自己实现的心跳包  由应用程序自己发送心跳包来检测连接是否正常,大致的方法是:服务器在一个 Timer事件中定时 向客户端发送一个短小精悍的数据包,然后启动 ...

  10. 坚持使用GNU/Linux

    在Windows或Mac OS X下,包括手机上的iOS与Android,应用程序开发得越来越复杂.点下一个按钮,光标转半天,程序在背后做了一堆你不清楚的操作.这不仅仅让你花更 长且不确定的时间等待, ...