OPTEE之ARM安全扩展

目录

[一、BTI(Branch Target Identification)](#一、BTI(Branch Target Identification))

[二、如何使能OP-TEE core的BTI](#二、如何使能OP-TEE core的BTI)

三、如何使能TA的BTI


一、BTI(Branch Target Identification)

分支目标识别(BTI)是ARMv8.5(及Armv9.0)扩展,它为间接分支及其目标提供了控制流完整性(CFI)保护,从而有助于限制JOP(Jump Oriented Programming)攻击。

ARM8.5-A引入了分支目标指令(BTI),BTI也被称为着陆台(landing pads)。可以对处理器进行配置,使间接分支(BR和BLR)只允许target着陆台指令。如果间接分支的目标不是目标着陆台,则会生成分支目标异常。

二、如何使能OP-TEE core的BTI

要在支持BTI的CPU上的TEE内核中使用BTI,请启用CFG_CORE_BTI选项。

OP-TEE内核利用了GCC/clang工具链中的一些内置组件。因此,为了使用CFG_CORE_BTI选项,请确保GCC工具链已使用------enable-standard-branch-protection构建,否则OP-TEE将无法构建。默认库如libgcc.a是用标志(-branch-protection=none)构建的,因此与启用分支保护不兼容。Arm GNU编译器团队正在寻找为用户提供方便访问支持BTI的库的方法。在短期内,他们计划创建文档,使用户能够更容易地自己构建支持BTI的库。从长远来看,他们将开始讨论如何确保支持BTI的库自动提供给用户。请联系GCC团队了解更多信息。同时,构建一个启用BTI的GCC工具链是可能的,请参考Q:如何构建启用BTI的GCC?(OPTEE常见13类问题与解答_安全二次方security²的博客-CSDN博客

clang toolchain也存在同样的问题。因此,当使用clang构建带有CFG_CORE_BTI=y的OP-TEE时,必须在启用BTI保护的情况下构建builtins(在llvm的"compiler-rt"项目中找到)。关于如何在启用BTI的情况下构建compiler-rt,我们有一些说明。这些可以在Q:如何构建启用了BTI的LLVM编译器?(OPTEE常见13类问题与解答_安全二次方security²的博客-CSDN博客

三、如何使能TA的BTI

要使用BTI对TA和用户模式库的支持,请启用CFG_TA_BTI选项。这将确保OP-TEE提供给TA和TA的所有库都是用BTI选项构建的。

当由ldelf加载TA时,在启用TA保护之前,将在运行时检查它们在ELF中的BTI NOTE属性。

在构建TA时,需要确保所使用的任何外部库都具有分支保护。这可以通过使用带选项-n的readelf命令检查库来完成。启用BTI的库将在.note.gnu.property section中拥有BTI NOTE属性。如果不是这样,编译将停止并发出警告,这样做是为了警告用户。

注意:BTI支持目前与CFG_VIRTUALIZATION和CFG_WITH_PAGER选项不兼容。

参考:Arm Security Extensions --- OP-TEE documentation documentation

相关推荐
粥粥粥少女的拧发条鸟25 天前
【论文分享精炼版】 sNPU: Trusted Execution Environments on Integrated NPUs
security·tee·npu
粥粥粥少女的拧发条鸟1 个月前
【论文分享】sNPU: Trusted Execution Environments on Integrated NPUs 24‘ISCA
tee·npu
代码改变世界ctw2 个月前
Armv8/Armv9的Pstate寄存器介绍
汇编·arm开发·trustzone·atf·tee·寄存器·secure
代码改变世界ctw4 个月前
TEE的存储系统是如何实现的?如何保证其安全的?
安全·trustzone·optee·tee·安全存储·storage·trustonic
安全二次方security²5 个月前
ARM架构安全特性之防御执行技术
分支目标识别·侧信道攻击·栈溢出攻击·arm安全架构·指针认证·内存标记扩展·推测屏障指令
叶卡捷琳堡6 个月前
QEMU_v8搭建OP-TEE运行环境
linux·ubuntu·qemu·optee·tee
安全二次方security²6 个月前
ARM FVP平台的terminal窗口大小如何设置
arm·optee·arm安全架构·fvp·窗口大小设置·fixed virtual·fast models
代码改变世界ctw7 个月前
深度学习armv8/armv9 cache的原理
人工智能·深度学习·trustzone·optee·tee·armv8·周贺贺
子羽潇潇7 个月前
optee默认安全配置
trustzone·optee
cv工程师小智7 个月前
多核多cluster多系统之间缓存一致性概述
安全·缓存·arm·cache·tee·armv8·armv9