安全之安全(security²)博客目录导读
ATF(TF-A) 威胁模型汇总
目录
一、简介
二、评估目标
1、数据流图
三、威胁分析
1、信任边界
2、资产
3、威胁代理
4、威胁类型
5、威胁评估
5.1 端点在直接请求/响应调用中模拟发送方或接收方FF-A ID
5.2 篡改端点和SPMC之间的共享内存
5.3 端点可以篡改自己的状态或另一个端点的状态
5.4 攻击者可能试图通过使用外部DRAM stress技术注入错误
5.5 保护SPMC不受SMMU上游DMA设备的影响
5.6 重放端点之间过去通信的片段
5.7 恶意端点可能试图通过使用无效或不正确的输入参数来提取数据或状态信息
5.8 恶意端点可能伪造直接消息请求,从而通过直接消息响应揭示另一个端点的内部状态
5.9 探测端点之间的FF-A通信
5.10 恶意代理可能会尝试使用基于软件的cache侧信道攻击技术来泄露SPMC状态或秘密
5.11 恶意端点可能会尝试向SPMC发送针对端点内某个服务的请求,从而拒绝另一个端点访问该服务
5.12 恶意端点可能会尝试通过FFA_NOTIFICATION_BITMAP_CREATE在SPMC中分配通知位图
5.13 恶意端点可能试图通过FFA_NOTIFICATION_BITMAP_DESTROY销毁SPMC中的通知位图
5.14 恶意端点可能会尝试使用FF-A调用FFA_NOTIFICATION_BIND向非预期发送方授予权限,以设置针对另一个接收方的通知
5.15 恶意分区端点可能会尝试设置未绑定到它的通知
5.16 恶意分区端点可能会尝试获取不针对发送到它的通知
5.17 恶意分区端点可能会尝试通过FFA_NOTIFICATION_INFO_GET调用获取关于挂起通知的信息
5.18 恶意分区端点可能会尝试向另一个分区端点发送通知,阻碍其操作
5.19 恶意端点可能滥用FFA_RUN调用来恢复或打开其他端点执行上下文,试图更改SPMC和sp的内部状态,从而可能导致非法状态转换和死锁
5.20 恶意端点可以通过使用FFA_INTERRUPT调用来执行拒绝服务攻击
5.21 恶意安全端点可能会deactivate(虚拟)安全中断,该中断并不是SPMC发出的信号,从而试图改变SPMC的状态,并可能导致系统崩溃
5.22 恶意的安全端点可能不会deactive SPMC向它发出的虚拟中断信号,而是执行安全中断信号完成。这种破坏SPMC内部状态的尝试可能导致未知状态,并进一步导致系统崩溃
5.23 恶意端点可以利用非安全中断抢占安全端点,从而试图使其无法处理针对它的安全虚拟中断
5.24 安全端点依赖于CPU周期的主调度器。恶意端点可能会延迟安全端点的调度。如果不及时处理安全中断,可能会危及SP和SPMC的状态,从而使系统无响应
5.25 恶意的FF-A端点可以使用内存共享调用来耗尽SPMC资源
5.26 如果由于致命错误而终止,而没有释放共享/出借的内存,则借用方可能会干扰出借方的操作
5.27 恶意的FF-A端点可能试图篡改共享/出借内存的内容,同时被其他FF-A端点访问
5.28 恶意的FF-A端点可能会尝试共享不在其翻译机制中的内存,或者尝试指定比它在给定时间拥有的属性更宽松的属性
一、简介
本文提供了TF-ASecure Partition Manager(SPM)实现的威胁模型,或者更一般地说,是运行在实现了FEAT_SEL2(以前称为Armv8.4 Secure EL2)体系结构扩展的系统上的S-EL2参考固件。SPM的实现是基于Arm Firmware Framework for Arm A-profile规范。
简而言之,广泛的FF-A规范和S-EL2固件实现提供:
1)互不信任的软件组件或FF-A术语中的端点的隔离。
2)安全世界中不同的沙箱称为安全分区。这允许从多个供应商隔离服务。
3)在FF-A端点之间进行通信和内存共享的标准协议。
4)正常世界和安全世界的相互隔离(例如,可信操作系统被阻止映射任意NS物理内存区域,如内核或Hypervisor)。
二、评估目标
在该威胁模型中,评估的目标是S-EL2固件或Secure Partition Manager Core组件(SPMC)。EL3下的monitor和SPMD由通用TF-A威胁模型涵盖。
这个威胁模型的范围是:
1)S-EL2 SPMC的TF-A实现基于运行在TrustZone安全环境中的Hafnium hypervisor(在S-EL2异常级别)。该威胁模型与非安全世界的Hypervisor或VMs无关。不包括S-EL1和EL3 SPMC解决方案。
2)该实现符合FF-A v1.0规范和FF-A v1.1规范的一些特性。
3)安全分区是在引导时静态配置的。
4)关注生命周期的运行时部分(没有特别强调引导时间、出厂固件配置、固件更新等)。
5)不包括高级或侵入性物理攻击,如解封,FIB(聚焦离子束)等。
6)假设启用了安全引导,特别是TF-A安全引导(TBBR或双CoT)。攻击者不能引导未经SiP或平台提供程序批准的任意镜像。
1、数据流图
下图显示了SPM的高级数据流图,该数据流图分为位于EL3的SPMD组件和位于S-EL2的SPMC组件。SPMD主要充当非安全世界和安全世界之间的中继器/直通器。它被认为暴露了很小的攻击面。
下表给出了每个图元素的描述。在图中,红色虚线表示信任边界。虚线之外的组件被认为是不可信的。
元素 | 描述 |
---|---|
| SP到SPMC通信。FF-A函数调用或实现定义的Hypervisor调用。 |
| SPMC到SPMD的FF-A调用。 |
| SPMD到NS转发。 |
| SP到SP FF-A直接消息请求/响应。为了简化图表,请注意SP到SP的通信是通过SPMC进行的(SP1向SPMC执行直接的消息请求,目标是SP2。从SP2到SP1的直接消息响应也是如此)。 |
| 硬件控制 |
| Bootloader镜像加载 |
| 外部内存访问 |
三、威胁分析
此威胁模型遵循与通用TF-A威胁模型类似的方法。以下部分定义:
1)信任边界
2)资产
3)威胁代理
4)威胁类型
1、信任边界
1)非安全世界是不可信的。
2)安全世界和非安全世界是不同的信任边界。
3)EL3监视器、SPMD和SPMC是可信的。
4)引导加载程序(如果使用TF-A,特别是BL1/BL2)和运行时BL31通过使用可信引导被隐式信任。
5)EL3 monitor,SPMD, SPMC不信任SP(Secure Partitions)。
2、资产
确定以下资产:
1)SPMC状态。
2)SP的状态。
3)endpoints之间的信息交换(partition消息)。
4)SPMC secrets(例如启用时的指针身份验证密钥)。
5)SP secrets(例如应用程序密钥)。
6)调度周期。
7)共享内存。
3、威胁代理
确定以下威胁代理:
1)非安全端点(稍后称为NS-Endpoint):NS-EL2 (Hypervisor)或NS-EL1 (VM或OS内核)上的非安全世界客户端。
2)安全端点(以后称为S-Endpoint):通常是一个安全分区。
3)硬件攻击(非侵入性)需要对设备进行物理访问,例如总线探测或DRAM压力测试。
4、威胁类型
在通用TF-A威胁模型中暴露的以下威胁类别被重用(re-used):
1)欺骗(Spoofing)
2)篡改(Tampering)
3)抵赖(Repudiation)
4)信息泄露(Information disclosure)
5)拒绝服务(Denial of service)
6)特权提升(Elevation of privilege)
类似地,此威胁模型重用相同的威胁风险评级。风险分析是基于服务器或移动终端进行评估的。
5、威胁评估
通过对数据流图的每个元素应用STRIDE威胁分析,可以识别出以下威胁。
5.1 端点在直接请求/响应调用中模拟发送方或接收方FF-A ID
序号 | 01 | ||
---|---|---|---|
威胁 | 端点在直接请求/响应调用中模拟发送方或接收方FF-A ID | ||
数据流 | DF1, DF2, DF3, DF4 | ||
受影响的TF-A组件 | SPMD, SPMC | ||
资产 | SP状态 | ||
威胁 代理 | NS-Endpoint, S-Endpoint | ||
| 欺骗 | ||
产品 类型 | 服务器 | 移动终端 | |
| 严重(5) | 严重(5) | |
可能性评分 | 严重(5) | 严重(5) | |
| 严重(25) | 严重(25) | |
缓解 措施 | TF-A SPMC并没有减轻这种威胁。下面的指导留给系统集成商在必要时实现。SPMC必须在直接消息请求/响应接口中执行检查,以确保端点不能欺骗源和目的世界(例如,由NWd发起的直接发送到SWd的消息不能使用SWd ID作为发送方ID)。此外,可以添加驻留在SPMC中的软件组件,用于直接请求/响应过滤。它可以配置已知ID列表,以及在一个端点和另一个端点之间可以发生哪些交互(例如,哪个NWd端点ID向哪个SWd端点ID发送直接请求)。该组件检查发送方/接收方字段,以确保端点之间的合法通信。类似的组件可以存在于操作系统内核驱动程序或Hypervisor中,尽管它仍然不受SPMD/SPMC的信任。 |
5.2 篡改端点和SPMC之间的共享内存
序号 | 02 | |
---|---|---|
威胁 | 篡改端点和SPMC之间的共享内存。当SPMC处理RX/TX缓冲区时,恶意端点可能会试图篡改其RX/TX缓冲区内容(TOCTOU)。 | |
数据流 | DF1, DF3, DF4, DF7 | |
受影响的TF-A组件 | SPMC | |
资产 | 共享内存,信息交换 | |
威胁 代理 | NS-Endpoint, S-Endpoint | |
| 篡改 | |
产品 类型 |
| 移动终端 |
| 高(4) | 高(4) |
可能性评分 | 高(4) | 高(4) |
| 高(16) | 高(16) |
| 在FF-A v1.0和v1.1的上下文中,这是共享RX/TX缓冲对以及在PARTITION_INFO_GET或mem共享原语中的使用情况。SPMC必须在处理TX缓冲区的内容之前将其内容复制到内部临时缓冲区。 SPMC必须对不受信任的端点通过TX缓冲区传输的数据实现强化的输入验证。TF-A SPMC通过强制检查通过RX/TX缓冲区传输的数据来减轻这种威胁。 |
5.3 端点可以篡改自己的状态或另一个端点的状态
序号 | 03 | |
---|---|---|
威胁 | 端点可以篡改自己的状态或另一个端点的状态。恶意端点可能试图通过使用不寻常的FF-A函数调用组合(或乱序)来破坏自己或其他SP状态。这也可以是一个端点向另一个端点发出FF-A函数调用,而后者还没有处于接收它的状态(例如,SP在正常世界尚未启动时向正常世界发送直接请求)。 通过在FF-A内存共享、直接请求和响应或处理中断中使用意外转换来改变SPMC状态本身。这可以通过随机刺激注入或fuzzing来实现。 | |
数据流 | DF1, DF2, DF3, DF4 | |
受影响的TF-A组件 | SPMD, SPMC | |
资产 | SP状态, SPMC状态 | |
威胁 代理 | NS-Endpoint, S-Endpoint | |
| 篡改 | |
产品 类型 |
|
|
| 高(4) | 高(4) |
可能性评分 | 中(3) | 中(3) |
| 高(12) | 高(12) |
| TF-A SPMC通过遵循FF-A v1.1 EAC0规范中描述的分区运行时模型指导来缓解此类威胁。SPMC在运行时执行大量检查,通过遵循分区运行时模型来防止非法状态转换。 |
5.4 攻击者可能试图通过使用外部DRAM stress技术注入错误
序号 | 04 | |
---|---|---|
威胁 | 攻击者可能试图通过使用外部DRAM stress技术注入错误。恶意代理可能会尝试在SPMC管理的页表中切换SP Stage-2 MMU描述符位。这可能发生在Rowhammer类型的攻击中。 | |
数据流 | DF7 | |
受影响的TF-A组件 | SPMC | |
资产 | SP或SPMC状态 | |
威胁 代理 | 硬件攻击 | |
| 篡改 | |
产品 类型 | 服务器 |
|
| 高(4) | 高(4) |
可能性评分 | 低(2) | 中(3) |
| 中(8) | 高(12) |
| TF-A SPMC不提供针对此类攻击的缓解措施。它可以通过使用专用硬件电路或在芯片组或平台级别进行加固来解决,这留给集成商。 |
5.5 保护SPMC不受SMMU上游DMA设备的影响
序号 | 05 | |
---|---|---|
威胁 | 保护SPMC不受SMMU上游DMA设备的影响。设备可能试图篡改内部SPMC代码/数据段。 | |
数据流 | DF5 | |
受影响的TF-A组件 | SPMC | |
资产 | SPMC或SP状态 | |
威胁 代理 | NS-Endpoint, S-Endpoint | |
| 篡改、特权提升 | |
产品 类型 |
|
|
| 高(4) | 高(4) |
可能性评分 | 中(3) | 中(3) |
| 高(12) | 高(12) |
| 平台可能更喜欢通过SMMU配置和页表分配引导时间、静态分配的内存区域。FF-A v1.1规范通过静态DMA隔离提供了这种功能。TF-A SPMC并没有减轻这种威胁。它将在未来的版本中采用静态DMA隔离方法。 |
5.6 重放端点之间过去通信的片段
序号 | 06 | |
---|---|---|
威胁 | 重放端点之间过去通信的片段。恶意端点可能会重放发生在两个合法端点之间的消息交换,从而触发故障或从接收端点提取秘密。特别是,端点和SPMC之间带有碎片消息的内存共享操作可能会被恶意代理重放,因为恶意代理可以访问或获得对不属于该代理的内存区域的权限。 | |
数据流 | DF2, DF3 | |
受影响的TF-A组件 | SPMC | |
资产 | 信息交换 | |
威胁 代理 | NS-Endpoint, S-Endpoint | |
| 抵赖 | |
产品 类型 |
|
|
| 中(3) | 中(3) |
可能性评分 | 高(4) | 高(4) |
| 高(12) | 高(12) |
| TF-A SPMC并没有减轻这种威胁。 |
5.7 恶意端点可能试图通过使用无效或不正确的输入参数来提取数据或状态信息
序号 | 07 | |
---|---|---|
威胁 | 恶意端点可能试图通过使用无效或不正确的输入参数来提取数据或状态信息。缺乏输入参数验证或恶意伪造输入参数的副作用可能会影响SPMC。 | |
数据流 | DF1, DF2, DF3, DF4 | |
受影响的TF-A组件 | SPMD, SPMC | |
资产 | SP/SPMC秘密,SP/SPMC状态 | |
威胁 代理 | NS-Endpoint, S-Endpoint | |
| 信息交换 | |
产品 类型 |
|
|
| 高(4) | 高(4) |
可能性评分 | 中(3) | 中(3) |
| 高(12) | 高(12) |
| 安全分区必须遵循安全标准和最佳实践,以减轻被常见漏洞利用的风险。使用软件(金丝雀)或硬件强化技术(XN、WXN、BTI、指针身份验证、MTE)有助于及早发现和阻止漏洞利用。TF-A SPMC通过实现栈保护、指针认证、BTI、XN、WXN和安全加固技术来减轻这种威胁。 |
5.8 恶意端点可能伪造直接消息请求,从而通过直接消息响应揭示另一个端点的内部状态
序号 | 08 | |
---|---|---|
威胁 | 恶意端点可能伪造直接消息请求,从而通过直接消息响应揭示另一个端点的内部状态。安全分区或SPMC通过直接消息响应来回复分区消息,其中包含可能揭示其内部状态的信息(例如超出允许范围的分区消息响应)。 | |
数据流 | DF1, DF2, DF3, DF4 | |
受影响的TF-A组件 | SPMC | |
资产 | SPMC/SP状态 | |
威胁 代理 | NS-Endpoint, S-Endpoint | |
| 信息泄露 | |
产品 类型 | 服务器 | 移动终端 |
| 中(3) | 中(3) |
可能性评分 | 低(2) | 低(2) |
| 中(6) | 中(6) |
| 对于针对SPMC的直接请求的特定情况,对后者进行加固,以防止通过直接消息响应透露其内部状态或SP的状态。此外,SPMC根据分区运行时模型建立的规则在运行时执行大量检查,以阻止端点对另一个端点的内部状态进行恶意提取。 |
5.9 探测端点之间的FF-A通信
序号 | 09 | |
---|---|---|
威胁 | 探测端点之间的FF-A通信。SPMC和sp通常加载到外部内存(由TrustZone内存控制器保护)。当共享缓冲区保存在外部内存中时,恶意代理可以使用非侵入性方法探测外部内存总线,并提取SP和SPMC之间的通信,或者SP之间的通信。 | |
数据流 | DF7 | |
受影响的TF-A组件 | SPMC | |
资产 | SP/SPMC状态, SP/SPMC秘密 | |
威胁 代理 | 硬件攻击 | |
| 信息泄露 | |
产品 类型 | 服务器 | 移动终端 |
| 中(3) | 中(3) |
可能性评分 | 低(2) | 中(3) |
| 中(6) | 中(9) |
| 期望平台或芯片组提供保护DRAM内容的保障。TF-A SPMC不能减轻这类攻击,这是留给集成商的。 |
5.10 恶意代理可能会尝试使用基于软件的cache侧信道攻击技术来泄露SPMC状态或秘密
序号 | 10 | |
---|---|---|
威胁 | 恶意代理可能会尝试使用基于软件的cache侧信道攻击技术来泄露SPMC状态或秘密。 | |
数据流 | DF7 | |
受影响的TF-A组件 | SPMC | |
资产 | SP或SPMC状态 | |
威胁 代理 | NS-Endpoint, S-Endpoint | |
| 信息泄露 | |
产品 类型 | 服务器 | 移动终端 |
| 中(3) | 中(3) |
可能性评分 | 低(2) | 低(2) |
| 中(6) | 中(6) |
| 从集成的角度来看,假设在S-EL2中使用SPMC组件的平台(因此实现了Armv8.4 FEAT_SEL2架构扩展)实现了对Spectre, Meltdown或其他cache时间侧信道类型攻击的缓解。TF-A SPMC实现了一种缓解(防止在异常返回后进行投机的屏障指令)。SPMC可以通过软件缓解措施(例如投机屏障)进一步加强,以应对硬件中未涵盖的情况。使用加固的编译器和适当的选项,代码检查是减轻幽灵类型攻击的推荐方法。对于未硬化的内核,使用诸如内核页表隔离之类的技术可以帮助减轻Meltdown类型的攻击。 |
5.11 恶意端点可能会尝试向SPMC发送针对端点内某个服务的请求,从而拒绝另一个端点访问该服务
序号 | 11 | |
---|---|---|
威胁 | 恶意端点可能会尝试向SPMC发送针对端点内某个服务的请求,从而拒绝另一个端点访问该服务。类似地,恶意端点可能以端点内的服务为目标,使得后者无法从另一个端点请求服务。 | |
数据流 | DF1, DF2, DF3, DF4 | |
受影响的TF-A组件 | SPMC | |
资产 | SPMC状态 | |
威胁 代理 | NS-Endpoint, S-Endpoint | |
| 拒绝服务 | |
产品 类型 | 服务器 | 移动终端 |
| 中(3) | 中(3) |
可能性评分 | 中(3) | 中(3) |
| 中(9) | 中(9) |
| TF-A SPMC并没有减轻这种威胁。限制操作完成的时间可以通过使用受信任的看门狗来实现。其他服务质量监控可以在SPMC中实现,例如在有限的时间范围内计算操作的数量。 |
5.12 恶意端点可能会尝试通过FFA_NOTIFICATION_BITMAP_CREATE在SPMC中分配通知位图
序号 | 12 | |
---|---|---|
威胁 | 恶意端点可能会尝试通过FFA_NOTIFICATION_BITMAP_CREATE在SPMC中分配通知位图。这可能是试图耗尽SPMC的内存,或者为不打算接收来自sp的通知的VM分配位图。从而创造了一个本来不应该存在的渠道的可能性。 | |
数据流 | DF1, DF2, DF3 | |
受影响的TF-A组件 | SPMC | |
资产 | SPMC状态 | |
威胁 代理 | NS-Endpoint, S-Endpoint | |
| 拒绝服务,欺骗 | |
产品 类型 | 服务器 |
|
| 中(3) | 中(3) |
可能性评分 | 中(3) | 中(3) |
| 中(9) | 中(9) |
| TF-A SPMC通过为位图分配定义一个固定大小的池来减轻这种威胁。它还限制了指定的从NWd端点使用的FF-A调用。在NWd中,管理程序应该限制对指定的FF-A调用的访问。 |
5.13 恶意端点可能试图通过FFA_NOTIFICATION_BITMAP_DESTROY销毁SPMC中的通知位图
序号 | 13 | |
---|---|---|
威胁 | 恶意端点可能试图通过FFA_NOTIFICATION_BITMAP_DESTROY销毁SPMC中的通知位图。这可能是试图篡改SPMC状态,使分区无法接收通知。 | |
数据流 | DF1, DF2, DF3 | |
受影响的TF-A组件 | SPMC | |
资产 | SPMC状态 | |
威胁 代理 | NS-Endpoint, S-Endpoint | |
| 篡改 | |
产品 类型 | 服务器 |
|
| 低(2) | 低(2) |
可能性评分 | 低(2) | 低(2) |
| 低(4) | 低(4) |
| TF-A SPMC通过限制NWd发出指定的FF-A调用来缓解这一问题。此外,如果存在待处理的通知,则不能销毁通知位图。在NWd中,管理程序必须限制可以发出指定调用的NS-Endpoint。 |
5.14 恶意端点可能会尝试使用FF-A调用FFA_NOTIFICATION_BIND向非预期发送方授予权限,以设置针对另一个接收方的通知
序号 | 14 | |
---|---|---|
威胁 | 恶意端点可能会尝试使用FF-A调用FFA_NOTIFICATION_BIND向非预期发送方授予权限,以设置针对另一个接收方的通知。这可能是试图篡改SPMC状态,从而建立一个意想不到的、可能是恶意的通信通道。 | |
数据流 | DF1, DF2, DF3 | |
受影响的TF-A组件 | SPMC | |
资产 | SPMC状态 | |
威胁 代理 | NS-Endpoint, S-Endpoint | |
| 篡改、欺骗 | |
产品 类型 |
| 移动终端 |
| 低(2) | 低(2) |
可能性评分 | 中(3) | 中(3) |
| 中(6) | 中(6) |
| TF-A SPMC通过限制指定的FFA_NOTIFICATION_BIND调用只能由接收方发出来缓解这种情况。接收方负责将通知id分配给一个特定分区。此外,不打算接收通知的接收器必须在各自分区的清单中禁用通知接收。至于来自NWd的呼叫,如果NWd VM在初始化时分配了位图,TF-A SPMC不能保证不会发生这种威胁。Hypervisor必须在NWd中进行缓解,类似于SPMC在SWd中的调用。但是,如果Hypervisor已经被破坏,SPMC将无法缓解从NWd转发的呼叫。 |
5.15 恶意分区端点可能会尝试设置未绑定到它的通知
序号 | 15 | |
---|---|---|
威胁 | 恶意分区端点可能会尝试设置未绑定到它的通知 | |
数据流 | DF1, DF2, DF3 | |
受影响的TF-A组件 | SPMC | |
资产 | SPMC状态 | |
威胁 代理 | NS-Endpoint, S-Endpoint | |
| 欺骗 | |
产品 类型 | 服务器 |
|
| 低(2) | 低(2) |
可能性评分 | 低(2) | 低(2) |
| 低(4) | 低(4) |
| TF-A SPMC通过检查调用FFA_NOTIFICATION_SET的输入中提供的发送方ID来减轻这种情况。对于给定的接收方,SPMC跟踪哪些通知绑定到哪个发送方。如果发送方是SP,则提供的发送方ID必须与当前正在运行的分区的ID匹配。 |
5.16 恶意分区端点可能会尝试获取不针对发送到它的通知
序号 | 16 | |
---|---|---|
威胁 | 恶意分区端点可能会尝试获取不针对发送到它的通知。 | |
数据流 | DF1, DF2, DF3 | |
受影响的TF-A组件 | SPMC | |
资产 | SPMC状态 | |
威胁 代理 | NS-Endpoint, S-Endpoint | |
| 欺骗 | |
产品 类型 |
| 移动终端 |
| 提示(1) | 提示(1) |
可能性评分 | 低(2) | 低(2) |
| 低(2) | 低(2) |
| TF-A SPMC通过检查调用FFA_NOTIFICATION_GET的输入中提供的接收方ID来减轻这种情况。SPMC跟踪每个接收方等待的通知。提供的接收方ID必须与当前正在运行的分区的ID匹配(如果它是SP)。对于从NWd转发的呼叫,如果接收者已经创建了它的位图,并且有挂起的通知,SPMC将返回挂起的通知。如果Hypervisor或OS内核受到威胁,SPMC将无法减轻来自恶意NWd端点的调用。 |
5.17 恶意分区端点可能会尝试通过FFA_NOTIFICATION_INFO_GET调用获取关于挂起通知的信息
序号 | 17 | |
---|---|---|
威胁 | 恶意分区端点可能会尝试通过FFA_NOTIFICATION_INFO_GET调用获取关于挂起通知的信息。这个调用意味着NWd FF-A驱动程序使用。 | |
数据流 | DF1, DF2, DF3 | |
受影响的TF-A组件 | SPMC | |
资产 | SPMC状态 | |
威胁 代理 | NS-Endpoint, S-Endpoint | |
| 信息泄露 | |
产品 类型 |
|
|
| 低(2) | 低(2) |
可能性评分 | 中(3) | 中(3) |
| 中(6) | 中(6) |
| TF-A SPMC通过将错误返回给sp对FFA_NOTIFICATION_INFO_GET的调用来减轻这种情况。如果Hypervisor或OS内核受到威胁,SPMC将无法减轻来自恶意NWd端点的调用。 |
5.18 恶意分区端点可能会尝试向另一个分区端点发送通知,阻碍其操作
序号 | 18 | |
---|---|---|
威胁 | 恶意分区端点可能会尝试向另一个分区端点发送通知,阻碍其操作。恶意端点的意图可能是干扰接收器和/或主端点的执行,因为它们都可以被NPI和SRI分别抢占。 | |
数据流 | DF1, DF2, DF3, DF4 | |
受影响的TF-A组件 | SPMC | |
资产 | SPMC/SP状态,CPU周期 | |
威胁 代理 | NS-Endpoint, S-Endpoint | |
| 拒绝服务 | |
产品 类型 |
|
|
| 低(2) | 低(2) |
可能性评分 | 中(3) | 中(3) |
| 中(6) | 中(6) |
| TF-A SPMC并没有减轻这种威胁。然而,由于架构的原因,影响是有限的:通知没有排队,已经发出信号的通知需要由接收方检索,直到它可以再次发送。 SRI和NPI在处理之前都不能挂起,这限制了虚假中断的数量。-在给定的执行上下文中,给定的接收者只能将最大数量的通知绑定到给定的发送者。 |
5.19 恶意端点可能滥用FFA_RUN调用来恢复或打开其他端点执行上下文,试图更改SPMC和sp的内部状态,从而可能导致非法状态转换和死锁
序号 | 19 | |
---|---|---|
威胁 | 恶意端点可能滥用FFA_RUN调用来恢复或打开其他端点执行上下文,试图更改SPMC和sp的内部状态,从而可能导致非法状态转换和死锁。端点可以使用FFA_MSG_SEND_DIRECT_REQ ABI调用到另一个端点执行上下文来创建调用链。恶意端点可能会滥用这一点,在调用链中形成循环,从而导致潜在的死锁。 | |
数据流 | DF1, DF2, DF4 | |
受影响的TF-A组件 | SPMC, SPMD | |
资产 | SPMC/SP状态,调度周期 | |
威胁 代理 | NS-Endpoint, S-Endpoint | |
| 篡改、拒绝服务 | |
产品 类型 |
|
|
| 中(3) | 中(3) |
可能性评分 | 中(3) | 中(3) |
| 中(9) | 中(9) |
| TF-A SPMC通过遵循FF-A v1.1 EAC0规范中描述的分区运行时模型指导来缓解此类威胁。SPMC在运行时执行大量检查,通过遵循分区运行时模型来防止非法状态转换。此外,如果接收端端点是当前调用链中当前端点的前身,SPMC将通过返回FFA_DENIED错误代码来拒绝任何形成循环的尝试。只有主调度器才允许打开其他分区的执行上下文,尽管SPMC没有能力检查其标识。安全分区基于运行时模型恢复其他分区的执行上下文的能力有限。这种企图不能损害SPMC的完整性。 |
5.20 恶意端点可以通过使用FFA_INTERRUPT调用来执行拒绝服务攻击
序号 | 20 | |
---|---|---|
威胁 | 恶意端点可以通过使用FFA_INTERRUPT调用来执行拒绝服务攻击,该调用可能试图导致系统崩溃或进入未知状态,因为没有物理中断可以挂起,以便在SPMC中处理。 | |
数据流 | DF1, DF2, DF5 | |
受影响的TF-A组件 | SPMC, SPMD | |
资产 | SPMC/SP状态,调度周期 | |
威胁 代理 | NS-Endpoint, S-Endpoint | |
| 篡改,拒绝服务 | |
产品 类型 |
|
|
| 中(3) | 中(3) |
可能性评分 | 中(3) | 中(3) |
| 中(9) | 中(9) |
| TF-A SPMC通过检测来自分区的调用和简单地返回FFA_ERROR状态接口来缓解这种攻击。SPMC只允许SPMD使用FFA_INTERRUPT ABI来与在非安全世界执行时触发的挂起的安全中断通信。 |
5.21 恶意安全端点可能会deactivate(虚拟)安全中断,该中断并不是SPMC发出的信号,从而试图改变SPMC的状态,并可能导致系统崩溃
序号 | 21 | |
---|---|---|
威胁 | 恶意安全端点可能会deactivate(虚拟)安全中断,该中断并不是SPMC发出的信号,从而试图改变SPMC的状态,并可能导致系统崩溃。SPMC将虚拟中断id映射到物理中断id,以保持虚拟中断驱动程序的简单实现。类似地,恶意安全端点可能会为安全中断多次调用deactivation ABI。此外,恶意安全端点可能会试图停用SPMC向另一个端点执行上下文发出的(虚拟)安全中断,甚至在处理安全中断之前。 | |
数据流 | DF1, DF5 | |
受影响的TF-A组件 | SPMC | |
资产 | SPMC/SP状态 | |
威胁 代理 | S-Endpoint | |
| 篡改 | |
产品 类型 |
|
|
| 中(3) | 中(3) |
可能性评分 | 中(3) | 中(3) |
| 中(9) | 中(9) |
| 在初始化时,TF-A SPMC解析分区清单,以找到负责处理各种安全物理中断的目标执行上下文。TF-A SPMC通过以下方式缓解上述威胁:
|
5.22 恶意的安全端点可能不会deactive SPMC向它发出的虚拟中断信号,而是执行安全中断信号完成。这种破坏SPMC内部状态的尝试可能导致未知状态,并进一步导致系统崩溃
序号 | 22 | |
---|---|---|
威胁 | 恶意的安全端点可能不会deactive SPMC向它发出的虚拟中断信号,而是执行安全中断信号完成。这种破坏SPMC内部状态的尝试可能导致未知状态,并进一步导致系统崩溃。类似地,恶意安全端点可能故意不执行中断停用或中断完成信号。由于SPMC一次只能处理一个安全中断,这可能会阻塞系统,因为所有中断都被无限期地屏蔽,这可能会导致系统崩溃或重新启动。 | |
数据流 | DF1, DF5 | |
受影响的TF-A组件 | SPMC | |
资产 | SPMC/SP状态,调度周期 | |
威胁 代理 | S-Endpoint | |
| 篡改、拒绝服务 | |
产品 类型 |
|
|
| 中(3) | 中(3) |
可能性评分 | 中(3) | 中(3) |
| 中(9) | 中(9) |
| TF-A SPMC不能缓解这种威胁。这是当前SPMC实现的一个限制,需要在未来的版本中加以处理。 |
5.23 恶意端点可以利用非安全中断抢占安全端点,从而试图使其无法处理针对它的安全虚拟中断
序号 | 23 | |
---|---|---|
威胁 | 恶意端点可以利用非安全中断抢占安全端点,从而试图使其无法处理针对它的安全虚拟中断。这可能导致优先级反转,因为安全虚拟中断保持挂起,而非安全中断由非安全世界虚拟机处理。 | |
数据流 | DF1, DF2, DF3, DF5 | |
受影响的TF-A组件 | SPMC, SPMD | |
资产 | SPMC/SP状态,调度周期 | |
威胁 代理 | NS-Endpoint | |
| 拒绝服务 | |
产品 类型 | 服务器 |
|
| 中(3) | 中(3) |
可能性评分 | 中(3) | 中(3) |
| 中(9) | 中(9) |
| TF-A SPMC本身并不能缓解此类威胁。系统集成商必须采取必要的高层设计决策,考虑中断优先级。SPMC执行其角色,使sp能够根据FF-A v1.1 EAC0规范中的指导,在分区清单的帮助下指定针对非安全中断的适当操作。 |
5.24 安全端点依赖于CPU周期的主调度器。恶意端点可能会延迟安全端点的调度。如果不及时处理安全中断,可能会危及SP和SPMC的状态,从而使系统无响应
序号 | 24 | |
---|---|---|
威胁 | 安全端点依赖于CPU周期的主调度器。恶意端点可能会延迟安全端点的调度。如果不及时处理安全中断,可能会危及SP和SPMC的状态,从而使系统无响应 | |
数据流 | DF1, DF2, DF3, DF5 | |
受影响的TF-A组件 | SPMC, SPMD | |
资产 | SPMC/SP状态,调度周期 | |
威胁 代理 | NS-Endpoint | |
| 拒绝服务 | |
产品 类型 |
|
|
| 中(3) | 中(3) |
可能性评分 | 中(3) | 中(3) |
| 中(9) | 中(9) |
| TF-A SPMC不能完全缓解此类威胁。但是,根据FF-A v1.1 EAC0规范中提供的指导,SPMC规定了CPU周期,以便在SPMC调度模式下运行安全端点执行上下文,该模式不能被非安全中断抢占。这减少了周期分配对主调度器的依赖。此外,所有进一步的中断都被屏蔽,直到当前CPU上挂起的安全虚拟中断被处理。这允许SP执行上下文即使在被中断时也能继续处理。 |
5.25 恶意的FF-A端点可以使用内存共享调用来耗尽SPMC资源
序号 | 25 | |
---|---|---|
威胁 | 恶意的FF-A端点可以使用内存共享调用来耗尽SPMC资源。对于涉及SP的每个正在进行的操作,SPMC分配资源来跟踪其状态。如果操作从未结束,则资源永远不会释放。在最坏的情况下,永远不会结束的多个操作可能会耗尽SPMC资源,导致无法进行内存共享操作。这可能会影响其他无害的FF-A端点,使其无法合法地使用内存共享功能。其目的甚至可能是导致SPMC消耗过多的CPU周期,试图使其拒绝向NWd提供服务。 | |
数据流 | DF1, DF2 | |
受影响的TF-A组件 | SPMC, SPMD | |
资产 | SPMC状态 | |
威胁 代理 | NS-Endpoint, S-Endpoint | |
| 拒绝服务 | |
产品 类型 |
|
|
| 高(4) | 中(3) |
可能性评分 | 高(4) | 中3) |
| 高(16) | 中(9) |
| TF-A SPMC使用静态分配的内存池来跟踪正在进行的内存共享操作。在可能的攻击之后,这可能由于内存不足而失败,并向调用者返回错误。此时,任何其他需要使用内存共享进行操作的端点都可能使自己处于不可用状态。关于CPU周期耗尽威胁,SPMC没有提供任何缓解措施,因为虚拟FF-A实例上的任何FF-A端点都允许调用内存共享/出借/赠予。 |
5.26 如果由于致命错误而终止,而没有释放共享/出借的内存,则借用方可能会干扰出借方的操作
序号 | 26 | |
---|---|---|
威胁 | 如果由于致命错误而终止,而没有释放共享/出借的内存,则借用方可能会干扰出借方的操作。这种情况可能使出借方无法运作。 | |
数据流 | DF1, DF2 | |
受影响的TF-A组件 | SPMC | |
资产 | SP状态 | |
威胁 代理 | NS-Endpoint, S-Endpoint | |
| 拒绝服务 | |
产品 类型 |
| 移动终端 |
| 高(4) | 高(2) |
可能性评分 | 中(3) | 中(3) |
| 高(12) | 高(6) |
| TF-A SPMC没有为这种情况提供缓解措施。在失败的情况下,FF-A端点必须尝试放弃共享/出借的内存。用于跟踪SPMC中操作的内存也将保持可用。 |
5.27 恶意的FF-A端点可能试图篡改共享/出借内存的内容,同时被其他FF-A端点访问
序号 | 27 | |
---|---|---|
威胁 | 恶意的FF-A端点可能试图篡改共享/出借内存的内容,同时被其他FF-A端点访问。它可能会尝试这样做:当通过各自的FF-A调用检索或放弃对内存的访问时,使用一个清除标志;或者直接访问内存,而不考虑所有相关端点之间的同步协议。 | |
数据流 | DF1, DF2 | |
受影响的TF-A组件 | SPMC, FF-A endpoint | |
资产 | SP状态 | |
威胁 代理 | NS-Endpoint, S-Endpoint | |
| 拒绝服务、篡改 | |
产品 类型 |
|
|
| 低(2) | 低(2) |
可能性评分 | 中(3) | 中(3) |
| 中(6) | 中(6) |
| 对于威胁中定义的第一种情况,TF-A SPMC通过确保只有在涉及多个借用方的场景中,当所有借用方都放弃对内存的访问时才清除内存,从而减轻了威胁。此外,如果接收方被授予RO权限,则SPMC将通过向相应的FF-A调用返回错误,拒绝代表借用方清除内存的任何请求。威胁中定义的第二种情况不能由SPMC减轻。NS/S FF-A端点需要建立一个健壮的协议来使用共享内存。 |
5.28 恶意的FF-A端点可能会尝试共享不在其翻译机制中的内存,或者尝试指定比它在给定时间拥有的属性更宽松的属性
序号 | 28 | |
---|---|---|
威胁 | 恶意的FF-A端点可能会尝试共享不在其翻译机制中的内存,或者尝试指定比它在给定时间拥有的属性更宽松的属性。这两种方式都可能是试图提升其特权。 | |
数据流 | DF1, DF2 | |
受影响的TF-A组件 | SPMC, FF-A endpoint | |
资产 | SP状态 | |
威胁 代理 | NS-Endpoint, S-Endpoint | |
| 拒绝服务、篡改 | |
产品 类型 |
|
|
| 高(4) | 低(2) |
可能性评分 | 中(3) | 低(2) |
| 高(12) | 低(4) |
| TF-A SPMC通过对提供的内存区域描述符执行完整性检查来减轻这种威胁。对于虚拟FF-A实例上的操作,一旦提供了完整的内存描述符,SPMC就会验证内存是否是调用者转换机制的一部分。SPMC还检查所提供的内存属性是否在所有者拥有的内存属性范围内(就权限而言)。如果指定了更宽松的属性,SPMC将返回错误FFA_INVALID_PARAMETERS。在任何共享/出借或赠予内存的调用以及检索请求中都强制执行许可规则。 |
参考: 11.2. SPMC Threat Model — Trusted Firmware-A 2.9.0 documentation