[发明专利]一种Android二进制文件漏洞检测方法及系统在审
申请号: | 201810221973.6 | 申请日: | 2018-03-18 |
公开(公告)号: | CN108416219A | 公开(公告)日: | 2018-08-17 |
发明(设计)人: | 张德岳 | 申请(专利权)人: | 西安电子科技大学 |
主分类号: | G06F21/57 | 分类号: | G06F21/57;G06F21/56 |
代理公司: | 西安长和专利代理有限公司 61227 | 代理人: | 黄伟洪 |
地址: | 710071 陕西省*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 二进制文件 测试用例生成模型 代码覆盖率 漏洞检测 使用机器 测试 技术实现 漏洞挖掘 评判标准 随机变异 网络构造 遗传算法 自动生成 适应度 插桩 类库 衡量 学习 | ||
本发明属于Android二进制文件漏洞挖掘技术领域,公开了一种Android二进制文件漏洞检测方法及系统,使用基于LLVM的插桩技术实现代码覆盖率信息的收集,作为在遗传算法中衡量种子适应度的评判标准,选择种子进行下一代的随机变异;使用机器学习中的RNN网络构造测试用例生成模型,使用大量某种格式的文件训练得到的测试用例生成模型,自动生成新的测试用例。本发明可以很好的对Android系统类库等二进制文件进行Fuzzing测试;使用机器学习技术,训练得到测试用例生成模型来生成初始测试用例,可以有效提高初始代码覆盖率,节省寻找一些路径所需的变异、执行时间,提高Fuzzing的效率。
技术领域
本发明属于Android二进制文件漏洞挖掘技术领域,尤其涉及一种Android二进制文件漏洞检测方法及系统。
背景技术
Fuzzing是一种黑盒测试技术,通过不断生成大量畸形测试数据来测试程序的鲁棒性和安全性。该技术的核心是测试用例生成技术,良好的测试用例生成技术能保证更高的代码覆盖率和测试效率。而Fuzzing中的测试用例生成技术又可分为生成型和变异型两种,生成型是根据预设的规则(如文件、协议的格式)直接生成测试用例,而变异型是通过对给定的种子测试用例进行变异,从而不断生成新用例。
代码覆盖率一直是影响模糊测(Fuzzing)测试效率的重要因素,Fuzzing测试用例则很大程度上影响代码覆盖率,而变异型测试用例生成技术中的随机变异方法会生成更多的格式错误的、无效的测试用例,使用最终只能达到一个较低的代码覆盖率,影响Fuzzing的效率。
此外,在Android平台上,Fuzzing技术也得到了广泛地应用,研究人员开发出了大量针对Android系统上层的应用程序、组件间通信机制的Fuzzing工具,如Intent Fuzzer,DroidFuzzer等,以及将ioctl等系统调用作为攻击向量,针对Android系统驱动漏洞的ADDFuzzer。2015年发布的MFFA,是一个专门针对Android系统中libstagefright库进行Fuzzing测试的工具,但是该框架仅仅使用了简单的随机变异策略来生成测试用例,生成大量格式错误的、无效的测试用例,使整个Fuzzing过程花费很多时间在没有意义的执行和变异上。
(1)Fuzzing技术中的简单随机变异策略导致的代码覆盖率不高;
(2)目前大多数Android平台的Fuzzing工具是针对上层的应用程序和组件间通信机制,以及简单地针对系统调用进行测试,而缺少对Android系统框架以及系统类库的Fuzzing工具。
(3)Andorid平台的动态插桩技术多使用Hook技术来实现,而其主要应用于功能的改进和程序分析。如果在Fuzzing执行过程中进行动态插桩,会在一定程度上降低Fuzzing的效率。
首先,工具的整体使用了基于覆盖率反馈的灰盒Fuzzing技术,使用代码覆盖率信息来指导测试用例的变异,有目的性地生成有效的测试用例,避免了随机变异生成无效测试用例导致Fuzzing效率降低的问题。
实现了Android平台的基于覆盖率反馈的Fuzzing漏洞挖掘工具;
其次,将深度学习技术与Fuzzing漏洞挖掘技术相结合,提升了初始代码覆盖率,进一步提高了Fuzzing的效率;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安电子科技大学,未经西安电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810221973.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种Web服务器漏洞验证方法
- 下一篇:一种访问控制方法及装置