乐安全 支持x86_从虚拟机逃逸看kvmqemu虚拟化安全防御

乐安全 支持x86_从虚拟机逃逸看kvmqemu虚拟化安全防御注 不知道是出于啥原因 很少找到对虚拟化安全防御相关的中文资料 去年很想写这个话题 但我家三星笔记本 uefi 硬是没法关闭导致无法从硬盘安装双系统又加上 virtualbox 不支持 vt x 嵌套 试了 N 种方法未成 当然我也没有 u 盘 故在看完 phrack 上经典的 vm escape 文章后留下遗憾 然最近打开一年未开机的笔记本竟然发现解锁版 vmware 完美支持 vt x 嵌套 经过一顿实验后

大家好,我是讯享网,很高兴认识大家。

注:不知道是出于啥原因,很少找到对虚拟化安全防御相关的中文资料,去年很想写这个话题,但我家三星笔记本uefi硬是没法关闭导致无法从硬盘安装双系统又加上virtualbox不支持vt-x嵌套(试了N种方法未成),当然我也没有u盘,故在看完phrack上经典的vm escape文章后留下遗憾,然最近打开一年未开机的笔记本竟然发现解锁版vmware完美支持vt-x嵌套,经过一顿实验后,决定写写这个久违又很感兴趣的话题,抛错引玉也希望能看到更多的分享和资料。

本文分为如下章节:

  1. 威胁建模/风险分析
  2. 一个真实的逃逸实例
  3. 逃逸监控
  4. 逃逸防御
  5. 应急响应 6谷歌怎么做的

1、威胁建模/风险分析

威胁建模是个很好的系统化进行风险分析的方法,在理解架构、数据流、攻击面时尤为重要。

kvm-qemu实现相对复杂,用尽量通俗的话描述一下。

一个操作系统运行需要cpu,内存,IO/外设,在利用intel vt-x实现的kvm(内核模块),用户态的qemu进程实现了guest系统外设(磁盘/网卡/显示等)的虚拟化(全虚或virtio的半虚拟化,还有利用vt-d实现pci透传的设备不在此探讨。),涉及磁盘读写、网络收发包等实现均由qemu进程中实现(kvm处理io请求后发送给qemu),内核模块kvm利用硬件特性实现了cpu/内存的虚拟化,包括执行guest系统中的代码,处理内存的地址转换(影子页表或intel ept),响应外部中断,kvm对guest系统中的涉及特权/敏感操作的代码实现进行了模拟(读写特殊寄存器等等)。

补充一张网上摘来的KVM运行时图。

5faa85cd5c12348da8d17bffd4d6747e.png
讯享网

下图对数据流走向及信任边界进行了标识。

ea21e6243afd249f69904172cb2f0aa0.png

攻击面分析:

  • guest-kvm模块
    kvm中特权/敏感指令的模拟,中断响应、切换vmx模式等只要在kvm中实现可被guest数据流触发的代码中存在漏洞被利用,kvm实现相对较轻量,所以漏洞相对较少。
  • guest-qemu进程

qemu模拟IO/设备实现中存在漏洞被利用,目前主流公有云的采用了virtio半虚拟 化,而最多的漏洞出现在全虚的设备模拟。

  • guest-透传的pci设备
  • guest-宿主cpu

guest代码在宿主cpu执行,cpu硬件漏洞也可能成为利用点。

存在的主要威胁/风险如下:

  • guest逃逸到宿主机
  • guest读取同宿主机其他guest数据
  • 宿主机内核被guest拒绝服务/crash

2、一个真实的逃逸案例a) 基于qemu全虚设备模拟的逃逸

详情可参考phrack文章,利用逻辑优美、执行稳定,是少有的可直接拿来验证/演示的实现,为作者点赞赞。(http://phrack.org/papers/vm-escape-qemu-case-study.html)

文章利用两个漏洞实现了完美的虚拟机逃逸,第一个信息泄露漏洞(cve-2015-5165)完美的获得了虚拟机在宿主机物理内存、text段地址、shellcode依赖函数地址。第二个漏洞(cve-2015-5174)利用第一个漏洞的地址泄露实现了代码执行,shellcode直接在宿主机上执行bash,没有用bindshell/反弹的逻辑,避免了宿主机地址不确定/防火墙存在的限制,利用代码中无论是获取地址及shellcode的逻辑都非常优美,值得仔细研究

小讯
上一篇 2025-03-02 23:14
下一篇 2025-04-11 14:51

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/63722.html