掌桥专利:专业的专利平台
掌桥专利
首页

一种基于处理器芯片的内存漏洞检测方法及电子装置

文献发布时间:2023-06-19 09:26:02


一种基于处理器芯片的内存漏洞检测方法及电子装置

技术领域

本发明属于计算机信息安全领域,涉及一种基于处理器芯片的内存漏洞检测方法及电子装置。

背景技术

对内存的恶意篡改,是构建诸如代码注入攻击,代码复用攻击,以及数据流劫持攻击等隐蔽攻击手段的前提条件。建立针对内存安全的检测机制,可以阻止此类具有图灵完整性的攻击方式。

目前,基于页表的权限检查机制,是部署最为广泛的一种保护内存安全的措施。该机制中,对访存地址的权限检查,发生在内存管理单元通过转址旁路缓存(TLB)进行虚实地址转译之时,对进行相关的页表项进行权限检查。基于页表的权限检查有两个缺点:其一:,基于页表的权限检查的粒度是页,对同一个物理页中的对象之间,无法做到细粒度的权限检查。其二,当其中某一页的权限变化时,内存管理单元中的整个TLB,需要全部刷新,这带来了极高的的性能损失,使得基于页表的权限检查机制无法在实际的应用中进行部署。

发明内容

鉴于现有技术中存在的问题,本发明提供了一种基于处理器芯片的内存漏洞检测方法及电子装置,其在程序地址空间中离散的设置访存陷阱,可以有效的侦测到恶意的攻击行为。

本发明的技术方案包括:

一种基于处理器芯片的内存漏洞检测方法,其步骤包括:

1)将一程序经中央处理器中解码单元译码,获取执行指令中的虚拟地址;

2)计算所述虚拟地址的ID,若所述ID在内存管理单元的访存陷阱索引表内,则将所述虚拟地址发送至操作系统;

3)根据操作系统的访存陷阱索引表内的ID与访存陷阱表的对应关系,获取相应访存陷阱表,其中内存管理单元的访存陷阱索引表与操作系统的访存陷阱索引表中的ID同步更新;

4)若所述虚拟地址在相应访存陷阱表内,则判断该程序为恶意程序。

进一步地,所述虚拟地址的ID包括:所述虚拟地址的哈希值。

进一步地,通过搜索算法,判断所述虚拟地址是否在相应访存陷阱表内。

进一步地,所述搜索算法包括:二叉树搜索算法。

进一步地,若该程序为恶意程序,则操作系统产生一个安全中断,执行程序自定义的处理安全中断的句柄。

进一步地,通过以下策略对操作系统的访存陷阱索引表及访存陷阱表进行更新:

1)获取待更新虚拟地址及该待更新虚拟地址的ID;

2)若该待更新虚拟地址的ID在操作系统的访存陷阱索引表中,则获取待更新的访存陷阱表,并对待更新的访存陷阱表进行访存陷阱的重排序;

3)若该待更新虚拟地址的ID不在操作系统的访存陷阱索引表中,则生成一新的访存陷阱表,并将待更新虚拟地址存入新的访存陷阱表中。

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

一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机以执行上述所述的方法。

和现有的技术相比,本发明的积极效果为:

1)本发明的方法,可以细粒度的保护内存安全,提高了恶意篡改行为的检测精度。

2)本发明中提出了二次搜索策略,提升了程序的序性能。

附图说明

图1是本发明的访存陷阱索引库图。

图2是本发明的访存陷阱触发机制的流程图。

图3是本发明的访存陷阱更新机制的流程图。

图4是本发明一实施例的普通用户程序的地址空间。

图5是本发明一实施例的基于访存陷阱保护的用户程序的地址空间。

具体实施方式

本发明完整的具体实施包含访存陷阱库,访存陷阱触发机制和访存陷阱更新机制三个部分。

当正常的程序,会严格遵循指令预先设定好的语义,对其内存空间中合法的地址范围进行的读写,如特定大小的缓存,数组等等;当存在恶意的内存篡改行为,则建立在对内存地址空间进行不特定的,越界的访问。如通过缓存或者数组的溢出,篡改返回地址等。因此,在程序的内存空间中,针对性的插入访存陷阱,可以有效的侦测到恶意的攻击行为。如在缓存的首尾设置访问陷阱,可以有效的检测缓存溢出攻击。

第1步:建立访存陷阱索引库

访存陷阱索引库由2张索引表和N张陷阱表构成。期中两张索引表的分别由内存管理单元和操作系统进行管理,两张索引表通过同步,保持内容的一致性。N张陷阱表由操作系统进行管理。

索引表中将每个陷阱表的哈希值存入表中,作为陷阱表的索引值。陷阱表用来访存指令中虚拟地址的值。任何一张陷阱表中的每个访存陷阱的虚拟地址值,都具有相同的哈希值。

第2步:访存陷阱触发机制

