ARM架构安全特性之防御执行技术

news2024/11/29 1:35:51

安全之安全(security²)博客目录导读

目录

1、侧信道攻击威胁

2、推测屏障Speculation Barriers

3、栈溢出攻击威胁

4、指针认证PAC

5、分支目标识别BTI

6、内存安全违规威胁

7、内存标记扩展MTE

8、加强数据保护

9、特权不可访问(Privileged Access Never (PAN))


软件很少是完美的,而且防御性编程的原则并不总是应用于数百万行代码的所有部分。为了应对这一点,现代编译器和处理器必须在执行点防御漏洞,减少重新编码的需要。Arm 架构包括帮助防御控制流攻击、数据访问攻击以及缓解侧信道攻击的技术。

1、侧信道攻击威胁

攻击者可以利用现代处理器中乱序执行(out-of-order execution)和推测执行(speculative execution)的不良副作用。此攻击可用于破坏操作系统和进程之间的分离,以及进程之间的分离以窃取数据。

2、推测屏障Speculation Barriers

屏障指令可以阻止预测执行,从而缓解缓存推测侧信道攻击(cache-speculation side-channel attacks),例如 Spectre 和 Meltdown。

3、栈溢出攻击威胁

当软件由于实现错误而容易受到攻击时,可以提高抵抗攻击的能力。这可以通过重新编译现有软件,以在支持安全增强的指令集架构上运行,并使用了解这些指令集架构增强的编译器来实现。

防御技术,如仅执行内存(XOM)和代码签名,已导致攻击者使用了越来越多的攻击手段,如 JOP、ROP 和使用后释放(use-after-free)。

4、指针认证PAC

攻击经常试图颠覆软件的控制流程。PAC 是在 Armv8.3-A 中引入的一项功能,用于阻止这些类型的攻击。指针的高位用于存储 PAC,即对指针值和一些额外指定的上下文的加密签名。引入了特殊的指令,可以:

  • 给指针添加 PAC
  • 验证经过身份验证的指针的 PAC
  • 恢复原始指针值

这使得系统可以对某些指针是否被攻击者篡改做出具有密码学强度的保证,从而极大地提高了应用程序的安全性。

5、分支目标识别BTI

在发现可利用的漏洞后,攻击者的下一个目标是执行代码以控制所访问的机器。修改控制流的技术包括 ROP 和 JOP 攻击。这些技术寻找易受攻击程序的小工具(称为 gadgets),可以将它们链接在一起以实现攻击者的目标。

Armv8.5-A 引入了 BTI。支持 BTI 的系统确保间接分支只能target到可接受指令开始的代码位置。这降低了攻击者执行任意代码的能力。

这个特性与 PAC 一起工作,显著减少了攻击者可用的 gadgets 数量。

6、内存安全违规威胁

当对象被访问超出其真实边界时,空间安全性就会被违反。例如,当栈上的缓冲区溢出时。这可能被利用来覆盖函数的返回地址,这可以成为几种类型攻击的基础。

当对对象的引用在作用域外被使用时,通常是在对象的内存被重新分配后。例如,当包含某种函数指针的类型被恶意数据覆盖时,也可能会形成几种类型的攻击的基础。

MTE 提供了一种机制来检测内存安全违规的两个类别。通过增加测试和模糊测试的效果,MTE 在部署前有助于检测潜在的漏洞。在部署后,MTE 还有助于规模化地检测漏洞。

7、内存标记扩展MTE

内存标记使开发人员能够识别程序中的空间和时间内存安全违规。它旨在快速检测内存安全违规,并提供针对试图颠覆代码的攻击的强大防护。内存安全缺陷占被利用的安全漏洞的很大比例,而 MTE 实现了对内存的锁与钥匙访问。如果钥匙匹配锁,则允许内存访问;否则,访问可能会被记录或出现故障。通过这种方式,难以捕捉的内存安全错误可以更容易地被检测和消除,从而提高可靠性并改善产品安全性。

8、加强数据保护

标准的权限模型是,具有更高权限的实体可以访问属于较低权限实体的任何内容。例如,操作系统(OS)可以查看分配给应用程序的所有资源。但这并不总是理想的。恶意应用程序可能会尝试欺骗操作系统代表应用程序访问数据,而应用程序本不应该看到这些数据。

9、特权不可访问(Privileged Access Never (PAN))

PAN 是一项 Arm 安全功能,有助于防止操作系统内核(或虚拟机监控程序)中的漏洞被利用,以错误地访问分配给用户模式的内存。即使内核被欺骗去访问由用户模式攻击者控制的页面,PAN 也会阻止访问。

更多详情请参考该博客:ARM PAC/BTI/MTE三剑客精讲与实战

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1668246.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一套MySQL读写分离分库分表的架构,被秀到了!

📢📢📢📣📣📣 作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验, Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、My…

Linux进程控制——Linux进程终止

前言:前面了解完前面的Linux进程基础概念后,我们算是解决了Linux进程中的一大麻烦,现在我们准备更深入的了解Linux进程——Linux进程控制! 我们主要介绍的Linux进程控制内容包括:进程终止,进程等待与替换&a…

答辩PPT设计缺乏专业感?笔灵AI提供简洁且关键的幻灯片设计

在我原本的认知里面,答辩PPT是要包含论文各个章节的,在答辩时需要方方面面都讲到的,什么摘要、文献综述、实证分析、研究结果样样不落。但是,这大错特错! 答辩PPT环节时长一般不超过5分钟,老师想要的答辩P…

Linunx应急响应

