本发明专利技术提供一种Android应用漏洞检测方法,包括:步骤一、通过分析待检测Android应用的Content Provider接口特征,判断其是否可能存在隐私泄露漏洞;步骤二、如果可能存在,针对可能存在隐私泄露漏洞的待检测Android应用,通过对Android系统中相关API函数的监控,对待检测Android应用的公开可访问URI进行SQL注入漏洞测试和路径遍历漏洞测试,检测被动数据泄露安全风险。本发明专利技术还提供一种Android应用漏洞检测系统。上述方法和系统能够基于动态测试执行效果来快速发现Android应用中确定存在的隐私泄露和数据污染漏洞,并且避免误报,为大规模发现Android应用中隐私泄露与数据污染类安全漏洞提供了有力支持。
【技术实现步骤摘要】
Android应用漏洞检测方法及系统
本专利技术涉及计算机程序的漏洞检测技术,尤其涉及一种Android(安卓操作系统)上的应用漏洞检测方法及系统。
技术介绍
目前,随着互联网和智能手机在人类社会的日益普及,移动安全问题和安全隐患也随之愈发严重。针对智能手机的病毒、木马等恶意程序发展迅速,在移动终端上植入恶意代码进行网络犯罪的事件呈增长趋势,移动终端的用户正在面临前所未有的安全风险。Android平台是目前最流行的智能移动终端平台,其中存在的安全风险最为引人关注。ContentProvider是在Android操作系统中封装的一套结构化本地数据组件(通常是以SQLite数据库的形式),然后提供必要的封装机制来访问和控制数据。默认情况下,ContentProvider接口是开放的,Android应用可以通过这个组件互相沟通。与ContentProvider相关的安全隐患包括隐私泄露漏洞和数据污染漏洞。已有一些静态分析的方法来检测Android应用程序的隐私泄露和数据污染漏洞。这些方法主要对Android应用程序反编译后的Dalvik(Google公司设计用于Android平台的Java虚拟机)字节码或Java源代码进行静态分析,在静态代码中查找可能导致相关类型漏洞的特征。静态分析主要采用构造控制流图(以下简称CFG)技术,另外结合一些静态污点分析或数据流分析的技术以提高检测的准确率。例如:(1)Woodpecker首先通过对Android应用程序反编译后的Dalvik字节码建立控制流图来确定可能的执行路径,然后采用数据流分析技术对以上结果作进一步精简得到可能触发权限泄露的路径集。(2)DroidChecker对Android应用程序反编译后的Java源代码静态分析,首先从Manifest文件中提取疑似权限泄露的Android组件列表,然后从每个组件对应的Java程序入口开始构造CFG,同时结合静态污点分析技术,定位导致权限泄露的系统调用点。(3)ContentScope针对Android应用中的隐私泄露与数据污染漏洞,对反编译后的Java源代码进行静态分析,生成函数调用图和程序控制流图,从而识别出从ContentProvider接口至SQLite数据库操作API函数的程序执行流,确定出存在漏洞的应用。但是,对Java源代码的静态分析在很大程度上依赖于Java反编译工具的准确性和完整性,目前的技术无法保证无损地将Android应用程序包反编译到Java源代码级,这在一定程度上影响权限泄露静态分析技术的准确性。其次,众所周知,Java是一种支持继承和多态的高级语言。现有的静态分析方法采用的静态污点分析和数据流分析技术无法考虑Java的多态这一动态特征,也会在一定程度上增加漏洞检测的误报率。除此之外,现有的静态分析技术检测出的疑似漏洞并不能可以真正实现有效的攻击,有待手工方法做进一步验证,面对大量的Android应用程序,手工验证耗时耗力。面对当前大量的Android应用,从保护用户隐私和手机系统安全性的角度,都非常有必要设计出一种更加有效和自动化的Android应用隐私泄露与数据污染漏洞检测方法,来解决Android应用安全测试的难题。
技术实现思路
本专利技术要解决的技术问题是提出一种Android应用漏洞检测方法及系统,快速检测出Android应用中存在的隐私泄露或数据污染安全漏洞。根据本专利技术一个方面,提供一种Android应用漏洞检测方法,包括:步骤一、通过分析待检测Android应用的ContentProvider接口特征,判断其是否可能存在隐私泄露漏洞;步骤二、如果可能存在,针对可能存在隐私泄露漏洞的待检测Android应用,通过对Android系统中相关API函数的监控,对待检测Android应用的公开可访问URI进行SQL注入漏洞测试和路径遍历漏洞测试,检测被动数据泄露安全风险。可选的,在步骤一之前还包括:从Android应用商店或官方网站下载待检测Android应用;在检测环境中批量安装待检测Android应用。可选的,步骤一进一步包括:解析AndroidManifest.xml文件,查找是否存在ContentProvider标签;如果存在,解析ContentProvider标签的属性信息;检测exported属性,是否设置为暴露;如果exported设置为暴露,检测ContentProvider声明的权限信息,当声明的权限信息中设置了permission,那么没有授权就不可访问,不存在隐私泄露问题,也不存在数据污染问题;当设置了readPermission,就只能在有权限时可读,不存在隐私泄露问题,但可能存在数据污染;当设置了writePermission,就只能在有权限时可写,不存在数据污染问题,但可能存在隐私泄露。可选的,步骤二进一步包括:对运行待检测应用的Android系统框架进行监控代码的插桩,监控ContentProvider与SQLite数据库操作的数据查询API函数;生成SQL注入测试用例,调用待检测应用的ContentProvider接口执行测试用例,检测是否存在SQL注入漏洞;如果存在,通过执行测试用例,获取URI的数据查询游标(Cursors),通过游标遍历出数据表的列名和内容;获取存在SQL注入漏洞的结果集。可选的,步骤二进一步包括:检测是否可以通过URI的基本路径往上层层遍历到Android的各项目录下,抓取含有用户隐私的危险数据文件;如果存在,获取存在基本路径遍历漏洞的结果集。根据本专利技术另一个方面,提供一种Android应用漏洞检测方法,包括:步骤一、通过分析待检测Android应用的ContentProvider接口特征,判断其是否可能存在数据污染漏洞;步骤二、通过对运行待检测应用SQLite数据表结构获取,构造数据修改SQL注入语句,检测主动数据污染安全风险。可选的,步骤二进一步包括:对运行待检测应用的Android系统进行监控代码插桩,监控ContentProvider与SQLite数据库操作的数据修改API函数;对可以进行访问的URI地址进行Query语句的遍历,以确认表字段信息和表内容;根据表字段信息,并判断出表字段的数据类型,准备假数据,构建符合表字段类型的Insert语句,完成插入数据的工作;判断数据是否插入成功主要采取两种方法:其一是对比前后遍历URI数据的变化,其二是通过监控手工更改系统Log语句的打印,来验证SQLite内部是否真正执行该条SQL语句;如果插入成功,将前面插入的数据进行删除操作;将最后的结果记录Log日志中,基于Log日志中是否存有成功进行插入、删除操作的记录,来确定是否存在数据污染漏洞。根据本专利技术又一个方面,提供一种Android应用漏洞检测系统,包括:候选应用判断单元,适于通过分析待检测Android应用的ContentProvider接口特征,判断该候选Android应用/待测试Android应用是否可能存在数据污染漏洞和/或隐私泄露漏洞;漏洞检测控制器,与候选应用判断单元连接,适于根据安全漏洞检测策略,为可能存在数据污染漏洞和/或隐私泄露漏洞的待测试应用生成动态测试用例;动态测试代理程序,与漏洞检测控制器连接,适于调用本文档来自技高网...
【技术保护点】
一种Android应用漏洞检测方法,包括:步骤一、通过分析待检测Android应用的Content Provider接口特征,判断其是否可能存在隐私泄露漏洞;步骤二、如果可能存在,针对可能存在隐私泄露漏洞的待检测Android应用,通过对Android系统中相关API函数的监控,对待检测Android应用的公开可访问URI进行SQL注入漏洞测试和路径遍历漏洞测试,检测被动数据泄露安全风险。
【技术特征摘要】
1.一种Android应用漏洞检测方法,包括:步骤一、通过分析待检测Android应用的ContentProvider接口特征,判断其是否可能存在隐私泄露漏洞;步骤二、如果可能存在,针对可能存在隐私泄露漏洞的待检测Android应用,通过对Android系统中相关API函数的监控,对待检测Android应用的公开可访问URI进行SQL注入漏洞测试和路径遍历漏洞测试,检测被动数据泄露安全风险;其中,步骤一进一步包括:解析AndroidManifest.xml文件,查找是否存在ContentProvider标签;如果存在,解析ContentProvider标签的属性信息;检测exported属性,是否设置为暴露;如果exported设置为暴露,检测ContentProvider声明的权限信息,当声明的权限信息中设置了permission,那么没有授权就不可访问,不存在隐私泄露问题,也不存在数据污染问题;当设置了readPermission,就只能在有权限时可读,不存在隐私泄露问题,但可能存在数据污染;当设置了writePermission,就只能在有权限时可写,不存在数据污染问题,但可能存在隐私泄露;其中,步骤二进一步包括:对运行待检测应用的Android系统框架进行监控代码的插桩,监控ContentProvider与SQLite数据库操作的数据查询API函数;生成SQL注入测试用例,调用待检测应用的ContentProvider接口执行测试用例,检测是否...
【专利技术属性】
技术研发人员:李康,诸葛建伟,魏克,杨坤,段海新,
申请(专利权)人:南京赛宁信息技术有限公司,清华大学,
类型:发明
国别省市:江苏;32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。