有内存管理单元对存放的逻辑地址(虚拟地址)进行哈希之后,用哈希值在其索引表中检索。命中时,由操作系统针对索引到的陷阱表进行搜索。不命中,继续执行内存管理单元的地址转化。

第3步:访存陷阱更新机制

在合法的用户过程中,需要快速的对陷阱表进行更新,更新模块可以由操作系统,用户程序,或者外围设备等完成。

在插入或者删除访存陷阱表之后,需要对该表进行二次排序。如二叉树排序等。

具体来说:

第一部分,如图1所示,为本发明的访存陷阱索引库。

访存陷阱索引库主要包含两类表,访存陷阱表(图1中称为陷阱表)和索引表。其中在操作系统的地址空间中存有N个访存陷阱表和一个或一个以上的索引表。在内存管理单元中,存有一个或一个以上的索引表。内存管理单元中的索引表和操作系统中的索引表同步。

其中:

1.访存陷阱表。每个访存陷阱表存放某一类具有相同属性的访存陷阱地址(即图1中的“虚拟地址”)。这些属性包括但是不限于哈希值属性等。比如M个具有相同哈希值的访存陷阱地址,会一起存放在第K张表中。

2.操作系统端的索引表,至少具有两个数据列,哈希值列和对应的陷阱表地址列。陷阱表地址列中,每一行代表着某一个访存陷阱表的地址。哈希值对应列中的每一行,对应的是访存陷阱表的某一个特有属性,如对应访存陷阱表的哈希值。

3.内存管理单元端的索引表。该索引表位于内存管理单元中,该表包含每个陷阱表中的哈希值。该表会实时地和操作系统端的索引表进行数据同步。

由于访存陷阱中存放的是内存空间的索引地址,因此,本发明可以允许编译器或者操作系统任意的指定访存陷阱的大小。

第二部分,如图2所示,访存陷阱触发机制。

访存陷阱的触发机制的输入是中央处理器中解码单元经过译码后,执行指令中的虚拟地址。内存管理单元(MMU)在虚拟地址映和物理地址映射的过程中,并行的对该虚拟地址进行哈希值的计算。

根据生成的哈希值,在内存管理单元的索引表中进行快速检索。如果不命中,说明没有触发访存陷阱,程序继续执行内存管理单元后续的地址转化工作,即图2中的将虚拟地址传给TLB(Translation Lookaside Buffer,即页表缓存,用于改进虚拟地址到物理地址转换速度)进行地址转化。如果命中,有两种可能性,触发访存陷阱和哈希值冲突导致的误报,因此内存管理单元将虚拟地址交由操作系统。

操作系统根据虚拟地址,在对应的访存陷阱表进行地址查找。搜索算法包括但不限于二叉树搜索算法。

如果没有命中,说明是仅仅是由于哈希值冲突导致的误报,程序继续返回内存管理单元执行后续的转化工作。

如果命中,程序由于恶意的操作,触发了访存陷阱,操作系统会产生一个安全中断,执行程序自定义的处理安全中断的句柄。

第三部分,如图3所示,访存陷阱更新机制。

更新的行为包括但是不限于访存陷阱的插入,访存陷阱的删除等。

在程序的执行过程中,须要动态的更新访存陷阱索引库,基于两方面的考虑:第一,安全性。静态的部署访存陷阱,容易使攻击者猜测出访存陷阱的位置,从而在攻击者绕过该访存陷阱。而动态的更新访存陷阱的位置,可以有效降低访存陷阱位置分布的确定性和预见性。即使攻击者猜测出某个访存陷阱的位置,该位置也会在一定时间窗口后,发生改变。因此使得攻击者无法持之以恒的利用该漏洞。第二,程序在执行过程中,其合法的地址空间范围会发生动态的改变,由于访存陷阱是紧耦合的内嵌在程序地址空间中,因此访存陷阱的也需要根据程序进行动态的更新。

访存陷阱的更新机制的输入是虚拟地址。操作系统通过哈希算法生成该虚拟地址的哈希值。通过生成的哈希值,操作系统在自己的索引表中,进行检索。

如果命中,更新对应的陷阱表,之后对该陷阱表进行重新排序。

如果没有命中,在索引表中插入上一个步骤中计算出的哈希值,同时生成对应的访存陷阱表。同步内存管理单元中的索引表。

下面为本发明的一具体实例:

如图4所示,攻击者通过缓存溢出技术,依次向下越界读取内存内容,直到读到敏感的数据,如用户密码,数字证书等等。

如图5所示,在缓存的尾部设置访存陷阱。攻击者通过缓存溢出技术非法读取内存时,将会不可避免的读到访存陷阱的位置,从而触发异常。

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

相关技术
  • 一种基于处理器芯片的内存漏洞检测方法及电子装置
  • 一种基于随机化索引的处理器芯片分支预测器安全增强方法及电子装置
技术分类

06120112165639