当前位置: 首页 > 专利查询>武汉大学专利>正文

一种函数指针及其数据依赖的识别与保护方法、装置制造方法及图纸

技术编号:36077187 阅读:16 留言:0更新日期:2022-12-24 10:49
本发明专利技术公开了一种函数指针及其数据依赖的识别与保护方法、装置,其中的方法首先从给定的程序中识别出属于函数指针或至少包含一个函数指针的内存对象,然后采用污点分析的方法对函数指针及其数据依赖进行识别,再使用Intel MPK对这些数据进行保护。确保了它们的完整性,从而阻止了程序的执行路径被修改,提高了程序的安全性。高了程序的安全性。高了程序的安全性。

【技术实现步骤摘要】
一种函数指针及其数据依赖的识别与保护方法、装置


[0001]本专利技术涉及软件安全
,尤其涉及一种函数指针及其数据依赖的识别与保护方法、装置。

技术介绍

[0002]C/C++之类的语言给予开发者很大的自由度,使其能够自如地控制所有资源。这使得开发者能够极大地提升程序的效率,然而并不是所有人都能完美地手动管理内存和遵守类型规则,这就导致了安全问题的出现。攻击者利用缓冲区溢出、堆溢出之类的漏洞,引发内存损坏以读取和修改敏感数据或者执行恶意代码。
[0003]这已经成了迁延数十年的安全问题,针对它的攻防战也在不断进行。早期攻击者一般采用代码注入的方式,通过跳转执行注入的代码实现恶意行为。为了阻止这类攻击,研究者们提出了DEP(Data Execution Prevention)、Stack Canaries和地址空间布局随机化(Address Space Layout Randomization)等机制。而为了突破这些机制,攻击者又探索出代码重用攻击,通过修改control data如return addresses,不断将控制流转向本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种函数指针及其数据依赖的识别与保护方法,其特征在于,包括:S1:对给定的程序进行基于类型和基于指针的分析,从中识别出属于函数指针或至少包含一个函数指针的内存对象;S2:将每个函数的定义信息和使用信息进行串连构造过程间数据流图;S3:将识别出的属于或者包含函数指针的内存对象作为污点源,并将所有间接函数调用点作为汇聚点,在构造的过程间数据流图中进行深度优先搜索实现前向污点传播,得到的从在污点源到汇聚点的路径表示一种可能的函数指针的计算流程,将路径上的指令作为参与函数指针计算的敏感指令;S4:将得到的敏感指令作为污点源,以识别出的属于或者包含函数指针的内存对象作为汇聚点,在构造的过程间数据流图中进行深度优先搜索实现后向污点传播,得到的从污点源到汇聚点的路径,将路径上的内存对象作为敏感指令中函数指针所依赖的数据;S5:将识别出的所有函数指针及其依赖的数据分配到硬件保护的内存中;S6:将所述硬件保护的内存使用Intel MPK进行保护,并使用call gate切换特权用以允许程序中原本会写入函数指针及其依赖的数据的指令的访问。2.如权利要求1所述的函数指针及其数据依赖的识别与保护方法,其特征在于,步骤S1包括:依次遍历给定的程序的中的类型,如果一个类型是函数指针类型,则为敏感类型,如果一个类型是包含一个或多个敏感类型的复合类型,则递归判断该复合类型中的所有元素,若有一个元素为敏感类型,则该类型为敏感类型;在识别出所有敏感类型后,再次遍历给定的程序中的所有变量,如果一个变量的类型是敏感类型,则是这个变量为敏感变量;采用基于指针的分析方法进行分析,如果一个指针的目标集合中存在函数,则将该指针视作为函数指针,并加入敏感变量集合中,同时将指针包含变量也加入敏感变量集合中。3.如权利要求1所述的函数指针及其数据依赖的识别与保护方法,其特征在于,S3的前向污点传播过程中,从包含函数指针的内存对象开始,在间接函数调用点处结束,前向污点传播结束后,确定了所有从污点源到间接调用点的污点路径,每一条污点路径由一组污点指令组成,用以描述一个函数指针从创建到调用的生命周期。4.如权利要求1所述的函数指针及其数据依赖的识别与保护方法,其特征在于,S4在后向污点传播中,从步骤S2识别出的...

【专利技术属性】
技术研发人员:王丽娜邓颖川张桐余荣威高昊
申请(专利权)人:武汉大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1