Linux应急流程 1,请提交攻击者的 IP 地址2,请提交攻击者使⽤的操作系统3,请提交攻击者进⼊⽹站后台的密码4,请提交攻击者⾸次攻击成功的时间,格式:DD/MM/YY:hh:mm:ss5,请提交攻击者上传的恶意⽂件名(含路径)6,请提交攻击者写⼊的恶…

机器学习特征降维

目录 特征降维概念 低方差过滤法 PCA主成分分析 相关系数法 小结 特征降维概念 特征对训练模型时非常重要的;用于训练的数据集包含一些不重要的特征,可能导致模型性能不好、泛化性能不佳;例如: 某些特征的取值较为接近&…

Multisim 14 常见电子仪器的使用和Multisim的使用

multisim multisim,即电子电路仿真设计软件。Multisim是美国国家仪器(NI)有限公司推出的以Windows为基础的仿真工具,适用于板级的模拟/数字电路板的设计工作。它包含了电路原理图的图形输入、电路硬件描述语言输入方式&#xff0…

全面理解BDD(行为驱动开发):转变思维方式,提升软件质量

在传统的软件开发流程中,开发人员和测试人员的工作通常是相互独立的。开发人员负责编写代码,测试人员负责找出代码中的问题。然而,这种方法可能导致沟通不足,而且会浪费时间和资源。为了解决这些问题,出现了一种新的开…

IM是什么意思?

IM(即时通讯)作为现代通讯领域的重要且普遍应用,已成为人们日常生活和工作中不可或缺的通信方式。随着科技的不断发展和互联网的普及,IM工具通过实时信息传递,将沟通变得更加迅速、便捷、高效。 IM的诞生极大地改变了…

【python量化交易】qteasy使用教程06——创建自定义因子选股交易策略

创建自定义因子选股策略 使用qteasy创建自定义因子选股交易策略开始前的准备工作本节的目标Alpha选股策略的选股思想计算选股指标用FactorSorter定义Alpha选股策略交易策略的回测结果用GeneralStg定义一个Alpha选股策略回测结果:本节回顾 使用qteasy创建自定义因子选…

(Java)心得:LeetCode——19.删除链表的倒数第 N 个节点

一、原题 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5]示例 2: 输入:head [1], n 1 输出:[]示例 3&…

「 安全设计 」68家国内外科技巨头和安全巨头参与了CISA发起的安全设计承诺,包含MFA、默认密码、CVE、VDP等七大承诺目标

美国网络安全和基础设施安全局(CISA,CyberSecurity & Infrastructure Security Agency)于2024年5月开始呼吁企业是时候将网络安全融入到技术产品的设计和制造中了,并发起了安全设计承诺行动,该承诺旨在补充和建立现…

[AIGC] redis 持久化相关的几道面试题

文章目录 1. 什么是Redis持久化?2. Redis 的持久化机制是什么?各自的优缺点?2.1 RDB(Redis DataBase),快照2.2 AOF(Append Only File),日志 3. 优缺点是什么?…

【C++11】列表初始化、右值引用的详细讲解(上)

前言 在一开始学C之前我们就简单的了解了一下C的发展历史。 相比较而言,C11能更好地用于系统开发和库开发、语法更加泛华和简单化、更加稳定和安全,不仅功能更强大,而且能提升程序员的开发效率加了许多特性,约140个新特性。使得C…

Golang 开发实战day13 - Reciver Functions

🏆个人专栏 🤺 leetcode 🧗 Leetcode Prime 🏇 Golang20天教程 🚴‍♂️ Java问题收集园地 🌴 成长感悟 欢迎大家观看,不执着于追求顶峰,只享受探索过程 Golang 开发实战day13 - 接收…

拌合楼管理系统(十九)ini配置文件本地加密

前 言: 项目中,数据库服务器与程序不在一起,且不允许通过互联网直接访问数据库。 解决方法是通过web服务来做中间件来解决数据交互的问题。但如果web服务交互又存在身份验证问题,需要实现访问对应的接口是经过授权的,未…

sumif的求和区域是文本格式怎么办?

sumif函数的求和区域是文本型数字,不更改源数据的情况下怎么求和呢? 一、不能使用SUMIF、SUMIFS函数 这两个函数的求和区域只能是引用,不能是公式运算的内存数组,因此不能用公式或运算符将求和区转换成数值。当引用来的数据是文本…

【Java】变量类型

类变量:独立于方法之外的变量,用static修饰实例变量:独立于方法之外的变量,不过没有static修饰局部变量:类的方法中的变量 示例1: public class test_A {static int a;//类变量(静态变量)String b;//实例…

C语言例题34、反向输出字符串(递归方式)

题目要求&#xff1a;输入5个字符后&#xff0c;使用递归方式逆序输出 #include <stdio.h>void reverse(int num) {char cur_char;if (num 1) {cur_char getchar();printf("逆序输出为&#xff1a;");putchar(cur_char);} else {cur_char getchar();revers…

用迭代加深解决加成序列问题

可以看到这个最坏的结果是100层搜索&#xff0c;但是其实1 2 4 8 16 32 64 128&#xff0c;到128的话也只要8&#xff0c;所以大概只需要10几层搜索就可以解决了&#xff0c;这个时候就可以用迭代加深的方法&#xff0c;深度一点点的加&#xff0c;如果大于概深度就舍去。有人说…

腾讯提出InstantMesh:超快速的图像转 3D且质量很高,30秒内免费从一张图片生成3D模型

腾讯提出的InstantMes&#xff0c;能够从单张图像快速生成高质量的三维网格模型。这项技术利用了前馈框架&#xff0c;结合了多视图扩散模型和基于大规模重建模型&#xff08;LRM&#xff09;的稀疏视图重建技术&#xff0c;极大地优化了3D资产的创建过程。 如上图所示&#xf…