基于risc-v与地址空间布局随机化的内存地址检测攻击防御方法及装置

文档序号:1861441 发布日期:2021-11-19 浏览:28次 >En<

阅读说明:本技术 基于risc-v与地址空间布局随机化的内存地址检测攻击防御方法及装置 (Memory address detection attack defense method and device based on RISC-V and address space layout randomization ) 是由 刘畅 赵琛 武延军 芮志清 吴敬征 武斌 于 2021-08-17 设计创作,主要内容包括:本发明公开了一种基于RISC-V与地址空间布局随机化的内存地址检测攻击防御方法及装置,包括:构造程序内存地址空间描述表;插入用于生成和设置地址随机偏移量的RISC-V扩展指令;执行代码,在生成地址随机偏移量后,更新程序内存地址空间描述表;实现内存地址空间布局随机化。本发明可以在不改变程序控制流的情况下,将地址布局随机化机制应用于系统之中,有效遏制内存地址检测攻击,进而提高系统对相关后续攻击(DOP、ROP、缓冲区溢出攻击、代码重用攻击等)的防御能力,增强RISC-V系统的安全性,解决了地址空间布局随机化在多种应用环境中的适用性问题。(The invention discloses a memory address detection attack defense method and a device based on RISC-V and address space layout randomization, which comprises the following steps: constructing a program memory address space description table; inserting a RISC-V extended instruction for generating and setting an address random offset; executing codes, and updating a program memory address space description table after generating random address offset; the randomization of the layout of the memory address space is realized. The invention can apply the address layout randomization mechanism to the system under the condition of not changing the program control flow, effectively restrains the memory address detection attack, further improves the defense capability of the system to the relevant subsequent attacks (DOP, ROP, buffer overflow attack, code reuse attack and the like), enhances the safety of the RISC-V system, and solves the applicability problem of the address space layout randomization in various application environments.)

基于RISC-V与地址空间布局随机化的内存地址检测攻击防御 方法及装置

技术领域

本发明属于计算机技术领域,涉及一种基于RISC-V与地址空间布局随机化的内存地址检测攻击防御方法及装置。

背景技术

内存是计算机系统中的关键部件之一,它用于存储计算机处理器在运行时所需要的各项数据和代码,提供程序运行与数据运算的主要场所。内存的安全已成为计算机系统安全的重要环节,如何保护其免受恶意攻击的破坏与干扰,保证其功能的完整性、内容的可信性,是学术界和工业界所需要面对的一类主要的系统安全问题。针对内存的攻击有多种不同的实施手段和表现形式,如DOP(Data-Oriented Programming,面向数据编程)、ROP(Return-oriented Programming,面向返回编程)、缓冲区溢出攻击、代码重用攻击等。在攻击者发起内存攻击之前,通常需要对内存地址进行检测,以确定受攻击目标的具体位置,提升攻击的准确度和成功率,从而最大限度破坏系统和程序的稳定性与正确性。

为了有效遏制内存地址检测攻击,学术界曾经提出过一些相应的防御方法。例如,PaX项目组曾经为Linux操作系统内核设计了内存空间布局随机化机制(Address SpaceLayout Randomization,ASLR),通过向不同任务所使用的内存地址空间中引入随机性,无规律地改变不同地址段的起始位置,从而增大攻击者猜测到任务相关的特定地址(如堆栈指针、特定库的地址)的概率。在此基础上,Kangjie Lu等人在2015年针对代码重用攻击场景,提出了一种强化机制ASLR-Guard,通过分离代码和数据、为代码指针进行安全存储等方法,来进一步防止代码指针被泄露的可能性。然而,这些已有的防御方法缺少普遍适用性,如ASLR-Guard需要64位虚拟地址空间以获得足够的熵,以满足其运算的需求,这限制了该方法在嵌入式等资源受限环境中的应用。

本发明为了解决地址空间布局随机化在多种应用环境中的适用性问题,提出了基于RISC-V扩展指令集的实现方案。本发明可以在不改变程序控制流的情况下,将地址布局随机化机制应用于系统之中,有效遏制内存地址检测攻击,进而提高系统对相关后续攻击(DOP、ROP、缓冲区溢出攻击、代码重用攻击等)的防御能力,增强RISC-V系统的安全性。

