OPTEE之ARM安全扩展
目录
一、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-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
相关文章:
OPTEE之ARM安全扩展
目录 一、BTI(Branch Target Identification) 二、如何使能OP-TEE core的BTI 三、如何使能TA的BTI 一、BTI(Branch Target Identification) 分支目标识别(BTI)是ARMv8.5(及Armv9.0)扩展,它为间接分支及其目标提供了控制流完整性(CFI)保护,从而有助于限…...
Vue [Day4]
组件的三大组成部分 组件的样式冲突 scoped <style scoped></style>data 是一个函数 components/BaseButton.vue <template><div class"BaseButton"><button click"count--">-</button><span>{{ count }}</…...
google chrome 官方下载
官方渠道: 1、链接直接打开就可以下载,最新版实时更新。 32位(x86):https://dl.google.com/tag/s/installdataindex/update2/installers/ChromeStandaloneSetup.exe 64位(x64):htt…...
Misc取证学习
文章目录 Misc取证学习磁盘取证工具veracryto挂载fat文件DiskGenius 磁盘取证例题[RCTF2019]disk 磁盘[](https://ciphersaw.me/ctf-wiki/misc/disk-memory/introduction/#_2)内存取证工具volatility 内存取证例题数字取证赛题0x01.从内存中获取到用户admin的密码并且破解密码 …...
vue打包到jar资源访问被shiro拦截
1.shiro放发对静态资源的拦截// filterMap.put("/202307171550/**", "anon"); // filterMap.put("/config/**", "anon"); // filterMap.put("/index.html", "anon"); 2.装载资源访问 priva…...
选择排序(指针法)
描述 用选择法对10个整数排序。 输入 输入包含10个整数,用空格分隔。 输出 输出排序后的结果,用空格分隔。 输入样例 1 3 1 4 1 5 9 2 6 5 3 输出样例 1 1 1 2 3 3 4 5 5 6 9 输入样例 2 2 4 6 8 10 12 14 16 18 20 输出样例 2 2 4 6 8 1…...
8.6 day07 休息+剑指offer
文章目录 06从尾到头打印链表03数组中重复的数字04二维数组中的查找05 替换空格06重建二叉树背英语单词,看了二十页 06从尾到头打印链表 从尾到头遍历链表 方法一就是用栈来辅助,栈的结构是先进后出的,将链表中的元素加入到栈中去࿰…...
K8S系列文章 之 容器存储基础 Volume
Volume Volume是容器数据卷。我们经常创建删除一些容器,但有时候需要保留容器中的一些数据,这时候就用到了Volume。它也是容器之间数据共享的技术,可以将容器中产生的数据同步到本地。实际就是把容器中的目录挂载到运行着容器的服务器或个人…...
【CHI】架构介绍
Learn the architecture - Introducing AMBA CHI AMBA CHI协议导论--言身寸 1. AMBA CHI简介 一致性集线器接口(CHI)是AXI一致性扩展(ACE)协议的演进。它是Arm提供的高级微控制器总线架构(AMBA)的一部分。…...
hcip的ospf综合实验
题目 拓扑图 IP地址分配及环回 R1 < Huawei>sy Enter system view, return user view with CtrlZ. [Huawei]sysname r1 [r1]int g0/0/0 [r1-GigabitEthernet0/0/0]ip add 172.16.0.1 27 Aug 6 2023 19:03:33-08:00 r1 %%01IFNET/4/LINK_STATE(l)[0]:The line protocol I…...
AP5179 高端电流采样降压恒流驱动IC SOP8 LED车灯电源驱动
产品描述 AP5179是一款连续电感电流导通模式的降压恒流源,用于驱动一颗或多颗串联LED输入电压范围从 5 V 到 60V,输出电流 最大可达 2.0A 。根据不同的输入电压和外部器件, 可以驱动高达数十瓦的 LED。内置功率开关,采用高端电流…...
vue3+vite项目配置ESlint、pritter插件
配置ESlint、pritter插件 在 Vue 3 Vite 项目中,你可以通过以下步骤配置 ESLint 和 Prettier 插件: 安装插件: 在项目根目录下,打开终端并执行以下命令安装 ESLint 和 Prettier 插件: npm install eslint prettier e…...
K8S kubeadm搭建
kubeadm搭建整体步骤 1)所有节点进行初始化,安装docker引擎和kubeadm kubelet kubectl 2)生成集群初始化配置文件并进行修改 3)使用kubeadm init根据初始化配置文件生成K8S的master控制管理节点 4)安装CNI网络插件&am…...
Squeeze-and-Excitation Networks阅读笔记一
文章目录 Abstract1 INTRODUCTION Abstract 卷积算子(convolution operator)是卷积神经网络(cnn)的核心组成部分,它使网络能够通过融合每层局部接受域内的空间和通道信息来构建信息特征。广泛的先前研究已经调查了这种…...
LabVIEW开发3D颈动脉图像边缘检测
LabVIEW开发3D颈动脉图像边缘检测 近年来,超声图像在医学领域对疾病诊断具有重要意义。边缘检测是图像处理技术的重要组成部分。边缘包含图像信息。边缘检测的主要目的是根据强度和纹理等属性识别图像中均匀区域的边界。超声(US)图像存在视觉…...
python10.4.3
10.4.3重构 错误实例 import jsondef laoyonghu(): #获取老用户名字filenameusername.jsonwith open(filename) as f:usernamejson.load(f)return usernamedef xinyonghu(): #获取新用户名字filenameusername.jsonusernameinput("whats your name:")with ope…...
系统架构设计高级技能 · 软件架构概念、架构风格、ABSD、架构复用、DSSA(一)【系统架构设计师】
系列文章目录 系统架构设计高级技能 软件架构概念、架构风格、ABSD、架构复用、DSSA(一)【系统架构设计师】 系统架构设计高级技能 系统质量属性与架构评估(二)【系统架构设计师】 系统架构设计高级技能 软件可靠性分析与设计…...
Vue中,$forceUpdate()的使用
在Vue官方文档中指出,$forceUpdate具有强制刷新的作用。 那在vue框架中,如果data中有一个变量:age,修改他,页面会自动更新。 但如果data中的变量为数组或对象,我们直接去给某个对象或数组添加属性,页面是识…...
K8s中的Ingress
1.把端口号对外暴露,通过ip端口号进行访问 使用Service里面的NodePort实现 2.NodePort缺陷 在每个节点上都会起到端口,在访问时候通过任何节点,通过节点ip暴露端口号实现访问 意味着每个端口只能使用一次,一个端口对应一个应用…...
c++调用ffmpeg api录屏 并进行udp组播推流
代码及工程见https://download.csdn.net/download/daqinzl/88155241 开发工具:visual studio 2019 播放,采用ffmpeg工具集里的ffplay.exe, 执行命令 ffplay udp://224.1.1.1:5001 主要代码如下: #include "pch.h" #include <iostream>…...
SEO_ 揭秘影响搜索引擎排名的核心SEO因素
SEO的核心因素解析:提升搜索引擎排名的关键路径 在当今数字化时代,搜索引擎优化(SEO)已经成为每个网站和企业获取有效流量的重要途径。究竟有哪些核心因素影响搜索引擎的排名呢?本文将深入探讨这些核心SEO因素&#x…...
AI命理推理实测:用专业数据集验证大模型命理能力
提到AI命理相关的评测,就不得不说之前看到的,我们团队最近也沿着这个方向做了针对性测试,不是网上那种随便给大模型发个prompt就喊“准到离谱”的营销玩法,而是用有标准答案的盲测来验证AI命理推理的真实水平。 我们的评测是怎么…...
实战指南:利用快马ai为django项目生成开箱即用的vscode python开发环境
作为一个长期使用Python开发Django项目的程序员,我深知配置开发环境是个既基础又容易踩坑的环节。最近尝试用InsCode(快马)平台生成配置方案,发现能省去大量重复劳动。下面分享我的实战经验: 项目结构规范化 平台生成的Django项目骨架严格遵循…...
OpenClaw多模态技能库:Qwen3.5-9B-AWQ-4bit实现10种图片处理场景
OpenClaw多模态技能库:Qwen3.5-9B-AWQ-4bit实现10种图片处理场景 1. 为什么需要多模态技能库? 去年我接手了一个个人项目,需要批量处理几百张产品照片。手动用PS抠图、调色、加文字,花了两周才完成。当时就想:如果能…...
多模态场景:头巾误判为厨师帽 — 问题分析与调优指南
多模态场景:头巾误判为厨师帽 — 问题分析与调优指南适用对象:使用 Qwen-VL 等多模态大模型做「厨师帽 / 头饰」相关识别时的面试问答、方案设计与落地调优参考。1. 问题本质:为什么会把头巾当成厨师帽 这通常不是「模型坏了」,而…...
DNMSI2C轻量级声级计驱动库:IEC标准SPL数据采集
1. 项目概述DNMSI2C 是一款专为 DNMS Teensy 声音传感器模块设计的轻量级 IC 驱动库,面向嵌入式音频监测场景提供标准化、低开销的声压级(SPL)数据采集能力。该库不依赖浮点运算或动态内存分配,完全适配资源受限的微控制器平台&am…...
Exchange邮件批量删除工具有了网络版了
原有的<<Exchange邮件批量删除工具>>单机版现在已经更新为BS架构网络版,这样只要有网络就可以使用此系统了,方便随时应急。产品也启用了新名称为:MIRS邮件应急响应系统。此系统在几个有大型Exchange server部署的客户处使用效果很…...
新手避坑指南:用STC89C51和DHT11搭建温湿度报警器(附Keil5代码调试心得)
从零搭建温湿度报警器:STC89C51与DHT11实战避坑手册 第一次接触51单片机项目时,那种既兴奋又忐忑的心情至今记忆犹新。看着网上的开源项目资料,满心以为按部就班就能成功,结果从元器件选型到代码烧录,几乎每一步都踩了…...
学习框架和推理引擎有什么区别
学习框架和推理引擎通常分别应用在 AI 大模型的训练和推理 (运行)阶段。模型的核心任务是从大量数据中学习规律,完成特定预测或者生成任务,前者即“模型训练”,后者即“模型运行”。在模型训练时ÿ…...
QtScrcpy全场景投屏效率指南:跨设备协作与多终端控制解决方案
QtScrcpy全场景投屏效率指南:跨设备协作与多终端控制解决方案 【免费下载链接】QtScrcpy Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限 项目地址: https://gitcode.com/barry-ran/Qt…...
