距离这个虚拟化层面的漏洞公告发出已有两个多月了,漏洞详情可以查看:

360安全应急响应中心-360发现QEMU严重漏洞 影响国内大部分公有云

简单来说是通过Cirrus VGA操作读取宿主机内存中的内容,对宿主机造成风险。

除了对qemu打Patch的修复方法外,直接使用其他模拟替换Cirrus也是可以解决这个问题的。

事实上,cirrus vga是90年代早期的设备,存在各种bug和安全问题。详细可以参考qemu vga的维护者Gerd Hoffmann的这篇文章qemu:using cirrus considered harmful(https://www.kraxel.org/blog/2014/10/qemu-using-cirrus-considered-harmful/)。在qemu的upstream中,已经准备放弃cirrus显卡模拟。

调研了几家公有云和有项目交集的私有云厂商,仍有大部分没有解决这个问题,私有云尤为严重。

不过,已经开启的云主机/虚拟机 想要更换VGA设备比较复杂,有停机同时意味着停服务的风险,所以大量运行中的实例仍保留有Cirrus:

↑ 国内top3的公有云

基于OpenStack的私有云厂商可以参考以下两种方式较简单的修复:

1. 指定镜像属性修复

只需要在image-upload时或直接image-update 指定这个porperty即可

glance image-upload --property hw_video_model=vga ……
glance image-update --property hw_video_model=vga [image_uuid]

2. 修改nova代码修复

在 libvirt driver 代码中

支持的图形设备有 vga, cirrus, vmvga, xen, qxl

判断逻辑最后,如果没有对镜像显示指定 hw_video_model,则会使用 vedio.type

我们再看看这个video.type

确实为cirrus , 所以我们对此处修改即可:

nova/virt/libvirt/config.py
...
self.type = 'cirrus'
改为
self.type = 'vga'
...

最新的Ocata版本可以适用。

一句话patch :

sed -i "s/self\.type = 'cirrus'/self\.type = 'vga'/g" /usr/lib/python2.7/site-packages/nova/virt/libvirt/config.py
    • 由于 OpenStack 快照也是image形式,第一种方法在 创建云主机快照 -- 通过快照创建云主机 时,也需指定快照文件的 hw_video_model
    • 第二种方法没有上述要求,但在nova代码更新时需要重新修复

OpenStack修复影响宿主机的QEMU漏洞CVE-2017-2615的更多相关文章

  1. QEMU漏洞挖掘

    转载:https://www.tuicool.com/articles/MzqYbia qemu是一个开源的模拟处理器硬件设备的全虚拟化仿真器和虚拟器. KVM(kernel virtual mach ...

  2. 宿主机为linux、windows分别实现VMware三种方式上网(转)

    一.VMware三种方式工作原理1 Host-only连接方式  让虚机具有与宿主机不同的各自独立IP地址,但与宿主机位于不同网段,同时为宿主主机新增一个IP地址,且保证该IP地址与各虚机IP地址位于 ...

  3. 宿主机为linux、windows分别实现VMware三种方式上网(转)

    一.VMware三种方式工作原理1 Host-only连接方式  让虚机具有与宿主机不同的各自独立IP地址,但与宿主机位于不同网段,同时为宿主主机新增一个IP地址,且保证该IP地址与各虚机IP地址位于 ...

  4. 【CI】系列三.宿主机KVM配置及vdi与vmdk格式转换等

    前提:宿主机需要支持虚拟化,如果未打开,则需要重启机器,在bois中打开该项: Ubuntu 及 KVM 相关主要参考官方 https://wiki.ubuntu.com/kvm 另外也可参考该页面: ...

  5. Docker容器内连接宿主机即CentOS的Mysql服务器

    docker的宿主机是虚拟机下的CentOS 博主最近遇到一种情况,从服务器拷贝了一份数据库在宿主机Mysql服务器上,想要用本地的数据库测试自己的代码正确性,但是项目程序都是靠docker一键部署的 ...

  6. cnentos中进行bond网卡配置,一切配置无问题,就是ping不通宿主机

    服务器网口绑定   1. ifcfg-bond0   DEVICE=bond0 ONBOOT=yes IPADDR=192.168.100.64 NETMASK=255.255.255.0   2. ...

  7. 宿主机ping不通虚拟机cenos7

    参考网址1:http://zhidao.baidu.com/link?url=2v3NXGyzPT-XTYwon8PesZLnMg02Ako6nDub3vJiJt4miSmkOA-04xLUqfu9s ...

  8. linux之开发板与宿主机-GDB远程调试

    平台: redhat9.0 下载 gdb-5.3.tar.gz 解压 gdb-5.3.tar.gz: #tar vzxf gdb-5.3.tar.gz 配置文件# ./configure - targ ...

  9. 如何使用数据卷在宿主机和docker容器之间共享文件

    共享宿主机的目录给容器 docker run -i -t -v ~/download:/home/hello python3-env /bin/bash -v  表示创建一个数据卷并挂载到容器里 ~/ ...

随机推荐

  1. Kafka-4614问题复盘 (MappedByteBuffer未关闭导致慢磁盘访问)

    很早之前就想动笔就这个kafka bug总结一番了,只是这个问题既不是本人发现,也不是自己动手修复,终归是底气不足,故而一直耽搁下来.怎奈此问题实在是含金量十足,又恰逢最近有人询问Kafka 0.10 ...

  2. httpclient源码分析之 PoolingHttpClientConnectionManager 获取连接

    PoolingHttpClientConnectionManager是一个HttpClientConnection的连接池,可以为多线程提供并发请求服务.主要作用就是分配连接,回收连接等.同一个rou ...

  3. maven工程莫名其妙只在项目名称那里有一个红叉

    manven工程里面没有报错的地方,编译也没有问题,只是项目名称那里有一个红叉.   解决办法:   右击项目-->maven-->update project   注意: 这种方法有时可 ...

  4. Java结合WebUploader文件上传

    之前自己写小项目的时候也碰到过文件上传的问题,没有找到很好的解决方案.虽然之前网找各种解决方案的时候也看到过WebUploader,但没有进一步深究.这次稍微深入了解了些,这里也做个小结. 简单的文件 ...

  5. 使用JDB调试Java程序

    Java程序中有逻辑错误,就需要使用JDB来进行调试了.调试程序在IDE中很方便了,比如这篇博客介绍了在Intellj IDEA中调试Java程序的方法. 我们课程内容推荐在Linux环境下学习,有同 ...

  6. 老李分享:adb发送的指令都有哪些

    老李分享:adb发送的指令都有哪些   这两天在poptest上课的时候,我们邀请了业内技术牛人为我们的学员讲解手机自动化方面的知识,每天大家都很踊跃,要学习到晚上11点多才能,有的学员跟我说都累傻了 ...

  7. 基于 Spring MVC 的开源测试用例管理系统以及开发自测的实践

    早前公司领导提出让开发自测,测试么也做做开发.当然了,为了保证自测质量,测试用例仍需测试提供,所以为了提高开发自测的效率和质量,我们开发了捉虫记.捉虫记是一个完整的Spring MVC项目,现已开源, ...

  8. iterable

    iterable 阅读: 148111 遍历Array可以采用下标循环,遍历Map和Set就无法使用下标.为了统一集合类型,ES6标准引入了新的iterable类型,Array.Map和Set都属于i ...

  9. [UWP]了解模板化控件(5):VisualState

    1. 功能需求 使用TemplatePart实现上篇文章的两个需求(Header为空时隐藏HeaderContentPresenter,鼠标没有放在控件上时HeaderContentPresent半透 ...

  10. 空a标签 a标签空的情况下 IE6 IE7下点击无效

    最近做了好多网站专题页面,因为专题页面图片较多,个别banner上有1个到多个按钮,一种是用“图解img标签的usemap”的方法做链接,(图解img标签的usemap使用方法)[传送门] 另一种用则 ...