当前位置:   article > 正文

【论文笔记】SoK: Understanding the Prevailing Security Vulnerabilities in TrustZone-assisted TEE Systems_linux trustzone

linux trustzone

题外话 所谓TEE和Arm TrustZone

主要来源:系统讲述TEE TrustZone的博客
(ps:这一小部分仅针对小白,若内容有误,烦请大神指正,不胜感激!)

先从百科上了解这两个名词:

  • TEE
    • Trusted execution environment 可信执行环境
    • IT专业用语,应用于安全智能设备,安全支付等领域。
  • TrustZone
    • ARM TrustZone® 技术是系统范围的安全方法,针对高性能计算平台上的大量应用,包括安全支付、数字版权管理 (DRM)、企业服务和基于 Web 的服务。
    • TrustZone 技术与 Cortex™-A 处理器紧密集成,并通过 AMBA® AXI 总线和特定的 TrustZone 系统 IP 块在系统中进行扩展。此系统方法意味着可以保护安全内存、加密块、键盘和屏幕等外设,从而可确保它们免遭软件攻击。
    • 按照 TrustZone Ready Program 建议开发并利用 TrustZone 技术的设备提供了能够支持完全可信执行环境 (TEE) 以及安全感知应用程序和安全服务的平台。

定义看起来很复杂,但大体能理解这两个名词与安全漏洞攻防有关,那么我们先从一般性漏洞问题上去理解。

一般应用程序发生漏洞,其解决办法通常是对大型程序进行“隔离限制”,即隔离在“沙箱”中,限制该程序与系统其余部分之间的所有交互。故攻击者只能通过代理与系统进行交互,由于代理进程非常小,由此可以确保代码免遭泄露。

我们了解到,内存损坏漏洞问题是个极常见的问题,而这种类似问题甚至会发生在现代操作系统的内核之中,然而,对内核的隔离却不是这般容易。由此,“可信执行环境”(TEE)横空出世。

TEE 将关键代码和数据与主要操作系统隔离开,这样的话,即便主要操作系统被劫持,TEE内部的关键代码和数据仍能不受影响。

隔离内核,我们需要TEE的存在,也就是需要在操作系统内核受到威胁时仍能确保数据安全的保障,这一点需要一种特殊硬件的支持——Arm TrustZone。在Arm上运行的设备(如智能手机)可以使用TrustZone执行硬件级别的隔离,由此确保TEE的安全。

想象两个盒子,受TrustZone保护的代码和数据在一个盒子里,不受TrustZone保护的代码和恶意外围设备在另一个盒子里,这就出现了两个世界:普通世界(NW)和安全世界(SW)。这两个名词再百度百科中似乎没有定义,有资料解释如下:
资料好,对名词的定义大概了解到这里,下面进行论文笔记。


【摘要】文章目的:

  • 了解哪些类型的漏洞和限制会影响现有的TrustZone辅助的TEE系统;
  • 正确构建它们的主要挑战是什么
  • 可以从研究社区借鉴哪些贡献来克服它们。

I. INTRODUCTION

  • Trusted Execution Environments (TEE):保护应用程序完整性和机密性的关键安全机制;可信执行环境。
  • Arm TrustZone:在移动环境中实现TEEs的硬件技术。
  • TrustZone-assisted TEEs:更安全。
  • Trusted Computing Base (TCB):计算机内保护装置的总体,包括硬件、固件、软件和负责执行安全策略的组合体。比标准操作系统小几个数量级。
    它建立了一个基本的保护环境并提供一个可信计算机系统所要求的附加用户服务。
  • 本文分析了:近5年(从2013年到2018年中期)的207个TEE漏洞报告,重点关注由Qualcomm、Trustonic、Huawei、Nvidia和 Linaro这5家主要供应商为基于Arm的设备开发的广泛部署的TEE系统;
  • 本文内容包括:对现有漏洞的程度和原因的多重见解,以及缓解它们的潜在解决方案。

