1

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

基本上,一家名为SierraWare的公司的人开发了一种名为SierraTEE的 ARM 安全模式操作系统(他们说),它可以虚拟化运行在非安全模式下的客户操作系统,如 Linux/Android,只需要安全扩展。他们的一份演示文档中的一条信息引起了我的注意,特别是在此 PDF http://www.sierraware.com/sierraware_tee_hypervisor_overview.pdf的第 19 页,他们指出:

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

  • 监控系统调用中断和中断处理程序。这将确保核心系统调用不会被篡改。

通过“系统调用中断”我了解SVC(=old SWI)指令执行(如果我错了请纠正我),但通过“监控”我不太确定,因为它可能是实时监控有时-时间监控特定事件监控。在我看来,他们可以监控SVC 处理程序以防止通过以下任一方式进行篡改:

  1. 不时检查 SVC 处理程序(例如计时器中断,因为 IRQ 和 FIQ 可以路由到监控模式) - 类似 PatchGuard 的方法,对我来说似乎不是很有用
  2. 在SVC 指令执行时检查 SVC 处理程序(=某些事件监控
  3. 陷阱SVC 处理程序内存区域写访问(=实时监控

关于方法 2:是否可以从安全模式捕获非安全 SVC 指令执行

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

首先十分感谢

4

1 回答 1

0

这里的“监控”可能是指监控模式,安全扩展新增的模式。

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

但是,我刚刚在 ARM ARM(B1.8.7 异步异常行为总结)中发现了这个通知:

在包括安全扩展但不包括虚拟化扩展的实现中,以下配置允许非安全状态拒绝对安全状态的服务。因此,ARM 建议尽可能不要使用这些配置:

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

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

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

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

于 2014-03-11T11:29:33.320 回答