[发明专利]一种Android应用隐私泄露漏洞检测方法有效
申请号: | 201910088200.X | 申请日: | 2019-01-29 |
公开(公告)号: | CN109933988B | 公开(公告)日: | 2023-07-25 |
发明(设计)人: | 柳毅;陈宇彤;凌捷;欧毓毅 | 申请(专利权)人: | 广东工业大学 |
主分类号: | G06F21/57 | 分类号: | G06F21/57 |
代理公司: | 广东广信君达律师事务所 44329 | 代理人: | 杨晓松 |
地址: | 510062 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 android 应用 隐私 泄露 漏洞 检测 方法 | ||
1.一种Android应用隐私泄露漏洞检测方法,其特征在于,包括以下步骤:
步骤S1:对APK进行逆向分析获取信息;
步骤S2:对逆向分析获取的信息判断应用的组件是否存在源函数和ICC方法,若存在,则进行步骤S3,否则不存在隐私泄露风险,处理下一个应用;
步骤S3:构建CCP、CCLink以及CFG;
步骤S4:进行污点标记与传播;
步骤S5:判断锚函数中的参数是否包含了污点数据,若是,则判断包含源函数的组件到包含锚函数的组件之间存在一条隐私数据泄露的路径,即可断定从源函数到锚函数之间所涉及的所有组件存在数据泄露的漏洞;
所述步骤S3中,构建CCP的具体过程如下:
首先查找应用组件所有的ICC方法,若查找到,则将该方法参数输入CCP构造器,使其自动生成匹配目标组件的结果,把发送组件、调用的ICC方法及其参数和匹配到的目标组件存入到CCP表中;
对于动态注册广播,CCP构造器不能有效匹配其结果的情况下,查找应用源代码,并解析registerreciver0方法中的第一参数,以获取接收组件,并将接收组件添加到与发送组件、ICC方法及ICC方法的参数相同的对应CCP表中;
若应用没有使用ICC方法,则该应用没有组件间通信安全问题;
所述步骤S3中,构建CCLink的具体过程如下:
首先遍历CCP表,并按照以下规则构建CCLink:
1)如果找到两组CCP均来自同一应用,且存在该两组CCP中其中一组的目标组件与另一组中的发送组件为同一组件,则通过它们的共同组件连接起来;
2)如果CCP的目标组件与发送组件不是来自同一应用,但其目标组件与另一组CCP的发送组件为同一组件,也通过它们的共同组件连接起来;
3)对发送组件与目标组件不在同一应用内的CCP直接生成CCLink;
4)考虑到组件调用的无穷性,规定一条CCLink包含的组件若来自不同的应用,则应用个数不超过三个;
所述步骤S3中,构建CFG的具体过程如下:
首先找到CClink涉及的每个组件的入口方法,即activity的oncreate()、onstart(),service的onstartcommand(),broadcastreceiver的onreceiver(),从这些入口方法开始处构建组件内控制流图;在遇到ICC方法时,根据得到的CCP结果找到对应接收组件的入口方法并连接起来生成组件间控制流图,最后将组件内控制流图和组件间控制流图合并形成完整的控制流图。
2.根据权利要求1所述的一种Android应用隐私泄露漏洞检测方法,其特征在于,所述步骤S1包括解析配置文件、代码反编译分析两个部分;具体过程如下:
步骤S1-1:将APK解压后获取其中的manifest.xml文件并通过使用AXMLprint2.jar提取内容;
步骤S1-2:将APK文件进行反编译,获取应用中的dex文件,然后将android应用反编译为java源代码,并在该代码基础上提取应用组件中有关数据,包括ICC方法、入口点、getintent()方法与接收intent并提取其中数据以及动态注册broadcast receiver的相关信息。
3.根据权利要求2所述的一种Android应用隐私泄露漏洞检测方法,其特征在于,所述步骤S1-1中,除了获取清单文件里应用的包名及其组件的基本信息外,还包括应用安全相关的属性,包括应用的权限属性permission与use-permission、组件的exported属性与意图过滤器intent-filter属性。
4.根据权利要求1所述的一种Android应用隐私泄露漏洞检测方法,其特征在于,所述步骤S4中污点标记与传播的具体过程为:在步骤S3构建的CFG基础上,扫描所有语句,找到锚函数,若找到,则把步骤S2找到的源函数产生的对应数据标记为污点,然后进行污点数据传播过程。
5.根据权利要求4所述的一种Android应用隐私泄露漏洞检测方法,其特征在于,所述传播过程包括组件内与组件间污点传播;
组件内污点传播根据污点跟踪规则对污点进行传播;
组件间污点传播首先确定接收组件的入口方法,如果为oncreate()或者为onstart(),则将intent数据的污点信息传递给getintent();如果是onreceive()、Onbind()、onstartcommand()则传递给相应的方法参数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广东工业大学,未经广东工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910088200.X/1.html,转载请声明来源钻瓜专利网。