基于静态污点分析和符号执行的安卓应用漏洞挖掘方法与流程

文档序号:12064201阅读:来源:国知局

技术特征:

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,并将其中的安卓生命周期函数和回调函数加入到一个新创建的无参函数中来完成的。

6.根据权利要求1所述的方法,其特征在于,所述步骤3b)中source函数在程序中的位置,是通过记录source函数调用语句所在类的类名和其所在函数的函数名来实现的。

7.根据权利要求1所述的方法,其特征在于,所述步骤3c)中系统根据用户选择的结果更新记录source函数的链表,是根据用户选择新建source函数链表,并在新的source函数链表中增加source函数位置的记录。

8.根据权利要求1所述的方法,其特征在于,所述步骤4b)中判断提取到的节点是否包含source函数,是通过匹配source函数的位置和source函数的名称来实现,其中匹配的source函数在步骤3c)更新后的source函数链表中。

9.根据权利要求1所述的方法,其特征在于,所述步骤4c)中调用开源静态污点分析工具FlowDroid中的数据流函数F进行数据的污染传递,是通过使用FlowDroid的数据流函数F中定义的污染数据传递规则来建立污染数据和被污染数据之间的映射。

10.根据权利要求1所述的方法,其特征在于,所述步骤5c)中的可满足性理论2.0版本SMT2,是用逻辑表达式进行问题描述的一种公用标准,通过使用支持SMT2标准的约束求解器可以求解按照SMT2标准描述的问题,并得到该问题是否有解。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1