发明内容

本发明的目的在于提供一种基于RISC-V与地址空间布局随机化的内存地址检测攻击防御方法及装置。该方法通过RISC-V指令集以硬件方式产生和提供地址空间布局随机化所需的随机偏移量等参数,减少地址空间布局随机化过程对于系统资源的直接依赖;通过对相关内存地址空间的随机偏移,增加攻击者获得受攻击目标具体位置的困难程度。该方法可以有效地提升系统对内存地址检测攻击的防御能力,提高RISC-V系统的安全性。

为实现上述目的,本发明采用如下技术方案:

一种基于RISC-V与地址空间布局随机化的内存地址检测攻击防御方法,其步骤包括:

1)根据程序执行所涉及的地址段类型S及各地址段类型S对应的内存地址范围RS,构造程序内存地址空间描述表T,其中程序内存地址空间描述表T中包括若干元素TS=(S,RS,DS),内存起始地址偏移量DS=0;

2)在程序起始位置,分别插入用于生成与设置地址随机偏移量的RISC-V扩展指令;

3)程序执行时,分别基于生成与设置地址随机偏移量的RISC-V扩展指令,生成内存起始地址偏移量D′S,更新程序内存地址空间描述表;

4)根据更新后的程序内存地址空间描述表,实现内存地址空间布局随机化。

进一步地,所述地址段类型包括:代码段、数据段、堆空间、栈空间或BSS段。

进一步地,用于生成地址随机偏移量的RISC-V扩展指令的指令格式包括:

1)Opcode字段,表示自定义编码空间中的指令操作码编码;

2)RangeMax字段,表示地址随机偏移量的最大取值范围;

3)Func字段,表示该偏移量具体的偏移形式;

4)Res字段,表示存放指令执行结果的寄存器。

进一步地,用于设置地址随机偏移量的RISC-V扩展指令的指令格式包括:

1)Opcode字段,表示自定义编码空间中的指令操作码编码;

2)Addr字段,表示当前保护的地址段的起始地址;

3)AddrType字段,表示当前保护的地址段的类型;

4)RandVal字段,表示地址随机偏移量,即当前保护的地址段的起始地址将偏移的距离;

5)Res字段,表示存放指令执行结果的寄存器。

进一步地,通过以下步骤插入用于生成与设置地址随机偏移量的RISC-V扩展指令:

1)取出程序内存地址空间描述表T中的一个尚未被取到过的元素TS

2)在程序起始位置,分别插入一条对应的用于生成地址随机偏移量的RISC-V扩展指令后,及一条对应的用于设置地址随机偏移量的RISC-V扩展指令;

3)重复步骤1)-2),直到程序内存地址空间描述表T中所有的元素TS被取出。

进一步地,生成内存起始地址偏移量D′S的方法包括:基于真随机数发生器。

进一步地,通过以下步骤获取更新后的程序内存地址空间描述表:

1)取出程序内存地址空间描述表T中的一元素TS=(S,RS,DS);

2)利用内存起始地址偏移量D′S,对内存起始地址偏移量DS进行修改;

3)直到程序内存地址空间描述表T中所有的元素T更新完毕,得到更新后的程序内存地址空间描述表。

进一步地,实现内存地址空间布局随机化的方法包括:利用硬件微架构。

一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行以上所述方法。

一种电子装置,包括存储器和处理器,其中存储器存储执行以上所述方法的程序。

本发明取得的技术效果是:

1、基于地址空间布局随机化技术增大攻击者进行内存地址检测、获取受攻击目标具体位置的困难程度,有效提高RISC-V系统的安全性。

2、通过硬件方式产生和提供随机偏移量等参数,减少地址空间布局随机化过程对于系统资源的直接依赖,扩大了该技术的适用范围。

3、以RISC-V扩展指令集为主导的软硬协同的实现方案,有助于发挥硬件在系统安全防御中的作用,使基于RISC-V设计的安全硬件可以提供更加的防御效果。

