[发明专利]一种程序运行时处理器指令校验方法在审
申请号: | 201410835359.0 | 申请日: | 2015-08-04 |
公开(公告)号: | CN104504329A | 公开(公告)日: | 2015-07-29 |
发明(设计)人: | 吕雅帅;赵忠文;吴玲达 | 申请(专利权)人: | 中国人民解放军装备学院 |
主分类号: | G06F21/52 | 分类号: | G06F21/52;G06F21/56 |
代理公司: | 中国人民解放军防化研究院专利服务中心 11046 | 代理人: | 刘永盛 |
地址: | 101416 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 程序 运行 处理器 指令 校验 方法 | ||
技术领域
本发明涉及一种程序运行时处理器指令校验方法,属于计算机安全领域,用于阻止利用程序非正常指令序列构造出的恶意代码在处理器上执行。
背景技术
利用软件漏洞进行代码注入攻击是长期以来最流行的一种恶意代码攻击手段。但是近年来的计算机系统均引入了一种软硬件结合的存储保护机制该保护机制使得代码注入攻击变得非常困难。机制规定了操作系统一个存储页的写入和执行是互斥的,即存放可执行代码的内存页不能被写入,可写入内存页中的内容不能被执行。这意味着即使恶意代码被植入一个内存页,由于这个内存页不能被执行,所以恶意代码也不能发挥作用。
但是,近年来出现的代码重用攻击技术成为了新的利用软件漏洞进行恶意代码攻击的手段。代码重用攻击不用进行代码注入,而是通过一系列分支转移指令(包括跳转指令、函数调用指令、函数返回指令等)将程序已有的代码(包括系统运行库中的代码)重新组织,构成恶意代码序列进行攻击。由于代码重用攻击不用向内存页中写入代码数据,而是利用程序已有的代码,所以机制对代码重用攻击是完全无效的。
代码重用攻击对于CISC指令集处理器(如目前广泛使用的x86系列处理器)的威胁要远大于RISC指令集处理器。这是因为在RISC处理器中,所有指令长度均是一致的,每条指令的起始地址都是指令长度的整倍数。RISC处理器在执行指令时,不接受起始于非指令长度整倍数地址的指令。但是CISC处理器的指令长度是不固定的。以x86处理器为例,指令长度可以是1个字节至16个字节。这意味着代码段中的任何一个地址都可能是一条新指令的起始地址。因此,在CISC处理器上构造恶意代码要比在RISC处理器上容易。目前已公布的研究显示,面向x86处理器的代码重用攻击所使用的90%以上的恶意代码都是由程序的非正常指令序列构成。由此可见,如果能够阻止这些非正常指令序列的执行,将会极大地降低计算机系统被进行代码重用攻击的风险。
目前,采用CISC指令集的计算机系统(如使用x86系列处理器的计算机)没有任何保护机制来阻止上述非正常指令序列的执行。一些学术研究虽然提出了防止非正常x86指令执行的方法,但均采用软件手段实现,这些方法均要求应用程序必须在一个软件虚拟机环境中运行,从而导致应用程序的运行性能大大降低。本发明提出了一种软硬件相结合的保护机制来阻止处理器执行非正常指令序列,该机制不依赖于虚拟机环境,应用程序不用进行任何修改,且程序运行性能损失非常小。本发明的方法可以应用于x86以及其他CISC处理器系列。到目前为止,采用类似方法来实现阻止非正常指令执行的方法尚未见报道。
发明内容
本发明目的在于降低计算机系统被进行代码重用以及其他利用非正常指令进行恶意代码攻击的风险。
本发明一种程序运行时处理器指令校验方法,其特征是该校验方法步骤如下:
(1)在程序运行之前,计算出程序所有代码段中每条正确指令的地址,其方法是:
对于每个代码段,通过代码段信息获取该代码段起始处第一条指令的地址,然后从第一条指令起对该代码段进行反汇编,并通过反汇编依次获得该代码段中所有指令的长度,此后每条指令的地址即为前一条指令的地址加上前一条指令的长度;
(2)将正确指令的地址转换成地址校验数据,其方法是:
将地址上连续的代码段合并为一个代码段进行处理,设合并后代码段的起始加载地址是a0,结束地址为a1,对于a0至a1范围内的每一个地址,当该地址是一条正确指令的起始地址,则用一位“1”来表示,否则用一位“0”来表示,或用一位“0”表示一条正确指令的起始地址,一位“1”表示否,在程序运行过程中,地址校验数据放在内存中,供处理器校验指令时进行查询,将所有合并后代码段的起始加载地址、代码段的大小和地址校验数据的地址记录到一个表中,供程序运行时查询使用;
(3)在程序运行过程中,当处理器计算出一条分支转移指令的分支目标地址,未提交结果时,对计算出的分支目标地址进行校验,设待校验的分支目标地址为at,其校验方法是:
1)通过一个分支目标校验缓存对该地址at进行校验,该分支目标缓存中存放了刚成功执行过的分支指令的分支目标地址,当待校验的分支地址at与分支目标缓存中的一个地址一致,则校验成功,处理器则继续正常执行,否则需执行2),
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军装备学院,未经中国人民解放军装备学院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410835359.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种读卡器管理系统及其管理方法
- 下一篇:一种测试方法及终端