建站技术有哪些,推广平台怎么做,wordpress 流量监控,wordpress自定义主页目录
一、BTI(Branch Target Identification)
二、如何使能OP-TEE core的BTI
三、如何使能TA的BTI 一、BTI(Branch Target Identification) 分支目标识别(BTI)是ARMv8.5(及Armv9.0)扩展#xff0c;它为间接分支及其目标提供了控制流完整性(CFI)保护#xff0c;从而有助于限…目录
一、BTI(Branch Target Identification)
二、如何使能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-protectionnone)构建的因此与启用分支保护不兼容。Arm GNU编译器团队正在寻找为用户提供方便访问支持BTI的库的方法。在短期内他们计划创建文档使用户能够更容易地自己构建支持BTI的库。从长远来看他们将开始讨论如何确保支持BTI的库自动提供给用户。请联系GCC团队了解更多信息。同时构建一个启用BTI的GCC工具链是可能的请参考Q如何构建启用BTI的GCC?OPTEE常见13类问题与解答_安全二次方security²的博客-CSDN博客 clang toolchain也存在同样的问题。因此当使用clang构建带有CFG_CORE_BTIy的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