附图说明

图1是RISC-V系统中基于地址空间布局随机化的内存地址检测攻击防御方法的流程图。

图2是构造程序内存地址空间描述表的流程图。

图3是向程序代码插入相关RISC-V扩展指令的流程图。

图4是用于生成地址随机偏移量的RISC-V扩展指令的指令格式设计示意图。

图5是用于设置地址随机偏移量的RISC-V扩展指令的指令格式设计示意图。

图6是更新程序内存地址空间描述表的流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明做进一步详细说明。

本实施例基于RISC-V与内存地址空间布局随机化的内存地址检测攻击防御方法,其中总体流程如图1所示,主要包括以下步骤:

1)构造程序内存地址空间描述表。其流程如图2所示,具体说明如下:

1a)根据具体的实施环境,确定程序执行所涉及的所有地址段的类型,形成地址段类型集合,记为{S}。其中的元素S表示一种具体的地址段类型。一般情况下,这些类型将包括代码段、数据段、堆空间、栈空间、BSS段等。转到1b)。

1b)确定各地址段所对应的内存地址范围,记地址段类型S对应的内存地址范围为RS,转到1c)。

1c)对于地址段类型集合{S},记地址段类型S对应的内存起始地址偏移量为DS,令DS=0。转到1d)。

1d)对于地址段类型集合{S},记地址段类型S对应的内存地址空间描述为TS,其结构TS=(S,RS,DS),转到1e)。

1e)将所有内存地址空间描述组织为程序内存地址空间描述表T,即T={TS}。

2)插入用于生成和设置地址随机偏移量的RISC-V扩展指令,其流程如图3所示;用于生成地址随机偏移量的RISC-V扩展指令的指令格式如图4所示;用于设置地址随机偏移量的RISC-V扩展指令的指令格式如图5所示。具体说明如下:

2a)取程序内存地址空间描述表T中的一个尚未被取到过的元素TS=(S,RS,DS),转到2b)。

2b)在程序起始位置,插入一条用于生成地址随机偏移量的RISC-V扩展指令。转到2c)。

2c)继续插入一条用于设置地址随机偏移量的RISC-V扩展指令,使其对应于地址段类型S。转到2d)。

2d)若T中存在尚未被取到的元素,转到2a),继续对后续元素进行处理。

其中,用于生成地址随机偏移量的RISC-V扩展指令,该定制的指令格式包括:

1)Opcode字段,表示自定义编码空间中的指令操作码编码;

2)RangeMax字段,表示地址随机偏移量的最大取值范围;

3)Func字段,表示该偏移量具体的偏移形式;

4)Res字段,表示存放指令执行结果的寄存器。

用于设置地址随机偏移量的RISC-V扩展指令,该定制的指令格式包括:

1)Opcode字段,表示自定义编码空间中的指令操作码编码;

2)Addr字段,表示当前保护的地址段的起始地址;

3)AddrType字段,表示当前保护的地址段的类型;

4)RandVal字段,表示地址随机偏移量,即当前保护的地址段的起始地址将偏移的距离;

5)Res字段,表示存放指令执行结果的寄存器。

3)执行代码,在生成地址随机偏移量后,更新程序内存地址空间描述表。其流程如图6所示,具体说明如下:

3a)执行生成地址随机偏移量的RISC-V扩展指令,通过特定的硬件方式(如真随机数发生器)生成一个无符号随机数,记为RM,作为地址随机偏移量。转到3b)。

3b)执行设置地址随机偏移量的RISC-V扩展指令,该指令对应于地址段类型S。取程序内存地址空间描述表T中的元素TS=(S,RS,DS),将DS的值修改为RM,更新TS。转到3c)

3c)重复上述步骤,直到T中的所有元素被更新。

4)硬件微架构实现内存地址空间布局随机化,可根据具体实施环境特征和安全需求,通过定制安全RISC-V硬件设备实现。

以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。

12页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:基于JVM沙箱与黑白名单的Java安全防范方法、装置及介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类