[发明专利]基于静态污点分析和符号执行的安卓应用漏洞挖掘方法有效

专利信息
申请号: 201611113164.0 申请日: 2016-12-07
公开(公告)号: CN106709356B 公开(公告)日: 2019-05-24
发明(设计)人: 付胧玉;杨超;杨力;马建峰;罗丹;卢璐 申请(专利权)人: 西安电子科技大学
主分类号: G06F21/57 分类号: G06F21/57
代理公司: 陕西电子工业专利中心 61205 代理人: 王品华;朱红星
地址: 710071 陕*** 国省代码: 陕西;61
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 漏洞挖掘 污点 控制流 分析 漏洞 数据流分析 分析目标 符号执行 内存消耗 应用程序漏洞 反编译程序 技术过滤 静态符号 挖掘 可用 误报 源码 编译 过滤 应用 打印 警告 配置 研究
【权利要求书】:

1.一种基于静态污点分析和符号执行的安卓应用漏洞挖掘方法,包括:

1)配置分析目标并解析源码:

1a)构造两个链表结构,分别用来保存用户定义在配置文件中的污染源函数source和陷入函数sink;

1b)输入安卓程序源码,调用开源java语义分析工具soot对二进制源码进行逆向拆解,输出可读的中间语言代码存储在内存中;

2)控制流分析:

2a)调用java开源分析工具soot,输入步骤1b)生成的中间语言代码,输出函数内控制流图CFG到内存中;

2b)遍历步骤2a)生成的控制流图CFG,收集其中的函数调用语句,从这些函数调用语句中直接提取出函数调用关系,用这些函数调用关系的集合作为函数调用图CG,利用该调用图CG与2a)生成的控制流图CFG共同构成过程间控制流图ICFG;

2c)构造一个无参数的空函数D,把过程间控制流图ICFG中所有的入口都加入D函数中,使D成为过程间控制流图ICFG的总入口;

3)用户确认source函数:

3a)构造一个函数集合M,从2d)中的D函数开始,遍历过程间控制流图ICFG中除首个节点外的其它节点,并将遍历过程中遇到的全部函数加入集合M中;

3b)从3a)得到的函数集合M中寻找source函数,将source函数在程序中的位置写入文本文件中,并输出给用户;

3c)用户对3b)的文本文件进行选择,系统根据选择结果更新记录source函数的链表;

4)数据流分析:

4a)以3)中的D函数为起点,遍历过程间控制流图ICFG,每次提取图中的一个节点;

4b)对4a)提取的节点进行判断,当提取到的节点包含source函数时,记录该语句节点上的变量为污染数据;

4c)对4a)提取的节点进行判断,当提取到的节点不包含source函数或sink函数时,调用开源静态污点分析工具FlowDroid中的数据流函数F进行数据污染传递;

4d)对4a)提取的节点进行判断,当提取到的节点包含sink函数的时,检查污染数据是否在当前的sink函数中,若是,则以当前sink函数为终点生成一条污染路径;

4e)遍历完过程间控制流图ICFG后,结束数据流分析,并生成污染路径集合来记录4d)生成的所有污染路径;

5)静态符号执行:

5a)遍历4e)中生成的污染路径集合,每次读取一条污染路径L;

5b)记录污染路径L中分支语句的条件表达式,并用字母符号替换条件表达式中的变量,生成符号表达式;

5c)新建文本文件SF.smt2,按照可满足性理论2.0版本SMT2的标准格式,将5b)收集的符号表达式进行字符串拼接,并写入文本文件SF.smt2中;

5d)调用微软公司的符号约束求解器Z3求解文本文件SF.smt2中的符号表达式,若求得符号表达式无解,就将当前污染路径L从污染路径集合中删除,否则不做处理;

5e)求解完所有的污染路径后,若污染路径集合不为空,则警告用户程序存在漏洞,并且打印污染路径集合,若为空,则提示无漏洞。

2.根据权利要求1所述的方法,其特征在于,所述步骤1a)中的配置文件,是用户用来定义source函数和sink函数的文本文件,在该文件中以“<包名+类名+返回值+函数名+参数>”的形式设置source函数和sink函数。

3.根据权利要求1所述的方法,其特征在于,所述步骤2a)中的函数内控制流图CFG,是通过调用开源java语义分析工具soot实现的,其中soot输出的控制流图CFG以双向链表的形式表示,并且在控制流图CFG中每个语句节点都通过保存其前驱节点和后继节点来记录语句间的顺序关系。

4.根据权利要求1所述的方法,其特征在于,所述步骤2b)中的函数调用图CG,是通过将调用函数和被调用的函数进行映射,并将映射关系保存在调用语句节点中来实现的。

5.根据权利要求1所述的方法,其特征在于,所述步骤2c)中的函数D,是过程间控制流图ICFG的总入口,其构造过程是通过遍历过程间控制流图ICFG,并将其中的安卓生命周期函数和回调函数加入到一个新创建的无参函数中来完成的。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安电子科技大学,未经西安电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201611113164.0/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top