发现

  • 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技术结合起来(Ⅷ)。

II. BACKGROUND AND MOTIVATION

1. Trusted Execution Environment and Arm TrustZone

  • 本文重点关注:Cortex-A TrustZone的实现(该技术广泛应用于移动设备)。
  • TrustZone的核心概念是两个保护域:secure world(SW)normal world(NW)
  • 每个物理处理器核提供两个虚拟核以及它们之间的安全切换机制
    • 两个虚拟核:被认为“secure”(SW);被认为“non-secure”(NW);
  • 系统当前的执行状态由处理器的NS位标识。
  • 硬件逻辑存在于 TrustZone-enabled的AMBA总线中,它将处理器的安全状态扩展到其他系统组件,以确保SW资源不能被NW组件访问。(访问控制)

2. Software Architecture of TrustZone-assisted TEE

  • NW(Rich Execution Environment, REE)中运行不受信任的操作系统;
  • SW中运行TEE软件组件(参见Figure 1)。
  • SW内部,可信操作系统以监督模式(保护环EL1)运行;
  • 可信操作系统以用户模式(保护环EL0)运行时,它对TAs的生命周期提供运行支持。
  • 可信操作系统的核心是可信内核,它为调度和管理TAs提供了基本的操作系统原语。
  • 可信操作系统还实现了访问可信外设的设备驱动程序,通过环境交换SMC指令和共享内存,处理跨环境的请求,并且实现了共享库(如加密)和TEE原语(远程认证、受信任I/O和安全存储)。
    • SMC是TrustZone的一部分。Non-Secure world要切换到Secure-World的时候需要进入Monitor模式才能进行操作,而在armv7a中就是通过SMC指令进入到TrustZone。来源:armv7a中的SMC指令应用
  • 在保护环EL3中,secure monitor实现了环境之间的安全上下文切换机制,并以最高权限运行。
  • TEE bootloader引导TEE系统进入一个安全状态,这对实现可信引导原语是至关重要的。它被分为两个部分,首先在EL3中运行,然后在EL1中运行。
  • 可信操作系统(trusted OS)、secure monitor以及 TEE bootloader 共同构成了典型TEE系统的TCB软件。
  • 因此,TEE设计者的目标是实现小且无bug。
  • (ps:实在不知道‘world’怎么翻译比较好,总觉得译为‘世界’有点不妥当,所以纹紋都译为‘环境’啦,望关注)
    图1

3.Attacking TEE-enabled Devices

  • 下面使用Table I中列出的一组具有代表性的漏洞来劫持 TEE-enabled 设备的两个关键组件:TEE内核和REE内核(即Linux)
  • 这些漏洞演示了在运行 Qualcomm’s TEE 系统的平台上,如何将用户级NW应用程序升级其特权。

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)。

表1

  • 表注:
    • 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缺陷可能在全球范围内产生巨大影响

  • 自此,类似的方法已经被成功地用于攻击其他流行的TEE系统。

III. OVERVIEW

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))。
表2

公开安全漏洞分类
收集漏洞报告后,手动分类分析。
对于具有CVSS评分的漏洞,采用基于属性评分的分类度量。
评级系统包括四个类别:危急、严重、中级、低级。
类别
特定漏洞的严重程度可能具有不同的安全含义。关键漏洞通常会导致TEE、REE或两者的机密性或完整性的完全泄露。

二元分析
为了获得TEE系统更多细节,本文对其中的一个子集进行逆向工程
该方法允许我们量化每个系统TCB的大小;其次,它帮助确定了每个系统的具体软件架构,例:Huawei使用Arm可信固件(ATF)作为其安全监控软件的基础,而Qualcomm使用自己的实现;再者,它允许我们分析每个TEE实现的内存保护功能

