zoukankan      html  css  js  c++  java
  • OpenStack修复影响宿主机的QEMU漏洞CVE-2017-2615

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

    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代码更新时需要重新修复
  • 相关阅读:
    内存溢出
    3.设计模式----TemplateMethod模式
    tomcat 编码问题
    ibatis实现Iterate的使用 (转)
    2.设计模式---Adapter模式
    1.设计模式-------Iterator
    PHP 下载远程图片
    mysql调优 参数说明
    mySQL内存及虚拟内存优化设置
    Firebug入门指南
  • 原文地址:https://www.cnblogs.com/opsec/p/6821890.html
Copyright © 2011-2022 走看看