译者引言:
TrustZone是ARM架构的安全解决方案,问世已经很多年了,在比较新的ARM cortex-A 系列中基本都存在。现在的几乎所有的手机平板用的都是 Cortex-A 系列芯片。随着 IoT 的到来,2017年,新的ARM cortex-M 也加入了
TrustZone
。
至于攻击TrustZone后果有多严重,我们举个例子,苹果手机的指纹认证以及支付功能使用的都是TrustZone,现在的假设是,即使你的手机上有病毒,甚至于那个病毒可以在你手机的Linux内核里执行任意代码,如果TrustZone没有漏洞,TrustZone里的东西依然是安全的。如果我们能在TrustZone里执行任意代码,这手机的一切认证支付功能都将面临危险。你的所有信息对于攻击者来说都是一目了然。
这个系列翻译自2015年到2017年的一系列文章。希望给大家系统的介绍一下如何利用多个漏洞从用户权限到在Trustzone内核中执行任意代码。
正文:
译者引言:
TrustZone是ARM架构的安全解决方案,问世已经很多年了,在比较新的ARM cortex-A 系列中基本都存在。现在的几乎所有的手机平板用的都是 Cortex-A 系列芯片。随着 IoT 的到来,2017年,新的ARM cortex-M 也加入了
TrustZone
。
至于攻击TrustZone后果有多严重,我们举个例子,苹果手机的指纹认证以及支付功能使用的都是TrustZone,现在的假设是,即使你的手机上有病毒,甚至于那个病毒可以在你手机的Linux内核里执行任意代码,如果TrustZone没有漏洞,TrustZone里的东西依然是安全的。如果我们能在TrustZone里执行任意代码,这手机的一切认证支付功能都将面临危险。你的所有信息对于攻击者来说都是一目了然。
这个系列翻译自2015年到2017年的一系列文章。希望给大家系统的介绍一下如何利用多个漏洞从用户权限到在Trustzone内核中执行任意代码。
正文:
这将会是一系列关于如何运用我发现的多个漏洞来让我们能在Trustzone内核中使用最高权限运行任意代码的细节的文章。
由于我只有一个Nexus5(用的芯片是Snapdragon 800 SoC),我将会侧重于我的设备上的TrustZone平台 -- 高通TrustZone。
值得注意的是所有基于高通SoC的设备都包涵高通TrustZone平台,然而,高通也允许原型设备制造商对平台进行修改,这些在我之后的博客中会有提及。
并且,我相信攻击高通的TrustZone平台是一个很好的选择,毕竟Snapdragon SoC在很多设备中都有用到。(高通的市场份额还是很大的)
在这些年里,许多的安全机制被引入到了安卓当中,现有的机制也得到了提升。
虽然底层的安全架构没有变化,防御机制却变得十分可靠。现在想要取得系统的最高权限变得复杂,很多时候会需要协同多个漏洞。
(这是一张ARM的TrustZone架构图)
根据ARM所说,TrustZone是:
“一个用于保护一些列用户以及服务器计算平台的系统级方法,这些设备包括耳机,平板,可穿戴设备以及企业系统。基于这个技术的应用很广泛,其中包括有安全支付,
数字版权管理
,个人电子设备,以及一系列安全的企业解决方案”
简单的来说,TrustZone是一个用来保证在设备上能够安全执行程序的系统。
为了能够安全的执行TrustZone的代码,需要一类特定的处理器。这类处理器可以执行两类代码,一类是安全代码(在安全世界中),一类是非安全代码(
在正常世界中
)。不是这类处理器的处理器,只能执行非安全代码。
(这里文章中的正常世界与安全世界如图,指的是在正常Linux内核上的世界,以及特意为安全世界服务的阉割版内核上的世界)
TrustZone在安卓设备上有很多不同的用法,比如说:
——检查内核完整性(完整性基本就是靠哈希来验证,哈希很简单,就是从一堆特定代码以及数据中只能得到一个签名,所以以后你要验证是不是这同一堆代码以及数据,只要用这些代码以及数据算一个哈希,然后和这个签名比对,如果相同,那么就是同样的。)
——使用硬件上的机密存储(在“keystore”,“dm-verity”中使用)
——移动支付的安全部件模拟
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课