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

安全之安全(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.rhkb.cn/news/325660.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[图解]SysML和EA建模住宅安全系统-01

1 00:00:00,980 --> 00:00:03,100 接下来,我们来看一下案例 2 00:00:04,930 --> 00:00:06,750 我们这次课程的案例 3 00:00:07,090 --> 00:00:13,800 选用了SysML实用指南的书上 4 00:00:13,810 --> 00:00:16,180 第十七章这个案例 5 00:00:16,350 …

sqlite3命令行工具无法退出问题处理

一、背景: 软件使用的后台数据库为sqlite,linux主机系统层面使用sqlite3命令行工具登录数据库后,无法执行sql脚本,无法退出sqlite3。无法执行ctrlc,执行ctrlz后sqlite3前台进程被中断,但是该进程没有退出。…

每日OJ题_贪心算法四⑤_力扣354. 俄罗斯套娃信封问题

目录 力扣354. 俄罗斯套娃信封问题 解析代码1_动态规划(超时) 解析代码2_重写排序贪心二分 力扣354. 俄罗斯套娃信封问题 354. 俄罗斯套娃信封问题 难度 困难 给你一个二维整数数组 envelopes ,其中 envelopes[i] [wi, hi] &#xff0…

数据分析——业务指标分析

业务指标分析 前言一、业务指标分析的定义二、业务问题构建问题构建的要求 三、业务问题的识别在识别问题的阶段对于企业内部收益者的补充 四、竞争者分析竞争者分析的内容竞争者分析目的案例 五、市场机会识别好的市场机会必须满足的条件市场机会案例 六、风险控制数据分析师常…

2024数维杯数学建模B题生物质和煤共热解问题的研究原创论文分享

大家好,从昨天肝到现在,终于完成了2024数维杯数学建模挑战赛B题的完整论文啦。 实在精力有限,具体的讲解大家可以去讲解视频: 2024数维杯数学建模B题煤共热解每一问高质量完整代码讲解!_哔哩哔哩_bilibili 2024数维杯…

Docker 直接运行一个 Alpine 镜像

由于镜像很小,下载时间往往很短,读者可以直接使用 docker run 指令直接运行一个 Alpine 容器,并指定运行的 Linux 指令,例如: PS C:\Users\yhu> docker run alpine echo 123 Unable to find image alpine:latest lo…

【机器学习300问】86、简述超参数优化的步骤?如何寻找最优的超参数组合?

本文想讲述清楚怎么样才能选出最优的超参数组合。关于什么是超参数?什么是超参数组合?本文不赘述,在之前我写的文章中有详细介绍哦! 【机器学习300问】22、什么是超参数优化?常见超参数优化方法有哪些?htt…

ORA-609频繁出现在alert.log,如何解决?

ORA-609就alertlog中比较常见的一个报错,虽然并没有太大的影响,但是频繁的出现在alert log也是很让人厌烦的事情,本文介绍如何排查解决ORA-609问题。 1.ORA-609官方定义 could not attach to incoming connection Cause Oracle process cou…

专业渗透测试 Phpsploit-Framework(PSF)框架软件小白入门教程(五)

本系列课程,将重点讲解Phpsploit-Framework框架软件的基础使用! 本文章仅提供学习,切勿将其用于不法手段! 继续接上一篇文章内容,讲述如何进行Phpsploit-Framework软件的基础使用和二次开发。 在下面的图片中&#…

Service 和 Ingress

文章目录 Service 和 IngressServiceEndpointservice 的定义代理集群外部服务反向代理外部域名Service 常用类型 IngressIngress-nginx安装使用 Service 和 Ingress service 和 ingress 是kubernetes 中用来转发网络请求的两个服务,两个服务用处不同,se…

游戏AI的智能化:机器学习在虚拟生命中的应用

文章目录 写在前面游戏AI的智能化:机器学习在虚拟生命中的应用游戏内容的自动化创作:机器学习的革新性应用玩家体验的个性化优化:机器学习的定制化力量未来展望:机器学习塑造游戏行业新纪元游戏AI的智能化发展自动化内容生成的革命…

MySQL相关文件的介绍

其中的pid-file/var/run/mysqld/mysqld.pid是用来定义MySQL的进程ID的信息的, 这个ID是操作系统分配给MySQL服务进程的唯一标识,使得系统管理员可以轻松识别和管理该进程。 其中的log-error/var/log/mysqld.log是MySQL的错误日志文件,如果有…

顺序表经典算法OJ题-- 力扣27,88

题1: 移除元素 题2: 合并两个有序数组 一:题目链接:. - 力扣(LetCode) 思路:(双指针法) 创建两个变量src,dst 1)若src指向的值为val&#xf…

C++手写协程项目(协程实现线程结构体、线程调度器定义,线程挂起函数、线程切换函数、线程恢复函数、线程结束函数、线程结束判断函数,模块测试)

协程结构体定义 之前我们使用linux下协程函数实现了线程切换,使用的是ucontext_t结构体,和基于这个结构体的四个函数。现在我们要用这些工具来实现我们自己的一个线程结构体,并实现线程调度和线程切换、挂起。 首先我们来实现以下线程结构体…

vivado Kintex UltraScale 配置存储器器件

Kintex UltraScale 配置存储器器件 下表所示闪存器件支持通过 Vivado 软件对 Kintex UltraScale 器件执行擦除、空白检查、编程和验证等配置操作。 本附录中的表格所列赛灵思系列非易失性存储器将不断保持更新 , 并支持通过 Vivado 软件对其中所列非易失性存…

使用海外云手机为亚马逊店铺引流

在全球经济一体化的背景下,出海企业与B2B外贸企业愈发重视海外市场的深耕,以扩大市场份额。本文旨在探讨海外云手机在助力亚马逊店铺提升引流效果方面的独特作用与优势。 海外云手机,一种基于云端技术的虚拟手机,能够在单一硬件上…

Qt自定义控件--提升为

为什么要自定义控件 1,有复合小控件需要组合为一个整体控件时; 2,一个复合控件需要重复使用时; 实现 自定义控件文件 新增三个文件 关联不同组的控件 关联之前的准备工作 1,在主控件选择和子控件所有控件所在控件…

k8s概述及核心组件

一、k8s概述 1.1 引言 docker compose 单机编排工具 有企业在用 docker swarm 能够在多台主机中构建一个docker集群 基本淘汰集群化管理处理工具 容器 微服务封装 dockerfile 编写成镜像 然后进行发布 dockerfile 可以写成shell脚本(函数做调…

提升网络性能,解决网络故障,了解AnaTraf网络流量分析仪

在当今数字化时代,网络性能监测与诊断(Network Performance Monitoring and Diagnosis,NPMD)成为了企业和个人关注的焦点。随着网络流量不断增长,确保网络的稳定性和高效性变得更加重要。在这个领域,AnaTraf网络流量分析仪是您不可或缺的得力…

Mysql数据库的基础学习

为什么使用数据库? 1.持久化:将数据保存到可掉电式存储设备中以供使用。 数据库相关概念: DB:数据库(Databass)即存储数据的仓库,本质是一个文件系统,保存了一系列有组织的数据DBMS:数据库管…