如何确定ARM处理器是否在通常的锁定“世界”或Secore“世界”中运行?

时间:2014-01-19 14:59:40

标签: arm trust-zone

例如,virt-what显示您是否在硬件虚拟化“sandbox”中运行。

如何检测您是否在ARM“TrustZone”沙箱中运行?

3 个答案:

答案 0 :(得分:3)

TrustZone 可能与您的想法不同。有一连串的模式。从“可靠功能的简单API”到每个世界中运行的“双操作系统”。

如果问题有更多的背景,那将会有所帮助。这是用于以编程方式确定还是用于逆向工程注意事项?对于当前的Linux用户空间,答案是

摘要

  • 没有当前用户空间实用程序。
  • 基于时间的分析。
  • 基于代码的分析。
  • CPU排除和SCR
  • ID_PRF1位[7:4]。

virt-what并不是一种发现你是否在超级遮阳板下运行的万无一失的方法。它是为 linux用户空间编写的程序。大多数情况下,shell scripts检查/proc/cpuinfo等等。 procfs 是一个伪文件系统,它在内核上下文中运行代码并向用户空间报告主线 ARM linux中没有 TrustZone 的检测。根据设计, ARM 使其难以检测。设计意图是使普通世界中的代码不受修改地运行。

代码分析

为了与安全的世界交谈,普通世界需要SMC条指令。如果您的用户空间可以访问内核代码或 vmlinux 映像,则可以尝试分析SMC指令的代码部分。但是,此代码可能出现在图像中,但从未激活。至少这表明 Linux 内核是否支持 TrustZone 。您可以编写一个内核模块来捕获SMC指令的任何执行,但可能有更好的解决方案。

时序分析

如果操作系统在安全世界中运行,则某些时间分析会显示如果频率调整未激活,则某些CPU周期被盗。我认为这不是原始问题精神的答案。这依赖于知道安全世界是一个带有计时器的完整操作系统(或至少是可以预占的中断)。

CPU排除和SCR

{em>普通世界中无法使用SCR安全配置寄存器)。从ARM Cortex-A5 MPcore手册(第4-46页),

  

使用限制 SCR是:
           •只能在特权模式下访问
           •只能在安全状态下访问   尝试从除安全特权之外的任何状态访问SCR   导致未定义的指令异常。

ID_PRF1位[7:4]。

在一些 Cortex-A 系列中,指令

mrc p15, 0, r0, c0, c1, 1

将获得一个值,其中bits [7:4]表示CPU是否支持 Security Extensions ,也称为 TrustZone 。非零值表示支持它。许多早期CPU可能不支持此CP15寄存器。所以,它很像SCR并处理未定义指令。此外,它不会告诉您 TrustZone 模式中的代码活动

摘要

您可以编写内核模块,它将尝试此指令并处理未定义的异常。这将检测正常安全世界。但是,您必须排除完全没有 TrustZone 的CPU。

如果设备不是ARMv6或更好,那么 TrustZone 是不可能的。很多 Cortex-A 设备在CPU中都有 TrustZone ,但它没有激活。

合并的SMC测试和CPU ID仍然不够。某些引导加载程序安全世界中运行,然后转换到普通世界。因此 secure 仅在启动时处于活动状态。

理论上,有可能知道,特别是对系统的更多了解。可能有很多迹象,例如来自GIC的虚假中断等。但是,我不认为自2014年1月起存在任何用户空间 linux工具。这是病毒/ rootkit编写器与恶意软件检测软件之间的典型升级之战。 TZ Rootkits

答案 1 :(得分:1)

您尚未指定处理器(A8,A9,A15?)或执行模式(用户/内核/监视器)的任何详细信息,您可以从中检测处理器状态。

根据ARM文档,可以通过读取Secure Configuration Register并检查NS位来检测处理器的当前安全状态(也称为TrustZone沙箱)或非安全状态。 / p>

访问安全配置注册:MRC p15, 0, <Rd>, c1, c1, 0 设置的位0对应于处理器处于非安全模式,反之亦然。

答案 2 :(得分:0)

您可以查看处理器的数据表,找到那些在Normal world和Secure world之间表现不同的寄存器。通常,在Secure World中,当您阅读这些寄存器时,您将获得null。但是在Normal世界中获取数据。此外,您可以在Secure World中访问的某些寄存器,如果您在Secure World中,您可以访问它,但在Normal World中,您的访问权将被拒绝。

无论如何,有许多方法可以区分普通世界和安全世界。只是详细阅读数据表。

相关问题