有效性的威胁
缺乏关于专有系统中存在的漏洞的信息可能导致不准确的分类,给定的TEE系统也有过度代表的风险(过拟合)
特别地,公开报告的关于该系统的漏洞的数量很大程度上超过了其他系统的数量。
本文只分析了以前报告过的漏洞。故可能存在的未知类型漏洞,可能会揭示TEE系统其他的基本安全问题。

2. 观察总结
表3

  • 表3(Table IIl)根据系统的严重程度量化了与每个系统相关的已披露漏洞的数量。几乎一半的错误报告被评为危急级或严重级。
  • 特别地,124份报告中有53份(42%)披露的安全漏洞被认为是危急级。
  • 每个TEE至少有一个非低级漏洞:
    • Trustonic有1个危急级漏洞;
    • Huawei有2个严重级漏洞;
    • Nvidia有5个严重级漏洞。
  • 由于这些系统被广泛部署,所以全世界有数百万用户可能已经受到这些漏洞的严重影响。
  • 注意:尽管Qualcomm TEE漏洞数占比最大(74%),我们也仍旧不能说它是最不安全的TEE或者比较个别的TEE。毕竟CVE报告过程的方法不一致,得出上述结果可能只是由于Qualcomm开发者和用户报告的更多。
  • 但这些结果是有用的。因为它们允许我们建立此类系统漏洞的下限,对总体趋势进行推理,并将一般TEE趋势与其他类型系统的趋势进行比较。

3. TrustZone-assisted TEEs的漏洞来源

  • 三个主要来源: 架构、实现和硬件。
  • 架构问题包括整个TEE系统架构的缺陷,例如使用ASLR缺乏内存保护。
  • 实现问题对应于TEE系统软件中的缺陷,例如缓冲区溢出。
  • 硬件问题涉及硬件行为可能被滥用以破坏TEE的安全性,例如,旁通道。
  • 很多漏洞与表I中描述的攻击所利用的漏洞具有相似的性质。作者确定了其他可以进一步利用的漏洞类型,例如并发性漏洞。
  • 在TrustZone-enabled的SoCs中,硬件问题非常普遍,并且可能在未来被用来发动具有高度破坏性的攻击。

在下一节中,本文将通过讨论每种类型的问题详细介绍各漏洞。

Ⅳ. ARCHITECTURAL ISSUES

本节是从现存TEE系统的架构层面来分析漏洞的(本节介绍了9个),并附上了Qualcomm,Trustonic,Huawei,Nvidia,Linaro的系统具体细节图,如下:
图2

  • 图注: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内核中:

  • 通常,TEE系统需要SW中存有的驱动程序,来协调它对安全敏感设备的访问,例如:用于用户身份验证的指纹传感器,或用于DRM所保护内容的安全输出的显示帧缓冲区。
  • 驱动程序往往很复杂,且是bug的传统来源,故作者认为它们不应该在TEE内核空间中运行(像在S-EL1模式中)。
  • 从图2中可以看出,Trustonic和Nvidia采用了微内核架构,驱动程序运行在SW的用户空间(S-EL0)中,遵循了这种方法。
  • 相对地,Qualcomm、Huawei和Linaro在S-ELI模式下运行TEE驱动器。
    • Qualcomm和Linaro都采用了一个单片(集成)架构,所有特权代码都在内核空间运行。××
    • Huawei将一些可信操作系统功能委托给用户空间,即控制TAs生命周期的工作,并将其分配给一个名为GlobalTask的特权TA(见图2)。×

I02. TEE系统子组件之间宽泛的接口

  • 对于TEE系统来说,这些接口已经变得大得令人担忧。
  • 在Android操作系统中,至少有四个守护进程拥有对TrustZone驱动程序的特权访问权!
  • TEE内核公开的SMC调用接口使NW软件可以访问大量的TAs。(Trustonic TEE依赖32个不同的TAs)
  • TAs处理的命令集也往往相当大。(Widevine TA实现了70个不同的命令,其中很多操纵着复杂的媒体数据结构)
  • TEE内核向TAs暴露了大量的系统调用:(在Qualcomm的TEE中有69个系统调用)
  • 对TEE系统调用的访问权限通常是粗粒度的:(在Qualcomm TEE中,TAs对所有系统调用的访问是杂乱的)
  • 在某些情况下,由安全驱动程序提供的接口可以扩展得非常大:(在Trustonic TEE中,能对指纹设备驱动程序控制访问的TAs,实际上可以访问部署在TA中的每一个TA)

