[发明专利]软件内存安全检测方法及系统有效
申请号: | 201810444279.0 | 申请日: | 2018-05-10 |
公开(公告)号: | CN108647145B | 公开(公告)日: | 2020-01-03 |
发明(设计)人: | 姜宇;梁杰;王明哲;陈元亮;顾明;孙家广 | 申请(专利权)人: | 清华大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 11002 北京路浩知识产权代理有限公司 | 代理人: | 王莹;李相雨 |
地址: | 100084 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 导向性 测试用例文件 待测试软件 安全检测 符号执行 模糊测试 内存 预设 满足条件 节约 转换 覆盖 改进 | ||
1.一种软件内存安全检测方法,其特征在于,包括:
S1,通过符号执行确定待测试软件的多个预设测试用例文件,并将所述多个预设测试用例文件分别转换为基于导向性变异的模糊测试的初始输入种子;
S2,基于所有初始输入种子,对所述待测试软件进行基于导向性变异的模糊测试,所述导向性变异为根据所述待测试软件中程序的覆盖范围进行的变异;
S2具体包括:
S221,将所有初始输入种子依次存储至预设种子池内,基于种子变异属性、种子执行速度、种子大小以及种子命中程序分支属性,从所述预设种子池内筛选满足第二预设条件的种子进行导向性变异,并基于种子变异属性、种子执行速度、种子大小以及种子命中程序分支属性,从变异产生的种子中选取满足所述第二预设条件的种子存储至所述预设种子池中以更新所述预设种子池;
S222,对更新后的所述预设种子池内的所有种子重复上述筛选及变异过程,直至更新后的所述预设种子池内满足所述第二预设条件的每一种子的变异次数分别达到预设次数;
S223,基于更新后的所述预设种子池内的所有种子,对所述待测试软件进行测试。
2.根据权利要求1所述的方法,其特征在于,所述第二预设条件具体为:所述种子变异属性为未经变异、所述种子执行速度与所述种子大小的乘积最小以及所述种子命中程序分支属性为命中所述待测试软件中程序的稀有分支;
所述稀有分支为:所述待测试软件中程序对应预设命中次数的分支。
3.根据权利要求1所述的方法,其特征在于,S2中所述导向性变异具体包括:确定性变异和导向性随机变异;
所述确定性变异包括:对满足所述第二预设条件的种子按位进行翻转、替换或进行算数运算;
所述导向性随机变异包括:随机筛选满足所述第二预设条件的种子的变异位数及变异位置,并基于所述变异位置处字节的变异属性,对满足所述第二预设条件的种子的变异位置处字节进行变异。
4.根据权利要求1所述的方法,其特征在于,还包括:
将更新后的所述预设种子池内的所有种子分别输入至所述待测试软件,以使所述待测试软件分别执行更新后的所述预设种子池内的每一种子;
若判断获知更新后的所述预设种子池内的所有种子中的任一种子在执行时触发所述待测试软件的问题,则将所述任一种子存储至预设文件中,以产生崩溃报告。
5.根据权利要求1所述的方法,其特征在于,所述更新后的所述预设种子池内满足所述第二预设条件的每一种子对应的预设次数通过如下公式计算:
其中,α(i)为更新后的所述预设种子池内满足所述第二预设条件的种子i的基本变异次数;β和M均为常数;s(i)为更新后的所述预设种子池内满足所述第二预设条件的种子截止至当前时刻从所述预设种子池或更新后的所述预设种子池中被选取的次数;f(i)为更新后的所述预设种子池内满足所述第二预设条件的种子i覆盖的所述待测试软件中程序的路径被执行的总次数。
6.根据权利要求1-5中任一项所述的方法,其特征在于,S1中所述通过符号执行确定待测试软件的多个预设测试用例文件具体包括:
将所述待测试软件进行符号执行,从所述符号执行输出的所有测试用例文件中选取对应于符号执行中预设路径探索深度的测试用例文件,确定多个预设测试用例文件。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学,未经清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810444279.0/1.html,转载请声明来源钻瓜专利网。