风铃

解决虚拟化安全的办法有哪些

分享
  • Ann 2 等保高级测评师 NISP 官方采纳
    Ann2 等保高级测评师 NISP
    官方采纳

    以Google为例看他们在虚拟化安全方面的办法:

    1. 主动漏洞研究

      Google的KVM(基于内核的虚拟机)内置了多层安全和隔离措施,并一直在努力加强这些措施。Google的云安全人员包括在KVM安全领域最重要的一些专家,且多年来发现了KVM、Xen和VMware虚拟机管理程序中的多个漏洞。Google团队通过代码审计和Fuzz测试发现并修复了KVM中的9个漏洞,在这一时期,开源社区没有发现KVM中影响Google云平台(GCP)的其他漏洞。

    2. 减少攻击面

      Google通过删除未使用的组件(例如,传统鼠标驱动程序和中断控制器)并限制模拟指令集来帮助提高KVM的安全性,这有效避免了潜在攻击者的攻击面,同时通过修改其余组件增强了安全性。

    3. 非QEMU实现

      Google没有使用QEMU的用户空间虚拟机监控器和硬件仿真,而是编写了自己的用户空间虚拟机监控器。简单的主机和客户的架构支持型矩阵。因为Google只支持单一架构和相对较少的设备,所以其支持的仿真器更加简单。Google目前不支持跨架构的主机/客户组合,这有助于避免额外的复杂性和潜在的攻击。Google的虚拟机监视器由多个强调简单性和可测试性的组件组成,这种组件架构便于做单元测试,而单元测试可以减少复杂系统中的错误。相比之下,QEMU支持大量的主机和客户机CPU指令架构矩阵,不同的模式和设备使复杂性显著增加。QEMU代码缺乏单元测试,并且存在许多依赖,这使得进行单元测试非常困难。Google的用户空间虚拟机监控器在历史上没有出现过安全问题。相比之下,QEMU有很多安全漏洞记录,比如VENOM,并且我们还不清楚其代码中还存在哪些潜在漏洞。

    4. 引导和任务通信

      实施代码来源处理(这类的工具有Titan安全芯片)有助于确保计算机启动到已知的良好状态。每个KVM主机都会生成一个点对点的加密密钥共享系统来共享该主机上运行的任务,有助于确保主机上运行的任务之间的所有通信都是经过明确的身份验证和授权的。

    5. 代码溯源

      开发并运行一个自定义二进制和配置验证系统,将该系统集成到开发流程中,来跟踪KVM中运行的源代码是如何构建、配置及部署的——这就是代码溯源的过程。代码溯源要求在每层启动中验证代码完整性:从引导加载程序到KVM,再到客户的虚拟机。

    6. 严格的发布控制

      Google根据合规性要求和Google云安全的安全管控驱动的KVM更新机制制定了严格的推出政策和流程。只有一小部分Google员工可以访问KVM构建系统和发布管理控制系统。常见的虚拟层安全问题有客户端可触发的DoS主机拒绝服务漏洞(如x2APICfallthrough:CVE-2016-4440)、客户端虚拟机逃逸到主机的漏洞(如PUSHAemulation:CVE-2014-0049)、读取其他客户数据的信息泄露漏洞(如MSR0x2F8:CVE-2016-3713),为此,Google开发了crosvm(The Chrome OSVirtual Machine Monitor)。Google在虚拟化安全方面所做的工作主要为将攻击面移到用户层,这样做有几个好处:可以实施ASLR、stack canaries、AppArmor等漏洞免疫措施;虚拟机逃逸只会导致用户空间被访问;DoS攻击只影响当前虚拟机,不影响其他用户;可以使用seccomp-bpf等沙盒技术对用户态进程隔离。将内核态KVM迁移到用户态crosvm的具体工作有:将PIC、I/O APIC等Irqchip中断控制由KVM移到用户层(I/O APIC出现过CVE-2013-1798、CVE-2014-015漏洞);将指令模拟器Instruction Emulator移到用户层(自2009年以来出现过11个CVE漏洞)。

  • Anna艳娜 2 CISO 高级信息系统项目管理师 PMP 官方采纳
    Anna艳娜2 CISO 高级信息系统项目管理师 PMP
    官方采纳

    虚拟化安全方面的办法有以下这些:

    • 主动漏洞研究:KVM(基于内核的虚拟机)内置了多层安全和隔离措施,并一直在努力加强这些措施。云安全人员包括在KVM安全领域最重要的一些专家,且多年来发现了KVM、Xen和VMware虚拟机管理程序中的多个漏洞。团队通过代码审计和Fuzz测试发现并修复了KVM中的9个漏洞,在这一时期,开源社区没有发现KVM中影响云平台(GCP)的其他漏洞。

    • 减少攻击面:通过删除未使用的组件(例如,传统鼠标驱动程序和中断控制器)并限制模拟指令集来帮助提高KVM的安全性,这有效避免了潜在攻击者的攻击面,同时通过修改其余组件增强了安全性。

    • 非QEMU实现:没有使用QEMU的用户空间虚拟机监控器和硬件仿真,而是编写了自己的用户空间虚拟机监控器。简单的主机和客户的架构支持型矩阵。因为只支持单一架构和相对较少的设备,所以其支持的仿真器更加简单。目前不支持跨架构的主机/客户组合,这有助于避免额外的复杂性和潜在的攻击。的虚拟机监视器由多个强调简单性和可测试性的组件组成,这种组件架构便于做单元测试,而单元测试可以减少复杂系统中的错误。相比之下,QEMU支持大量的主机和客户机CPU指令架构矩阵,不同的模式和设备使复杂性显著增加。QEMU代码缺乏单元测试,并且存在许多依赖,这使得进行单元测试非常困难。的用户空间虚拟机监控器在历史上没有出现过安全问题。相比之下,QEMU有很多安全漏洞记录,比如VENOM,并且我们还不清楚其代码中还存在哪些潜在漏洞。

    • 引导和任务通信:实施代码来源处理(这类的工具有Titan安全芯片)有助于确保计算机启动到已知的良好状态。每个KVM主机都会生成一个点对点的加密密钥共享系统来共享该主机上运行的任务,有助于确保主机上运行的任务之间的所有通信都是经过明确的身份验证和授权的。

    • 代码溯源:开发并运行一个自定义二进制和配置验证系统,将该系统集成到开发流程中,来跟踪KVM中运行的源代码是如何构建、配置及部署的——这就是代码溯源的过程。代码溯源要求在每层启动中验证代码完整性:从引导加载程序到KVM,再到客户的虚拟机。

  • 写回答