I03. TEE有过大的TCB

  • 基于TEE系统的部分设计哲学是:它应该依赖于一个较小的TCB
  • 为了验证这一原则,本文根据它们的固件和它们的源代码分析了它们的TCB大小。
  • TAs实现了安全敏感的REE函数,TCB中同时包含了trusted OS和TAs。
  • 表IV给出了本文与一些参考操作系统的比较结果,发现:
    • TEE系统的TCBs是大量的,例:在Qualcomm TEE中达到1.6 MB。
    • 注:这些数字是保守的,毕竟固件包中不包括可以动态加载的额外TAs。
    • 一些TAs有其相当大的规模。有了这样的规模,就不能保证这些可信应用(TA)真的可信(因为TA通过SMCs接受来自NW的输入,潜在的漏洞很容易被利用)。
    • 从TCB大小的角度来看,尽管现有的TEE内核都明显比Linux内核小(大约三个数量级),但它们中的大多数都要比与其同复杂度的微内核(seL4)大得多。
    • 图4
  • 图注:研究的各TEE系统与参考操作系统的TCB大小(分别在中线上方和下方):数值来自TEE二进制文件和固件/系统映像文件系统中可加载的TAs。对于开源系统,软件的编译支持优化,使用SLOCCount计算代码行数

2. 正常与安全环境之间的隔离漏洞
在一些TEE系统中,SW和NW之间的隔离机制会因为TEE内核的危险系统调用而被破坏。

I04. 从TAs具有的映射功能上讨论

  • 某些应用程序,例如DRM保护的视频渲染,需要一个高效的共享内存机制,允许跨世界以低延迟交换大量数据。(这就是可能的漏洞)
    • 关于DRM:目的是保护数字媒体的版权,从技术上防止数字媒体的非法复制,或者在一定程度上使复制很困难,最终用户必须得到授权后才能使用数字媒体。
  • 一些TEE系统提供了很容易被用于特权升级的机制。(更明显的漏洞)例:
    • Qualcomm TEE公开了一个可信操作系统调用,允许任何TA映射任何属于NW的物理内存,包括到REE操作系统内核。(可能是为了方便回忆?NW中文件丢失可从SW中加载?若真如此,那只能说明高通在平衡易用性和安全性之间,偏重了易用而放弃了一部分安全)
      • 通过破坏TA,攻击者可以自动接管Android操作系统,扫描Linux内核的物理地址空间,并通过补丁引入后门 (见表I中的E6)。
    • Trustonic TEE阻止TAs映射和修改物理内存。
      • 这个操作仅限于特定的驱动TAs。
      • 即:TAs若想通过共享内存交换数据卷,必须向一个专用驱动TA发出一个请求。
      • (这个例子可能想说明Trustonic这方面看起来做的不错)
    • Samsung使用这种方法来分割基于TrustZone的完整性度量架构(TIMA)的功能。
      • 一个TA驱动程序提供映射物理内存的能力,
      • 另一个TA使用这种服务来度量系统映像的完整性。
      • 白名单是用来防止任意TA访问TA驱动程序的。(目前看起来不错)
      • 但白名单在TA驱动程序中是硬编码的,允许TA的数量相当大(达到34),即通过破坏这些TAs,攻击者可以自由地劫持Android。(这个问题估计Trustonic和Samsung都会面临的)

