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. mmap学习

    mmap学习 内存页: Linux是以页为单位来管理物理内存的,一页大小一般等于4096字节.页容量越大,系统中可能存在的内存碎片就越多. mmap将一个磁盘上的文件或者对象映射进内存.文件被映射到多 ...

  2. boost xpressive 例子

    1.效果图: 我有一个wordpress博客,每次在csdn上写完博客,都需要复制到wordpress中,还需要手动修改<pre>和图片地址,比较麻烦,所以做了这个工具. 功能: 1.把C ...

  3. set 类型

    set类型 map 容器是键-值对的集合,好比以人名为键的地址和电话号码. 相反地,set 容器只是单纯的键的集合.map 适用于字典.电话本.商品价目表等类似的模型.set 适用于黑名单.白名单等. ...

  4. android引导页的实现 及跳转到主页面

    第一个activity package com.qualitypicture.activity; import java.util.ArrayList; import java.util.List; ...

  5. [ios2] 开发技巧【转】

    1.NSCalendar用法 -(NSString *) getWeek:(NSDate *)d { NSCalendar *calendar = [[NSCalendar alloc] initWi ...

  6. 分享php工作中遇到的一些探究和技巧【2】

    1 如何定义linux和window通用的文件分隔符号 DIRECTORY_SEPARATOR :  目录分隔符,是定义php的内置常量.在调试机器上,在windows我们习惯性的使用"\& ...

  7. JavaScript构造函数+原型创建对象,原型链+借用构造函数模式继承父类练习

    虽然经常说是做前端开发的,但常常使用的技术反而是JQuery比较多一点.在JavaScript的使用上相对而言少些.尤其是在创建对象使用原型链继承上面,在项目开发中很少用到.所以今天做个demo练习一 ...

  8. 关于angularjs的$state.go()与ui-sref传参问题

    上次转发过关于angularjs回退的文章,回退用到的还是js的回退功能,直接用history.back();实现功能,当时顺便提了下$state.go()有关路由跳转. 那这回就全面解析下$stat ...

  9. Android第二天

    1.从看得见的活动入手 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ...

  10. cocos2d基本类介绍 director/scene/layer/sprite

    [核心类]     导演Director.场景Scene.布景层Layer.精灵Sprite的概念请移步:     导演控制场景,场景控制图层,图层控制精灵,精灵控制动作.     相互之间的关系框架 ...