[发明专利]一种非立即数跳转的保护方法及对应计算装置在审
申请号: | 201810597845.1 | 申请日: | 2018-06-12 |
公开(公告)号: | CN110597571A | 公开(公告)日: | 2019-12-20 |
发明(设计)人: | 杨力祥 | 申请(专利权)人: | 杨力祥 |
主分类号: | G06F9/448 | 分类号: | G06F9/448 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100081 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 立即数 跳转指令 间接转移指令 信息安全领域 目标地址 攻击 跳转 改写 增设 信息技术 应用 检查 | ||
本发明公开了一种非立即数跳转的保护方法,涉及信息技术,特别是信息安全领域,可以采用将非立即数跳转指令改写为立即数跳转指令的方式,或通过在非立即数跳转指令执行前进行检查的方式,或增设一种非立即数跳转指令的方式来实现。应用本发明提供的方案,攻击状态下,攻击程序无法通过修改间接转移指令目标地址值的方式,改变程序的执行序。
技术领域
本申请涉及信息技术领域,特别涉及一种非立即数跳转的保护装置和方法,以及一种函数指针的保护装置和方法。
背景技术
现有技术中,计算机软件由指令和数据组成,所有的计算、操作都是执行指令来实现,一条指令只能执行一个极小的动作单元,如:加、减、乘、除,移动数据,中断……,这些动作太小。若要完成一个对人有意义的任务,就需要连续执行一系列指令,以下称为指令执行序列,简称执行序。显然一个确定的执行序能够实现一个确定的功能。包括操作系统在内的所有软件,都是由许许多多有着确定功能的执行序组成。
基于现代的CPU架构和操作系统架构,以及对代码段使用只读保护等技术手段,已经杜绝了诸如用户态的攻击代码企图直接执行内核态代码、直接修改内核态代码、数据获得超越授权等操作。进一步的,由于硬件特权级以及门机制对于目标地址的严格保护,用户态的程序也无法直接从内核中选择对攻击有利的目标地址形成攻击者希望的执行序。
从信息安全角度看,数据不是指令,本身不具有执行能力,无法直接形成执行序,所以不具有攻击力。但是,攻击者仍然能够采用间接的方式实现攻击。例如,可以利用超越范围的数组拷贝,数组下标操作导致的数组越界等方法用攻击者准备好的数据修改指向函数的指针,即钩子函数(hook),或者将钩子修改为原设计的几个可能的之中的某一个值,但该值不是当时合理的值,而是在当时条件下有利于攻击的一个值。对于信息安全领域来说,攻击者就能够从可能的分支中选择有利于攻击的分支。
在此基础上,攻击者就可以修改授权信息、改变授权状态,从而获得超越授权的状态。进而可以进行诸如以下操作:
1、超越授权读取用户数据(包括内存和外设的数据)。
2、超越授权写入(包括篡改、删除)用户数据。
3、超越授权执行系统调用。
4、超越授权执行应用程序。
发明内容
为解决攻击者能够从可能分支中选择有利于攻击的分支,进而获得超越授权的状态的技术问题,本发明公开了非立即数跳转的保护方法。
钩子函数是非立即数跳转的一种代表。
在本发明的一种具体实现方式中,针对非立即数跳转在受到攻击的情况下,能够使得攻击者从可能的分支中选择有利于攻击的分支的问题,本发明公开了一种非立即数跳转的保护方法,其特征在于:将非立即数跳转指令改写为立即数跳转指令的方式,使跳转地址确定。
所述立即数跳转指令的方式是指通过条件判断,选择函数进行调用的方式。
在本发明的一种具体实现方式中,一种非立即数跳转的保护方法,其特征在于:通过在非立即数跳转指令执行前进行检查的方式,防止非立即数跳转指令访问非法地址。
优选的,所述进行检查是通过在非立即数跳转指令执行前添加“对跳转目标地址进行判断”逻辑对应的指令,检查跳转的地址是否在指定的地址集合内;如果所述跳转的地址处于其可能跳转到的全部地址集合内,则允许执行非立即数跳转指令,否则,则进入异常处理流程。
优选的,将所述非立即数跳转指令可能跳转到的地址集合中的每一个地址,对应的生成一个随机ID值,ID在整个整数范围内随机取值,且要确保每个ID值彼此不相同,构建一个ID值与跳转目标地址的对照表,并用ID值给指针变量赋值。
优选的,ID的生成,在系统初始化的时候进行,确保每次开机运行,同一个函数对应的ID值都不同。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杨力祥,未经杨力祥许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810597845.1/2.html,转载请声明来源钻瓜专利网。