基于虚拟化的安全系统资源保护

基于虚拟化的安全功能(VBS)使用硬件虚拟化和 Windows 虚拟机监控程序来创建独立的虚拟环境,该环境将成为假定内核遭到入侵的 OS 的信任根。 Windows 使用这种独立环境来托管许多安全解决方案,为它们提供了显著增强的保护,以防止操作系统中的漏洞,并防止利用恶意攻击试图破坏保护。 VBS 强制实施限制,以保护重要的系统和操作系统资源,或保护安全资产(如经过身份验证的用户凭据)。

有关 VBS 的更多背景知识,请参阅基于虚拟化的安全 (VBS)

VBS 更改信任模型

虽然 VBS 极大地提高了平台安全性,但 VBS 也会更改 Windows PC 中的信任边界。 借助 VBS,Windows 虚拟机监控程序可以控制底层硬件的许多方面,这些硬件为 VBS 安全环境提供了基础。 虚拟机监控程序必须假定 Windows 内核可能会受到恶意代码的破坏,因此必须保护关键系统资源不受在内核模式下运行的代码的操纵,以免危及安全资产。

了解处理器 MSR

虚拟机监控程序必须防止恶意使用的重要系统资源的一个方面是处理器模型特定的寄存器或 MSR。 新式处理器支持大量 MSR,其中许多 MSR 控制处理器行为的关键方面。 MSR 只能从内核模式代码读取或写入 (即 CPL0)。 更改由 MSR 控制的设置可能会允许恶意内核模式代码更改系统的行为,并允许攻击者获得控制,从而损害安全性。 此外,许多 MSR 都包含有关系统操作的数据,例如跟踪或诊断数据,这些数据也可用于显示或计算安全资产。 因此,虚拟机监控程序必须识别并防范滥用任何可能损害 VBS 安全状况的 MSR。

MSR 通过索引访问,索引是每个 MSR 的唯一标识符。 过去,许多 MSR 已建立为体系结构;也就是说,它们的存在和功能在多个处理器代次之间在体系结构上保持一致。 在这种情况下,可以依赖具有已记录 MSR 索引和定义的已知 MSR 来控制一组已知的已发布功能。 但是,还有一些 MSR 因处理器而异,并且在某些情况下,MSR 索引随时间而重新设定用途,需要重新定义以引用新的控件集。 对于系统级软件来说,这些问题非常棘手,因为很难在广泛可用的商业软件中编码和维护这些控件的知识。

保护对 MSR 的访问

若要提供可靠的安全平台,必须防止 MSR 被恶意内核模式代码滥用。 为了强制执行这一点,虚拟机监控程序监视和控制对所有 MSR 的访问。 虚拟机管理程序维护已知 MSR 索引的列表,并且仅允许内核模式代码访问已知合理且被视为安全的 MSR 或 MSR 中的特定位。 虚拟机监控程序将阻止访问虚拟机监控程序未知的任何 MSR,或通过其已发布定义已知的任何 MSR 来表示安全风险。 在某些情况下,可能允许部分访问。

当虚拟机监控程序阻止访问 MSR 时,它会将事件记录到 Windows 系统登录事件查看器,并指定尝试访问的详细信息。

鉴于由 MSR 控制的函数数量很大,无法预测阻止 MSR 访问启动它的软件的副作用。 编写良好的软件应妥善处理错误和故障情况,但并非总是如此。

查看 MSR 访问事件

虚拟机监控程序仅在启用并运行 VBS 时阻止对某些 MSR 的访问。 若要确定虚拟机监控程序是否阻止了对 MSR 的访问,请从 Microsoft-Windows-Hyper-V-Hypervisor 查看 Windows 系统日志中的事件 ID 12550。 事件日志条目详细信息将包含以下信息:

Id : 12550
说明:Hyper-V 检测到对受限制的 MSR 的访问
详细信息:

  • Msr
  • IsWrite
  • MsrValue
  • AccessStatus
  • Pc
  • ImageBase
  • ImageChecksum
  • ImageTimestamp
  • ImageName

支持的 Windows 版本

从 Windows 10 和 Windows Server 2016 开始,所有版本的 Windows 都支持 VBS。