赞
踩
主要来源:系统讲述TEE TrustZone的博客
(ps:这一小部分仅针对小白,若内容有误,烦请大神指正,不胜感激!)
先从百科上了解这两个名词:
定义看起来很复杂,但大体能理解这两个名词与安全漏洞攻防有关,那么我们先从一般性漏洞问题上去理解。
一般应用程序发生漏洞,其解决办法通常是对大型程序进行“隔离限制”,即隔离在“沙箱”中,限制该程序与系统其余部分之间的所有交互。故攻击者只能通过代理与系统进行交互,由于代理进程非常小,由此可以确保代码免遭泄露。
我们了解到,内存损坏漏洞问题是个极常见的问题,而这种类似问题甚至会发生在现代操作系统的内核之中,然而,对内核的隔离却不是这般容易。由此,“可信执行环境”(TEE)横空出世。
TEE 将关键代码和数据与主要操作系统隔离开,这样的话,即便主要操作系统被劫持,TEE内部的关键代码和数据仍能不受影响。
隔离内核,我们需要TEE的存在,也就是需要在操作系统内核受到威胁时仍能确保数据安全的保障,这一点需要一种特殊硬件的支持——Arm TrustZone。在Arm上运行的设备(如智能手机)可以使用TrustZone执行硬件级别的隔离,由此确保TEE的安全。
想象两个盒子,受TrustZone保护的代码和数据在一个盒子里,不受TrustZone保护的代码和恶意外围设备在另一个盒子里,这就出现了两个世界:普通世界(NW)和安全世界(SW)。这两个名词再百度百科中似乎没有定义,有资料解释如下:
好,对名词的定义大概了解到这里,下面进行论文笔记。
【摘要】文章目的:
发现
- TEE系统存在关键bugs。Trusted Applications (TAs)及可信内核内已发现很多bugs。
- 劫持脆弱的Tas。trustzone辅助的TEE系统在架构上有诸多缺陷。
- 大多数TrustZone系统中,其架构和微架构级别上的重要硬件属性被忽略了。
本文贡献如下:
(1) 首次系统地研究了广泛使用的TrustZone辅助的TEE系统中的已知漏洞(Ⅲ);
(2) 从现代操作系统的角度分析TEE系统的主要架构缺陷(Ⅳ);
(3) 引入分类法来对实现bug进行分类,这些bug可能被用于开发TEE系统(Ⅴ);
(4) 提高对可用于攻击TEEs的硬件元素的认识(Ⅵ);
(5) 分析研究界提出的主要防御技术(Ⅶ);
(6) 将TrustZone辅助的TEE与其他TEE技术结合起来(Ⅷ)。
1. Trusted Execution Environment and Arm TrustZone
2. Software Architecture of TrustZone-assisted TEE
3.Attacking TEE-enabled Devices
TEE内核的妥协:
Gal Beniamini以Qualcomm开发的TEE系统Qualcomm TEE (QSEE)为目标,展示了如何以两种不同的方式从非特权用户级NW应用程序劫持TEE内核。
- 一种方法需要分几个步骤将特权升级到Linux内核(参见Figure 1)。
首先,使用exploit E3来控制Android的mediasserver,它拥有对TEE驱动程序的特权访问权;然后提升Linux TrustZone驱动程序访问SMC接口(E2)的权限。
exploit(E1)利用了TEE内核中的一个bug,并在SW中使用EL1特权实现了任意代码执行。一旦控制了TEE内核,攻击者可以发动其他攻击。例如:劫持一个客户TA以提取密钥,并打破Android的完整磁盘加密,或解除设备引导加载程序的阻塞。- 破坏TEE内核的第二种方法只需要访问易受攻击的TA的接口。
使用E4,攻击者可以劫持Widevine TA,这是一种针对Android操作系统的DRM服务。
然后,通过系统调用接口的漏洞,攻击者可以进一步将权限提升到TEE内核(E5)。
- 表注:
- E1(2015): 输入验证 的缺陷可以作为 zero-write(零写)原语在内存QSEOS的虚拟内存的任何位置使用,以获得可信操作系统中的任意代码执行。在Linux内核中需要root特权。(下面的图2中有QSEOS的位置:存在于S-EL1处,估计是运行Linux内核的地方。)
- 组件:SW Monitor; 影响:Full control of TZ kernel
- E2(2015):利用TrustZone Linux 驱动程序 中的bug,该bug允许攻击者获得根权限,从而 启动E1攻击 。
- 组件:NW Driver; 影响:Full control of Linux kernel
- E3(2016):Android的 Mediaserver进程 的漏洞,允许一个没有特权的REE应用程序访问Qualcomm的TrustZone接口驱动程序。当 与E1和E2一起使用 时,允许
非特权应用程序 获得可信的操作系统级的任意执行。
- 组件:NW Service; 影响:Full control of Android Mediaserver
- E4(2016):在 TA上下文 中获得任意执行的特权升级攻击。该漏洞发生在 Widevine TA 中,可以通过 使用E3 访问TrustZone接口Linux驱动程序来利用。
- 组件:SW TA; 影响:Full control of Widevine TA
- E5(2016):Qualcomm的可信操作系统调用缺乏输入验证,这使得TA可以向操作系统内的任何地址写入数据,并劫持TEE内核。需要通过TA的接口将特权升级到TA。
- 组件:SW Kernel; 影响:Full control of TZ kernel
- E6(2016):具有TA级执行特权的攻击者可以获得对Linux内核的控制权。这种攻击可以建立在E4之上。
- 组件:NW Kernel; 影响:Full control of Linux kernel
REE核的妥协:
让Linux妥协,甚至不需要控制TEE内核。只需取一易受攻击的TA,将其作为提升特权到Linux内核的跳台即可。
例如,exploit E6允许攻击者接管Linux内核,将精心设计的输入由用户级NW应用程序发送到Widevine TA。
这个TA的漏洞连同QSEE的系统调用,允许TA映射到NW物理内存中去,使攻击者能够修改分配给Linux内核的内存区域并控制系统。
问题的严重程度
几个其他的漏洞(exploits)已经被Qualcomm TEE研制了。
除了运输Qualcomm芯片的移动设备外,其他平台也受到了攻击,即运行Trustonic的TEE系统的设备,该系统由Mobicore改名为Kinibi,而华为专属的TEE被命名为Trusted Core。
这些漏洞大多采用表1(Table I)所示的分治策略。
考虑到Trustonic的TEE预计将在17亿部设备(主要是三星)上运行,而华为的移动设备被广泛采用(2018年售出2亿部),TEE缺陷可能在全球范围内产生巨大影响
1. 研究方法
对手模型
考虑一个攻击者追求下面的一个或多个目标:
- a)从TEE中获得秘密;
- b)从REE中获取秘密;
- c)升级权限到REE内核;
- d)升级权限到TEE。
攻击者只能从NW出发,以两种方式访问SMC接口:
- 直接通过在管理器模式(N-EL1)中获得代码执行特权,允许生成任意的SMC调用;
- 通过向某个目标TA发出命令,间接从无特权的用户级应用程序(N-EL0)中获得代码执行特权。
所有的NW部件都被认为是不可信的
分析TEE系统(对Qualcomm、Trustonic、Huawei、Nvidia和Linaro的TEE系统分析)
Nvidia维护着一个专有TEE,它主要用于Nvidia芯片。
Linaro维护着OP-TEE,这是一个开源TEE软件,在TrustZone开发中非常流行。
所有这些系统都被积极地维护,被广泛地用于商业目的,并且可以获得大量关于它们的信息。
排除研究原型或目前没有大规模部署的商业产品,考虑相关整合的漏洞,例如,硬件侧通道。
为便于阅读,此后将使用公司名称而非软件名称来指代每一个被分析的TEE(如QSEE代指Qualcomm TEE)。
数据来源
使用多个来源,并将其分为四个领域(见表2(Table II))。
公开安全漏洞分类
收集漏洞报告后,手动分类分析。
对于具有CVSS评分的漏洞,采用基于属性评分的分类度量。
评级系统包括四个类别:危急、严重、中级、低级。
特定漏洞的严重程度可能具有不同的安全含义。关键漏洞通常会导致TEE、REE或两者的机密性或完整性的完全泄露。
二元分析
为了获得TEE系统更多细节,本文对其中的一个子集进行逆向工程。
该方法允许我们量化每个系统TCB的大小;其次,它帮助确定了每个系统的具体软件架构,例:Huawei使用Arm可信固件(ATF)作为其安全监控软件的基础,而Qualcomm使用自己的实现;再者,它允许我们分析每个TEE实现的内存保护功能。
有效性的威胁
缺乏关于专有系统中存在的漏洞的信息可能导致不准确的分类,给定的TEE系统也有过度代表的风险(过拟合)
特别地,公开报告的关于该系统的漏洞的数量很大程度上超过了其他系统的数量。
本文只分析了以前报告过的漏洞。故可能存在的未知类型漏洞,可能会揭示TEE系统其他的基本安全问题。
2. 观察总结
3. TrustZone-assisted TEEs的漏洞来源
在下一节中,本文将通过讨论每种类型的问题详细介绍各漏洞。
本节是从现存TEE系统的架构层面来分析漏洞的(本节介绍了9个),并附上了Qualcomm,Trustonic,Huawei,Nvidia,Linaro的系统具体细节图,如下:
- 图注:TEE系统的详细架构。其中,一些相关的共同特征包括:
- (a) NW应用程序和SW之间的通信是由一个特权操作系统守护进程进行中介的,该守护进程使用TrustZone驱动程序向SW发出SMC调用;
- (b)在四种情况下,监视器是基于ATF的,它由Arm提供的安全引导装载器和监视器软件的reference
implementation(参考实现)组成。
- (ATF就是个可信固件,是对安全世界软件的一个参考实现,包括(EL3中的)安全监视器。它为在AArch32或AArch64执行状态下的安全世界引导和运行时固件产品化提供了一个合适的起点)
- (ATF其他资料:Arm Trusted Firmware用于在SW和NW之间切换)
- ARMv8的两种执行状态: AArch64/AArch32
1. TEE攻击面
从TEE系统暴露出来的宽泛的攻击面来研究潜在漏洞。
I01. SW的驱动程序运行在了TEE内核中:
I02. TEE系统子组件之间宽泛的接口:
I03. TEE有过大的TCB:
- 图注:研究的各TEE系统与参考操作系统的TCB大小(分别在中线上方和下方):数值来自TEE二进制文件和固件/系统映像文件系统中可加载的TAs。对于开源系统,软件的编译支持优化,使用SLOCCount计算代码行数。
2. 正常与安全环境之间的隔离漏洞
在一些TEE系统中,SW和NW之间的隔离机制会因为TEE内核的危险系统调用而被破坏。
I04. 从TAs具有的映射功能上讨论
I05. 从危险的调试通道上讨论
3. 内存保护机制
内存保护机制的设计并不好。表V总结了各TEE系统实现的机制的发现。(下面重点提了两个漏洞)(我认为这是在从软件层面讲防御)
I06. 要么缺乏ASLR,要么ASLR实现的不好
I07. 没有stack cookies、guard pages或者execution protection
表注:用户和管理员模式的内存保护机制。
●:完全执行;
◐和◯:部分执行或未执行;
-:没有找到与执行相关的信息。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。