I05. 从危险的调试通道上讨论

  • 通过TEE调试机制从SW向NW方向泄漏信息,这个特性促进了表I中描述的一些漏洞。
    • 特权升级攻击利用了Huawei TEE的系统调用,它允许TA应用程序将其堆栈跟踪转储到NW的内存区域。使用这种机制,攻击者可以了解GlobalTask的物理地址空间,并使用这些信息来策划攻击。
    • (上面I01中有提到Huawei将一些可信操作系统功能委托给用户空间,即控制TAs生命周期的工作,并将其分配给一个名为GlobalTask的特权TA。所以这一部分被攻击的话,它就非常不安全了。)
  • 暴露在NW上的调试日志在Trustonic TEE中也很常见,这可能会泄露关于TAs内部的敏感信息。

3. 内存保护机制
内存保护机制的设计并不好。表V总结了各TEE系统实现的机制的发现。(下面重点提了两个漏洞)(我认为这是在从软件层面讲防御)

I06. 要么缺乏ASLR,要么ASLR实现的不好

  • (注)ALSR地址空间配置随机加载利用随机方式配置数据地址空间,使某些敏感数据(例如操作系统内核)配置到一个恶意程序无法事先获知的地址,令攻击者难以进行攻击,是一种防范内存损坏漏洞被利用的计算机安全技术。
  • 在可信TEE中, TAs都被加载到虚拟地址空间的相同固定地址中(0x1000)。每个TA都有一个公共库,它为每个TA都映射到一个常量地址(0x7D01000)。即,(对攻击者来说)在TA中发现的任何漏洞都可以被利用,而不需要再花精力去确定TA的加载地址。
  • Trustonic TEE,一个被叫做mcLib的公共库(参见图2)包含大量代码,这些代码可以提供小工具的源代码来调用函数、调用可信OS系统的调用等。
  • HuaweiNvidiaLinaro TEEs 都没有ASLR机制。
  • Qualcomm TEE为所有TAs提供了ASLR的一种形式
    • 但只使用TA代码加载到其中的一小段物理内存。
    • 所有的TAs都被加载到一个持续分配物理内存的相对较小的区域中,这个区域的大小大约为100MB。即,ASLR提供的熵值受到该区域大小的限制。
    • 因此,虽然理论上可以通过使用64位虚拟地址空间来实现高熵ASLR,但Qualcomm TEE实现的ASLR大约被限制为9位,这大大减少了攻击者猜测TA的基址所需的猜测次数。
  • 所研究的TEE系统中没有一个具有KASLR,即TEE内核的ASLR。

I07. 没有stack cookiesguard pages或者execution protection

  • 除了ASLR,现代操作系统还采用了额外的内存保护机制。
    • stack cookies (SC)是帮助检测堆栈破坏实例中止程序执行的唯一值。
    • guard pages(GP)将每个进程中的可变数据段(即堆栈、堆和全局数据)分隔开,以防止攻击者在非法访问时使用一个段的溢出来触发错误,从而破坏另一个段。
    • execution protection(XP)防止程序在某些内存区域内执行,可以通过各种方法实现。
      • 在Arm上,SCTLR寄存器中的WXN位可以用于隐式标记为永不执行(XN)的可写内存区域。
      • 另一种选择是使用内存页属性XNUnprivileged XN (无特权的XN,UXN)和Privileged (有特权的XN,PXN)。
  • 但TEE系统仅部分实现了这些机制(见表V)。在这里插入图片描述

表注:用户和管理员模式的内存保护机制。
●:完全执行;
◐和◯:部分执行或未执行;
-:没有找到与执行相关的信息。

    • Trustonic TEE缺乏stack cookies,脆弱的TAs易堆栈溢出。
      • 它从TA的数据段中分配全局变量和堆栈,而不提供中间的guard pages。
      • 该内存布局将堆栈放置在数据段的末尾,并在其之前放置全局变量,这是一个区域溢出到另一个区域的完美配置。(高级黑
        声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/91892
推荐阅读
相关标签