ARM TrustZone,虚拟机监控程序:无虚拟化扩展的虚拟机监控程序功能

ARM TrustZone,虚拟机监控程序:无虚拟化扩展的虚拟机监控程序功能,arm,virtualization,hypervisor,trust-zone,Arm,Virtualization,Hypervisor,Trust Zone,我发现了一些关于ARM的CPU虚拟化的有趣信息,我想知道你们是否可以帮助我了解更多 基本上,一些公司的员工已经开发了一种叫做的ARM安全模式操作系统,他们说可以虚拟化在非安全模式下运行的Linux/Android等来宾操作系统,只需要安全扩展。他们的演示文档中的一条信息引起了我的注意,特别是在本PDF的第19页,他们声明: rootkit和内核黑客的完整性检查: 监视系统调用中断和中断处理程序。这将确保核心系统调用不会被篡改 通过“系统调用中断”,我理解了SVC(=旧SWI)指令执行情况(如

我发现了一些关于ARM的CPU虚拟化的有趣信息,我想知道你们是否可以帮助我了解更多

基本上,一些公司的员工已经开发了一种叫做的ARM安全模式操作系统,他们说可以虚拟化在非安全模式下运行的Linux/Android等来宾操作系统,只需要安全扩展。他们的演示文档中的一条信息引起了我的注意,特别是在本PDF的第19页,他们声明:

rootkit和内核黑客的完整性检查:

  • 监视系统调用中断和中断处理程序。这将确保核心系统调用不会被篡改
通过“系统调用中断”,我理解了SVC(=旧SWI)
指令执行情况(如果我错了,请纠正我),但通过“监控”,我并不确定,因为它可能是实时监控、不时监控或对某些事件监控。在我看来,他们可以监控SVC处理程序,以防止通过以下方式进行篡改:

  • 不时检查SVC处理程序(例如,计时器中断,因为IRQ和FIQ可以路由到监控模式)-类似PatchGuard的方法,对我来说似乎不是很有用
  • 检查SVC指令执行时的SVC处理程序(=特定事件监视)
  • 陷阱SVC处理程序内存区域写入访问(=实时监控)
  • 关于方法2:是否可以从安全模式捕获非安全SVC指令执行

    关于方法3:是否可以仅使用安全扩展来钩住非安全内存区域写入

    非常感谢

    此处的“监控”可能指监控模式,即安全扩展添加的新模式

    我对安全扩展不是很熟悉,但我认为应该可以将特定内存区域标记为安全的,这样对它们的任何访问都将导致监视器模式陷阱,然后可以处理访问并恢复非安全代码的执行

    但是,我刚刚在ARM中发现了这个注意事项(B1.8.7异步异常行为摘要):

    在包含安全扩展的实现中,但 不包括虚拟化扩展,如下所示 配置允许非安全状态拒绝服务 安全状态。因此,ARM建议,在可能的情况下 不使用以下配置:

    • 将SCR.IRQ设置为1。通过此配置,非安全PL1软件可以将CPSR.I设置为1,从而拒绝IRQ到的所需路由 监控模式

    • 当SCR.FIQ设置为1时,将SCR.FW设置为1。通过这种配置,非安全PL1软件可以将CPSR.F设置为1,从而拒绝 所需的FIQ到监控模式的路由

    虚拟化扩展引入的更改删除了这些 可能拒绝服务


    因此,仅仅通过安全扩展似乎不可能实现完美的虚拟化。

    如果您想要一个虚拟机监控程序,就要一个虚拟机监控程序。TrustZone将保护安全操作系统,而不为正常操作系统提供保护。通常,虚拟机监控程序必须向托管操作系统提供虚拟mmu。TrustZone提供两个物理MMU表。否则,SierraTEE与TrustZone无关。应使用总线开关进行保护,以防止过度写入。无论代码在做什么,它都不会在安全模式下防止检查器的过度写入。在安全模式下,您可以检查正常(Android操作系统)并查看其是否被篡改。1。这是可能的。2.这是不可能的(没有修补代码或准虚拟化)。3.如果不修改Linux(准虚拟化),这也是不可能的。所有方法都假定对托管操作系统(Linux/Android)有一定的了解。例如,您不能运行某些Linux IMX设备上使用的FIQ代码。如果没有安全引导,任何人都可能超越检查程序。我很确定他们指的是要查看的监视器,而与监视器模式无关。但事实上,这是任何人的猜测。白皮书通常是一种技术性的推销。通过安全扩展可以提供类似于虚拟化的东西,但创建安全系统需要更多。标记记忆区域通常是用手臂信任区以外的东西来完成的;即,总线开关(连接总线主设备和从设备)。