【技术实现步骤摘要】
基于RISC
‑
V与不可执行内存的缓冲区溢出攻击防御方法及系统
[0001]本专利技术属于计算机
,涉及一种基于RISC
‑
V与不可执行内存的缓冲区溢出攻击防御方法及系统。
技术介绍
[0002]计算机系统在各行各业的数字化、信息化进程中扮演着举足轻重的角色,影响着包括经济、教育、医疗等各领域的发展和稳定。在计算机系统应用日益普及、深入生产生活方方面面的今天,如何保证其功能的有效性、数据信息的真实性、行为的可靠性,使其免受恶意攻击的影响,便成为了学术界和工业界共同关注的一大关键问题。这些恶意攻击中,缓冲区溢出攻击是一种常见的攻击手段,它针对内存不安全语言所编写的源程序中缺失边界检查等机制的漏洞,通过对缓冲区容量限制的突破,覆盖其它区域的数据内容,进而破坏程序的完整性和正确性。由于其操作难度较低,实施较为便捷,这类攻击手段被广泛使用于程序控制流劫持等攻击之中。
[0003]为了能够对抗程序控制流劫持等攻击形式,使系统免受缓冲区溢出攻击的影响,学术界一直在研究行之有效的防御方法。鉴于缓冲区溢出攻击的主要目标之一,将控制流引导到不在CFG(Control Flow Graph,控制流图)中的代码处执行,已有一些基于不可执行内存的防御方法被提出。这些基于不可执行内存的防御方法通过将内存空间划分为具有不同可执行性的区域,限制或消除易受攻击的堆栈区域的可执行权限,从而避免位于堆栈中的CFG之外代码的执行。然而,目前存在的基于不可执行内存的防御方法对硬件环境和系统特性的依赖较大,无 ...
【技术保护点】
【技术特征摘要】
1.一种基于RISC
‑
V与不可执行内存的缓冲区溢出攻击防御方法,其特征在于,步骤包括:1)对程序源代码生成抽象语法树,根据该抽象语法树生成控制流图,该控制流图是有向图,表示为G=(V,E,nentry,nexit),其中V是节点的集合,每个节点对应程序中的一条语句或一个语句块;E是有向边的集合,每条边对应一条可能执行的控制流通路;nentry和nexit分别对应程序的入口节点和出口节点;2)分析控制流图,确定待保护的涉及堆栈缓冲区的代码片段;3)将待保护的涉及堆栈缓冲区的代码片段始末位置作为插桩点,插入开启/清除NX位标志的RISC
‑
V扩展指令;4)执行程序,在当前控制流进入堆栈缓冲区之前开启NX位标志,使对应内存不可执行;5)控制流离开堆栈缓冲区之后,清除NX位标志,恢复内存可执行状态。2.如权利要求1所述的方法,其特征在于,步骤1)中根据抽象语法树生成控制流图,包括以下步骤:在抽象语法树中找出所有表示语句和谓词的节点;根据抽象语法树和节点集合,找出任意两个节点之间的控制流通路作为有向边;根据抽象语法树,找出程序的入口节点和出口节点;将上述步骤找出的节点、有向边、入口节点和出口节点进行组合,生成对应于程序源代码的控制流图。3.如权利要求1或2所述的方法,其特征在于,为抽象语法树的每个节点赋予content属性,其属性值对应于节点所表示的代码语句;为每个节点赋予type属性,其属性值对应于对节点所表示代码的判断,从语句、谓语、不关心的代码中取值;在抽象语法树中根据节点的type属性,找出所有的语句和谓词节点。4.如权利要求1所述的方法,其特征在于,步骤2)确定待保护的涉及堆栈缓冲区的代码片段,包括以下步骤:预先定义节点识别特征集合,包括用于识别起始节点的堆相关特征和栈相关特征,以及用于识别终止节点的识别特征;遍历控制流图,找出所有进入堆栈的节点,形成起始节点集合,以及找出所有从堆栈退出的节点,形成终止节点集合;根据控制流图识别堆栈相关代码片段,如果该片段的起始节点属于上述起始节点集合,该片段的终止节点属于上述终止节点集合,且在该片段的起始...
【专利技术属性】
技术研发人员:刘畅,赵琛,武延军,芮志清,吴敬征,
申请(专利权)人:中国科学院软件研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。