[发明专利]一种完全上下文敏感的程序控制流完整性保护方法和系统有效
申请号: | 201710321054.1 | 申请日: | 2017-05-09 |
公开(公告)号: | CN107194252B | 公开(公告)日: | 2019-11-22 |
发明(设计)人: | 金海;羌卫中;黄莹达;邹德清 | 申请(专利权)人: | 华中科技大学 |
主分类号: | G06F21/56 | 分类号: | G06F21/56;G06F21/16;G06F21/52 |
代理公司: | 42201 华中科技大学专利中心 | 代理人: | 廖盈春;李智<国际申请>=<国际公布>= |
地址: | 430074 湖北*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 完全 上下文 敏感 程序控制 完整性 保护 方法 系统 | ||
1.一种完全上下文敏感的程序控制流完整性保护方法,其特征在于,所述方法包括以下步骤:
(1)模拟执行:输入预设的测试用例到目标程序,模拟执行目标程序,获取目标程序的控制流信息;
(2)基本块信息收集:对目标程序进行文件格式分析和反汇编,识别并保存目标程序二进制文件中的基本块信息;
(3)进程跟踪:启动目标程序进程,跟踪目标程序进程的执行路径,并获取进程跟踪信息;
(4)控制流检查:根据进程跟踪信息查找基本块,由基本块信息生成路径信息,通过匹配控制流信息和路径信息,实现完整指令路径的合法性检查;
所述步骤(1)包括以下子步骤:
(11)对目标程序指令进行插桩,输入预设的测试用例,启动程序;
(12)判断当前插桩点指令是否为目标程序主函数返回指令或结束进程相关的系统调用,若是则结束模拟执行;否则进行污点传播分析,根据指令表达式标记或清除污点数据;
(13)判断插桩点指令类型,若是预定义的敏感系统调用的入口,则将敏感系统调用的返回值或被敏感系统调用修改的数据标记为污点数据,运行到下一个插桩点,回到步骤(12);若是分支指令,则进入下一步骤;
(14)判断分支指令类型,若是直接无条件分支,则运行到下一个插桩点,回到步骤(12);若是间接分支,则进入步骤(16);若是直接条件分支,则进入步骤(15);
(15)计算条件分支指令的目标地址,生成执行路径信息,计算其哈希值作为控制流信息并保存;运行到下一个插桩点,回到步骤(12);
(16)判断间接分支指令的目标地址变量是否为污点数据,若是,则丢弃本次模拟执行获取的信息,结束模拟执行;否则,进入步骤(15)。
2.根据权利要求1所述的一种完全上下文敏感的程序控制流完整性保护方法,其特征在于,所述步骤(2)包括以下子步骤:
(21)分析目标程序二进制文件的文件格式,找到代码段的地址范围;
(22)对目标程序代码段进行反汇编,获得目标程序代码;
(23)对代码进行遍历,分析分支指令并识别基本块:若是直接分支指令,则提取出以该指令结尾的基本块,同时提取出以目标地址指令开头的基本块;若是间接分支指令,提取出以该指令结尾的基本块;
(24)当所有代码都已遍历完,保存所有基本块信息。
3.根据权利要求1所述的一种完全上下文敏感的程序控制流完整性保护方法,其特征在于,所述步骤(3)包括以下子步骤:
(31)在目标程序上设置分析起始点和终止点,运行目标程序,当程序运行到分析起点时,配置处理器进程跟踪功能,启动进程跟踪,获取进程跟踪信息;
(32)当程序运行到分析终止点时,结束进程跟踪。
4.根据权利要求1所述的一种完全上下文敏感的程序控制流完整性保护方法,其特征在于,所述步骤(4)包括以下子步骤:
(41)判断是否还有进程跟踪信息,是则进入下一步骤;否则结束;
(42)根据当前进程跟踪信息查找对应基本块,判断是否能找到,是则由基本块信息生成路径信息,否则更新基本块信息,再由更新的基本块信息生成路径信息;计算路径信息的哈希值;
(43)根据路径信息判断执行路径是否达到间接分支,否则寻找下一个进程跟踪信息,回到步骤(41);是则进入下一步骤;
(44)在控制流信息的哈希值中匹配当前路径信息的哈希值,若匹配成功则进入下一步骤;若不成功则结束;
(45)判断目标地址是否合法;若合法,则寻找下一个进程跟踪信息,回到步骤(41);若不合法,则判断受到攻击,终止程序执行。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中科技大学,未经华中科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710321054.1/1.html,转载请声明来源钻瓜专利网。