CN113158251B - 应用程序隐私泄露检测方法、系统、终端及介质 - Google Patents
应用程序隐私泄露检测方法、系统、终端及介质 Download PDFInfo
- Publication number
- CN113158251B CN113158251B CN202110483163.XA CN202110483163A CN113158251B CN 113158251 B CN113158251 B CN 113158251B CN 202110483163 A CN202110483163 A CN 202110483163A CN 113158251 B CN113158251 B CN 113158251B
- Authority
- CN
- China
- Prior art keywords
- information
- detection
- data
- privacy
- apk
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/572—Secure firmware programming, e.g. of basic input output system [BIOS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Bioethics (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供了一种应用程序隐私泄露检测方法及系统,针对GDPR,获取所需检测的APK;建立动态检测体系,对APK进行自动安装及运行,并收集动态检测所需的数据信息;在APK进行自动安装及运行期间,并行地建立静态检测通路,收集与动态检测所需的数据信息相匹配的静态检测所需的数据信息;结合动态检测与静态检测所需的数据信息,通过关联分析对数据流信息匹配,筛选出所需要的信息与隐私,完成对应用程序隐私泄露的检测。同时提供了一种相应的终端及介质。本发明能够在短时间内,不需要人工设定规则,自动高效准确地检测出应用程序中所存在的隐私泄露问题;够实现快速、简便、灵活地检测应用程序的隐私泄露,满足行业的需求。
Description
技术领域
本发明涉及隐私保护技术领域,具体地,涉及一种利用动态检测和静态检测相结合的针对于GDPR(通用数据保护条例)的应用程序隐私泄露检测方法、系统、终端及介质。
背景技术
随着网络、手机技术的普及与泛用化,对于隐私的保护已经引起了各个国家的重视。我国于2017年6月1日起全面实施了《中华人民共和国网络安全法》,其中明确加强对个人隐私的保护,要求网络产品、服务具有收集用户信息功能的,其提供者应当向用户明示并取得同意;网络运营者不得泄露、篡改、毁损其收集的个人信息;任何个人和组织不得窃取或者以其他非法方式获取个人信息,不得非法出售或者非法向他人提供个人信息。美国新通过的《2018加州消费者隐私法案》中规定了,如果企业掌握达到或超过5万名消费者的数据,消费者有权知道企业收集哪些个人数据、收集数据的目的、哪一类第三方获得这些数据;消费者有权要求企业删除这些数据,或是拒绝企业把自己的数据出售给第三方。
特别是于近期全面施行的欧盟《通用数据保护条例》,即GDPR(General DataProtection Regulation),在安全界产生了深远的影响。条例对应用开发厂商的隐私收集行为做出了明确而详尽的规定,要求保护用户的知情权、访问权、被遗忘权等等,极大的促进了隐私保护的规范和完善。不仅如此,在GDPR关于地域范围的规定中明确,“本例适用于在欧盟内部设立的数据控制者或处理者对个人数据的处理,不论其实际数据处理行为是否在欧盟内进行”,“本条例适用于如下相关活动中的个人数据处理,即使数据控制者或处理者不在欧盟设立”。也就是说,无论是否是欧盟的企业,只要为欧盟成员国提供了服务,就受到GDPR限制。因此,GDPR对包括中国在内的全球互联网大厂商都产生了一定影响。
于是为了符合各项法律法规的要求,应用开发厂商开始逐渐规范应用程序的隐私收集行为,安全研究人员也依据法律条款对应用程序开展隐私泄露检测。因此能够开发一个针对GDPR的隐私泄露检测方法就显得尤为重要。
现有的隐私泄露检测方法已经可以从静态、动态和通信流量等各个角度对安卓应用程序进行全方面的分析,并取得了较好的效果,但是使用单一的方法来检测仍然存在着一些不足。例如:
用静态分析方法检测安卓隐私泄露情况,在遍历过程中可能会进入到Dead Code分支,即开发人员废弃的代码段或用户正常使用时不可到达的条件分支,造成误报。如果要使用静态检测系统分析体积较大的APK文件,为了提高对单个文件的检测速度,通常会优化它的分支遍历算法,这样必然会省略对一些分支路径的遍历,导致漏报。另外,一些应用程序在运行过程中会通过网络下载和运行动态代码段,这也无法用静态分析检测到,同样造成了漏报。
而使用动态分析方法,除了要定制和root作系统带来额外的开销外,传统的人工调试由于工作量大无法实现自动化检测,动态污点跟踪则需要根据预设的函数集进行污点的标记,这样便无法检测调用第三方API带来的隐私泄露问题,导致漏报,而污点跟踪过程中的污点扩散问题则会造成误报。同样地,在流量分析中,现在的很多公司会选择对于一些比较敏感的隐私信息进行隐藏,使得如果仅对其简单的流量分析无法发现其中的隐私泄露点。
所以,设计一种能够基于静态和动态分析方法相结合的针对GDPR的隐私泄露检测技术具有很大的潜力。但是,如果将静态和动态分析方法同时应用于针对GDPR的隐私泄露检测中,则存在如下技术问题:
在流量的分析中,由于没有办法检测出一些被故意更改名字但是隐藏在明文流量中的泄露问题,同时会造成静态分析进行无差别的分支搜索,从而大大地增加静态搜索的分支数量,导致搜索时间的增长;同时,由于传统地动态检测中,需要对于单个或者一类应用程序包文件进行单独的定制和root操作系统,无法实现大规模的检测;动态的污点追踪则需要根据预设函数进行污点的标记,这样便无法检测调用第三方API带来的隐私泄露问题,导致漏报,而污点跟踪过程中的污点扩散问题则会造成误报。
目前没有发现同本发明类似技术的说明或报道,也尚未收集到国内外类似的资料。
发明内容
本发明针对现有技术中存在的上述不足,提供了一种利用动态检测和静态检测相结合的针对于GDPR(通用数据保护条例)的应用程序隐私泄露检测方法、系统、终端及介质。
根据本发明的一个方面,提供了一种应用程序隐私泄露检测方法,针对GDPR,包括:
获取所需检测的应用程序包文件;
对所需检测的应用程序包文件进行自动安装及运行,并收集动态检测所需的数据信息;
在所述应用程序包文件进行自动安装及运行期间,并行地建立静态检测通路,收集与动态检测所需的数据信息相匹配的静态检测所需的数据信息;
结合所述动态检测所需的数据信息与所述静态检测所需的数据信息,通过关联分析对数据流信息匹配,筛选出所需要的隐私信息,完成对应用程序隐私泄露的检测。
优选地,所述获取所需检测的应用程序包文件,包括:
下载所需检测的APK,获取APK信息;其中,所述APK信息包括:APK类型和APK名称;
所述将所需检测的APK集中存放于待检测APK文件夹内。
优选地,所述对所需检测的应用程序包文件进行自动安装及运行,并收集动态检测所需的数据信息,包括:
构建自动安装和运行的安卓模拟环境;
在所述安卓模拟环境下,自动地安装和运行所需检测的APK;
在运行过程中,收集运行期间所产生的日志和流量信息,得到动态检测所需的数据信息。
优选地,对所需检测的APK进行自动安装及运行,并收集动态检测所需的数据信息,包括:
采用安卓虚拟机配置APK的安卓模拟环境,使得所需检测的APK在安卓模拟环境下自动安装及运行,并通过与安卓虚拟机搭配设置的流量监听装置收集动态检测所需的数据信息。
优选地,所述动态检测所需的数据信息包括:APK自动安装及运行期间所产生的流量信息以及权限申请日志信息。
优选地,所述建立静态检测通路,包括:
基于FlowDroid平台,设置配置文件为一个包含Source/Sink集合的数据流向文件;
对所述数据流向文件进行定义,包括:
使用官方提供的Source/Sink集合作为预设文件;整理和筛选Android系统的隐私敏感API加入Source/Sink集合;选取第三方库中的隐私敏感API进行收集和分类,并归并入Source/Sink集合中;配置得到数据流向文件;
在完成对数据流向文件的配置后,即得到所述静态检测通路,对所需检测的APK进行自动化的检测,并生成记录隐私敏感数据流的xml文件,即为静态检测所需的数据信息。
优选地,所述关联分析,包括:
预设定包含有隐私信息的key集合和value集合;
对于应用程序运行中产生的数据流进行单终端地提取,并且遴选出其中的键值对;
对于每一个在key集合中的key值查找其在数据流信息中所关联的value值,并将这些value值增加进value集合中,并删除重复的值;
对于每一个在value集合中的value值在数据流信息中查找其所关联的key值,并将这些key值增加进key集合中,并删除重复的值;
重复增加key集合和增加value集合的步骤,直至key集合和value集合中的数量不再增加;
所述筛选出所需的隐私信息,是指根据GDPR所规定的不允许在网络中明文传输的包含有隐私敏感内容的信息。
优选地,在增加key集合和增加value集合的步骤中,设定特定的最多关联度n,进而保证关联分析的数据量。
根据本发明的另一个方面,提供了一种应用程序隐私泄露检测系统,包括:
应用程序包文件获取模块,该模块获取所需检测的应用程序包文件;
动态检测信息获取模块,该模块对所需检测的应用程序包文件自动地安装及运行,并收集动态检测所需的数据信息;
静态检测信息获取模块,该模块在所述应用程序包文件进行自动安装及运行期间,并行地建立静态检测通路,收集与动态检测所需的数据信息相匹配的静态检测所需的数据信息;
隐私信息检测模块,该模块结合动态检测所需的数据信息与静态检测所需的数据信息,通过关联分析对数据流信息匹配,查找出其中泄露的隐私信息。
根据本发明的第三个方面,提供了一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时可用于执行上述任一项所述的方法。
根据本发明的第四个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时可用于执行上述任一项所述的方法。
由于采用了上述技术方案,本发明与现有技术相比,具有如下至少一项的有益效果:
本发明提供的应用程序隐私泄露检测方法、系统、终端及介质,针对GDPR,能够在短时间内,不需要人工设定规则,自动高效准确地检测出应用程序中所存在的隐私泄露问题。
本发明提供的应用程序隐私泄露检测方法、系统、终端及介质,基于流量分析的方法,实现了一种针对GDPR的应用程序隐私泄露检测技术。在应用程序流量分析中,通过对于流量中键值对的提取,并利用动态检测结合静态检测的方法,来锁定隐藏在流量中的隐私泄露,能够实现快速、简便、灵活地针对GDPR检测应用程序的隐私泄露,满足行业的需求。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明一实施例提供的应用程序隐私泄露检测方法流程图;
图2为本发明一优选实施例提供的应用程序隐私泄露检测方法流程图;
图3为本发明一实施例提供的应用程序隐私泄露检测系统的组成模块示意图。
具体实施方式
下面对本发明的实施例作详细说明:本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
图1为本发明一实施例提供的应用程序(APP)隐私泄露检测方法流程图。
如图1所示,该实施例提供的应用程序隐私泄露检测方法,针对GDPR,可以包括如下步骤:
S100,获取所需检测的应用程序包文件(APK);
S200,对所需检测的APK进行自动安装及运行,并收集动态检测所需的数据信息;
S300,在APK进行自动安装及运行期间,并行地建立静态检测通路,收集与动态检测所需的数据信息相匹配的静态检测所需的数据信息;
S400,结合动态检测所需的数据信息与静态检测所需的数据信息,通过关联分析对数据流信息进行匹配,筛选出所需要的隐私信息,完成对应用程序隐私泄露的检测。
在该实施例的S100中,作为一优选实施例,获取所需检测的APK,可以包括如下步骤:
S101,下载所需检测的APK,获取APK信息;其中,APK信息包括:APK类型和APK名称;
S102,将所需检测的APK集中存放于待检测应用程序包文件的文件夹内。
在该实施例的S200中,作为一优选实施例,对所需检测的应用程序包文件进行自动安装及运行,并收集动态检测所需的数据信息,可以包括如下步骤:
S201,构建自动安装和运行的安卓模拟环境;
S202,在安卓模拟环境下,自动地安装和运行所需检测的应用程序包文件(APK);
S201,在运行过程中,收集运行期间所产生的日志和流量信息,得到动态检测所需的数据信息。
在该实施例的S200中,作为一具体应用实例,对所需检测的APK进行自动安装及运行,并收集动态检测所需的数据信息,可以包括如下步骤:
采用安卓虚拟机配置APK的安卓模拟环境,使得所需检测的APK在安卓模拟环境下自动安装及运行,并通过与安卓虚拟机搭配设置的流量监听装置收集动态检测所需的数据信息。
在该实施例的S200中,在一具体应用实例中,动态检测所需的数据信息可以包括:APK自动安装及运行期间所产生的流量信息以及权限申请日志信息。
在该实施例的S300中,作为一优选实施例,建立静态检测通路,可以包括如下步骤:
S301,基于FlowDroid平台,设置配置文件为一个包含Source/Sink集合的数据流向文件;
S302,对数据流向文件进行定义,包括:
S3021,使用官方提供的Source/Sink集合作为预设文件;
S3022,整理和筛选Android系统的隐私敏感API加入Source/Sink集合;
S3023,选取第三方库中的隐私敏感API进行收集和分类,并归并入Source/Sink集合中;
S3024,配置得到数据流向文件;
S303,在完成对数据流向文件的配置后,即得到静态检测通路,对所需检测的APK根据S200中日志信息中所产生的API名称,进行自动化的检测,并生成记录隐私敏感数据流的xml文件,即为静态检测所需的数据信息。
在该实施例的S400中,作为一优选实施例,关联分析,可以包括如下步骤:
S40a1,提前设定包含有隐私信息的key集合和value集合;
S40a2,对于APP运行中产生的数据流进行单终端地提取,并且遴选出其中的键值对;
S40a3,对于每一个在key集合中的key值查找其在数据流信息中所关联的value值,并将这些value值增加进value的集合,并删除重复的值;
S40a4,对于每一个在value集合中的value值在数据流信息中查找其所关联的key值,并将这些key值增加进key的集合并,并删除重复的值;
S40a5,重复上述S40a3和S40a4,直至key集合和value集合中的数量不再增加。
在该实施例的S400中,作为一优选实施例,关联分析,还可以包括如下步骤:
S40a6,在S40a3和S40a4中,设定特定的最多关联度n来保证其检测的数据量不会过大,造成大量的时间和资源浪费。
在该实例的S400中,作为一优选实施例,数据流的信息匹配,可以包括如下步骤:
S40b1,获得在S300中所产生的数据流中包含可能泄露的原始数据值;
S40b2,对原始信息使用S40a中所提及的算法进行关联匹配,得到其变化后可能的key-value对;
S40b3,检查在运行期间所产生的流量信息,并提取流量中所包含的所有参数名称和参数值,并建立相应的key-value对;
S40b4;通过S40b2中生成的可能的key-value对与S40b3中所提取出的key-value对进行一一比对,如果出现相同的key值与value值对则证明存在相应的隐私泄露。
本发明上述实施例提供的应用程序隐私泄露检测方法,采用静态检测和动态检测相结合的检测方式,对于一个应用程序(APP)进行自动化的分析,能够检测出APP在正常使用情况下所发生的隐私泄露行为,帮助相关监察人员进行调查工作,高效地检测其是否符合法律法规,以便相关人员进行下一步的调查和取证。
在本发明部分实施例中:
S100中,对于APK的爬取过程,将下载页面的内容分解成相应的树形结构图“xpath:./div/div/div/div/div/a”,来查找其中的APK下载地址和应用详情。
S200中,在检测过程中,需要保证所触发的事件符合软件运行的规则,同时具有一定的随机性,并且收集的数据具有合理性和时效性。其中:
模拟运行过程,选择利用安卓压力测试常用的手段Monkey测试的方法,同时将对期间所产生的流量进行实时收集并删除系统自己产生的流量,以消除对于结果的影响于偏差。
在S300中,采用污点追踪的静态检测方法,基于FlowDroid平台实现对于数据流图的构建。具体步骤如下:
收集预设的包含获取隐私API和泄露隐私API的Source/Sink集合。之后对系统中的敏感API和常用第三方库中的敏感API进行收集和分类,并且归并进原有预设集合,存储在SourcesAndSinks文件中。最后使用整理过后的SourcesAndSinks文件对APK进行数据流分析,生成记录隐私敏感数据流的xml文件。
在S400中需要将动态检测的流量分析数据和静态检测的数据相结合,匹配特定类别的隐私信息。具体步骤主要包含:数据的预处理、关联挖掘(关联分析)、隐私类型的判定、结果评估四个步骤。
图2为本发明一优选实施例提供的应用程序隐私泄露检测方法流程图。
如图2所示,该优选实施例提供的应用程序隐私泄露检测方法,可以包括如下步骤:
步骤一,构建一个APK的自动下载系统,将所需检测的APK集中地存放在某一区域;
步骤二,建立动态检测的体系,对所需检测的APK自动地安装,运行,并收集所需数据;
步骤三,在步骤二期间,并行地建立静态检测的方法通路,收集与之相匹配的数据信息;
步骤四,对于数据信息采用关联挖掘,隐私分类等处理,筛选出所需要的信息与隐私。
下面对该优选实施例所提供的技术方案进行进一步的详细描述:
如图2所示,该优选实施例提供的方法,包括如下四个步骤,分别是获取所需APK、动态检测步骤、静态检测步骤以及数据结合分析步骤。
其中获取所需APK的详细步骤如下:
为了保证所下载的应用程序均为正版且安全(不存在恶意软件),选择从安卓官方市场Google Play按照其提供的不同分类获取所需APP。通过解析其URL,发现在每个分类页面中,应用程序以列表的形式进行显示,每个应用程序包括Logo、程序名和评分等信息,单击Logo或者程序名称都可以跳转到应用程序的详情和下载页面。该优选实施例基于BeautifulSoup库解析分类下载页面的树形结构,通过“xpath:./div/div/div/div/div/a”来获取应用程序的详情和下载页地址,进一步爬取所需检测APK。
动态检测步骤主要包括:安卓虚拟化环境、流量收集装置两项配置环境。其中,安卓虚拟化环境包括创建安卓虚拟机,自定义设备的IMEI、IMSI、设备型号、SIM卡号码,设置虚拟GPS位置等,运行Iptables并配置拦截规则等;流量收集装置则需要设置流量监听端口,流量监听证书等。之后将自动运行如下流程:
自动化将待检测APK安装到安卓虚拟机上;开放虚拟机防火墙;对待检测APK利用安卓测试常用的方法Monkey测试,进行15分钟的模拟运行,期间内产生10000次随机事件;流量收集装置自动获取此期间的所有流量并按照时间戳进行转存;同时利用Xprivacy对此期间内产生的权限申请进行记录。
静态检测步骤的设计主要基于FlowDroid平台实现,其配置文件为一个包含数据流向(Source和Sink)的文件。在此阶段,本发明数据流Source/Sink集合文件的定义采用以下步骤:
使用官方提供的Source/Sink集合作为预设文件;整理和筛选Android系统的隐私敏感API加入Source/Sink集;选取常用第三方库中的隐私敏感API进行收集和分类,并归并如Source/Sink集合中。
在完成Source/Sink文件的配置之后,本发明对待检测的APK进行自动化的检测,并生成记录隐私敏感数据流的xml文件。
在数据结合分析步骤,该优选实施例结合动态检测与静态检测的数据信息检测出APK泄露的隐私数据。结合不同的隐私信息,将其分成三种类型,分别是:身份信息(PI)、设备信息(DI)和位置信息(LI)。
在定义了信息分类以后,将对之前收集到的信息来结合判定:
对于动态分析的数据,首先进行预处理阶段,将其拆分成请求和返回两个部分,并且筛除安卓系统本身带来的流量干扰。在请求报文中,主要包含有:请求行、请求头部的Referer、Cookie域以及POST报文中的请求数据部分。其中在请求行和请求头部的Referer域内容均为域名加参数的形式,其中参数的格式为key1=value1&key2=value2&key3=value3&…,即键值对的形式,其中=符号为赋值符,&符号为连接符。key为应用程序开发人员定义的信息关键词,value为对应的真实值。请求头部的Cookie域和请求数据部分,同样包含了与实际意义相关联的关键词与值,区别只是赋值符和连接符有所不同。而对于关键词对应的value值,如mac地址、imei等,则遵循了各自固定的格式。因此可以采用字符串检索和模糊查询等方法对数据包中的关键词进行搜索,或者使用正则表达式对数据包中的各类value值进行匹配,以获取数据包中包含的隐私信息类型。由于key值都是由开发人员根据自身喜好或习惯自定义的,所以很多包含隐私信息的键值对并不能够一眼就被认出,同时许多APP会通过变更编码的方式故意隐藏一些隐私信息,所以采用关联挖掘的机器学习方法来检测这些隐藏的信息。其算法的主要步骤如下:
步骤1,初始化key/value集。选取一些关注的与隐私相关的关键词集合作为预设key集,同时预设一个空的value集;
步骤2,提取键值对。在单个用户终端上对大量APP进行模拟使用,并收集通信数据,提取所有数据包中的key-value键值对;
步骤3,扩充value集合。对于key集中每一个key,在所有键值对中查找对应的value值,扩充value集;
步骤4,扩充key集合。对于value集中的每一个value,在所有键值对中查找对应的key值,扩充key集;
重复步骤3、步骤4直到key集和value集不再增长,匹配完成。
具体地,在进行匹配步骤3和步骤4时,对于指定的key或value,在所有键值对中查找对应的value/key值。在一些情况下,例如APP开发人员对变量的命名不规范,则匹配过程可能会将许多无关的值添加到集合中,造成集合的无限增长。为了尽可能通过关联的方法找到隐藏的隐私信息,同时控制匹配的扩张程度,需要设置一个名为n的匹配数值,对找到的所有value/key根据值进行分组、统计数量和排序,只将个数最多的前n个值添加到集合中。
同样地,同一个key常常对应多个value,反之亦然,在多次关联分析时,可能将相同的key或value添加进集合中。为了提高运行效果,同时避免重复添加的问题,每次匹配和扩充kay/value集合后,都必须对集合做一次去重操作,对同一个值只保留一个样例。
流量关联挖掘算法是在单个用户终端环境下,针对测试集中的所有应用程序产生的通信流量进行关联分析,生成Key集和Value集。分析单个应用程序的隐私泄露情况时,当其产生的流量中所提取的键值对同时分别属于Key集和Value集时,则认为它造成了隐私泄露。例如包含位置信息的键值对“location=33.3333”,关键词“location”和值“33.3333”分别可以在Key集和Value集进行中匹配,当应用程序的流量中包含至少一个该键值对,即可认定其泄露了隐私。
虽然动态分析可以拓展隐私信息的匹配边界,检测到不易被察觉的隐私泄露情况,但是由于通信数据中的文本关键词都是由APP开发人员定义的,这种自定义的不确定会造成关联挖掘存在一定盲目性。所以引入结合应用程序静态分析中的数据流分析方法,利用FlowDroid框架分析隐私敏感函数的数据流,对关联挖掘的结果进行评估,可以得出更加准确的结论。静态分析的具体流程如下:
步骤I,解析APK中的layout xml文件、包含可执行代码的dex文件和定义四大组件的manifest文件;
步骤II,从生命周期和回调函数列表中生成虚拟main函数;
步骤III,依据main函数生成调用图和过程间控制流图;
步骤IV,依据source和sink对数据流进行分析。
将从流量中检测到的隐私信息泄露与数据流信息相匹配,同时与Xprivacy中收集的权限申请记录相叠加,确定其最终的隐私泄露情况。
图3为本发明一实施例提供的应用程序隐私泄露检测系统的组成模块示意图。
如图3所示,该实施例提供的应用程序隐私泄露检测系统,可以包括:APK获取模块、动态检测信息获取模块、静态检测信息获取模块以及隐私信息检测模块。其中:
应用程序包文件(APK)获取模块,该模块获取所需检测的应用程序包文件(APK);
动态检测信息获取模块,该模块对所需检测的应用程序包文件自动地安装及运行,并收集动态检测所需的数据信息;
静态检测信息获取模块,该模块在所述应用程序包文件进行自动安装及运行期间,并行地建立静态检测通路,收集与动态检测所需的数据信息相匹配的静态检测所需的数据信息;
隐私信息检测模块,该模块结合动态检测所需的数据信息与静态检测所需的数据信息,通过关联分析对数据流信息匹配,查找出其中泄露的隐私信息。
本发明一实施例提供了一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时可用于执行上述实施例中任一项的方法。
可选地,存储器,用于存储程序;存储器,可以包括易失性存储器(英文:volatilememory),例如随机存取存储器(英文:random-access memory,缩写:RAM),如静态随机存取存储器(英文:static random-access memory,缩写:SRAM),双倍数据率同步动态随机存取存储器(英文:Double Data Rate Synchronous Dynamic Random Access Memory,缩写:DDR SDRAM)等;存储器也可以包括非易失性存储器(英文:non-volatile memory),例如快闪存储器(英文:flash memory)。存储器用于存储计算机程序(如实现上述方法的应用程序、功能模块等)、计算机指令等,上述的计算机程序、计算机指令等可以分区存储在一个或多个存储器中。并且上述的计算机程序、计算机指令、数据等可以被处理器调用。
上述的计算机程序、计算机指令等可以分区存储在一个或多个存储器中。并且上述的计算机程序、计算机指令、数据等可以被处理器调用。
处理器,用于执行存储器存储的计算机程序,以实现上述实施例涉及的方法中的各个步骤。具体可以参见前面方法实施例中的相关描述。
处理器和存储器可以是独立结构,也可以是集成在一起的集成结构。当处理器和存储器是独立结构时,存储器、处理器可以通过总线耦合连接。
本发明一实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时可用于执行上述实施例中任一项的方法。
本发明上述实施例提供的应用程序隐私泄露检测方法、系统、终端及介质,针对GDPR,能够在短时间内,不需要人工设定规则,自动高效准确地检测出应用程序中所存在的隐私泄露问题。本发明上述实施例提供的应用程序隐私泄露检测方法、系统、终端及介质,基于流量分析的方法,实现了一种针对GDPR的应用程序隐私泄露检测技术。在应用程序流量分析中,通过对于流量中键值对的提取,并利用动态检测结合静态检测的方法,来锁定隐藏在流量中的隐私泄露,能够实现快速、简便、灵活地针对GDPR检测应用程序的隐私泄露,满足行业的需求。
需要说明的是,本发明提供的方法中的步骤,可以利用系统中对应的模块、装置、单元等予以实现,本领域技术人员可以参照方法的技术方案实现系统的组成,即,方法中的实施例可理解为构建系统的优选例,在此不予赘述。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。
Claims (8)
1.一种应用程序隐私泄露检测方法,其特征在于,针对GDPR,包括:
获取所需检测的应用程序包文件;
对所需检测的应用程序包文件进行自动安装及运行,并收集动态检测所需的数据信息;
在所述应用程序包文件进行自动安装及运行期间,并行地建立静态检测通路,收集与动态检测所需的数据信息相匹配的静态检测所需的数据信息;包括:
基于FlowDroid平台,设置配置文件为一个包含Source/Sink集合的数据流向文件;
对所述数据流向文件进行定义,包括:
使用官方提供的Source/Sink集合作为预设文件;整理和筛选Android系统的隐私敏感API加入Source/Sink集合;选取第三方库中的隐私敏感API进行收集和分类,并归并入Source/Sink集合中;配置得到数据流向文件;
在完成对数据流向文件的配置后,即得到所述静态检测通路,对所需检测的APK进行自动化的检测,并生成记录隐私敏感数据流的xml文件,即为静态检测所需的数据信息;
结合所述动态检测所需的数据信息与所述静态检测所需的数据信息,通过关联分析对数据流信息匹配,筛选出所需要的隐私信息,完成对应用程序隐私泄露的检测;其中:
所述关联分析,包括:
预设定包含有隐私信息的key集合和value集合;
对于应用程序运行中产生的数据流进行单终端地提取,并且遴选出其中的键值对;
对于每一个在key集合中的key值查找其在数据流信息中所关联的value值,并将这些value值增加进value集合中,并删除重复的值;
对于每一个在value集合中的value值在数据流信息中查找其所关联的key值,并将这些key值增加进key集合中,并删除重复的值;
重复增加key集合和增加value集合的步骤,直至key集合和value集合中的数量不再增加;
所述筛选出所需的隐私信息,是指根据GDPR所规定的不允许在网络中明文传输的包含有隐私敏感内容的信息;
所述数据流信息匹配,包括:
将所获得的数据进行关联分析,得到其所代表的具体实例信息值,即每一个key-value对经过关联分析以后的得到的其所代表的原始含义;
将得到的具体实例信息值进行归类,其中被分为三个部分:身份信息,位置信息和设备信息;
根据静态分析的数据通路,分析信息值所生成的具体数据流同方向;
通过日志,检查API的调用情况,确定其在特定时刻的确调用获得某种特定信息的API;
所述对所需检测的应用程序包文件进行自动安装及运行,并收集动态检测所需的数据信息,包括:
构建自动安装和运行的安卓模拟环境;
在所述安卓模拟环境下,自动地安装和运行所需检测的APK;
在运行过程中,收集运行期间所产生的日志和流量信息,得到动态检测所需的数据信息。
2.根据权利要求1所述的应用程序隐私泄露检测方法,其特征在于,所述获取所需检测的应用程序包文件,包括:
下载所需检测的APK,获取APK信息;其中,所述APK信息包括:APK类型和APK名称;
所述将所需检测的APK集中存放于待检测APK文件夹内。
3.根据权利要求1所述的应用程序隐私泄露检测方法,其特征在于,对所需检测的APK进行自动安装及运行,并收集动态检测所需的数据信息,包括:
采用安卓虚拟机配置APK的安卓模拟环境,使得所需检测的APK在安卓模拟环境下自动安装及运行,并通过与安卓虚拟机搭配设置的流量监听装置收集动态检测所需的数据信息。
4.根据权利要求3所述的应用程序隐私泄露检测方法,其特征在于,所述动态检测所需的数据信息包括:APK自动安装及运行期间所产生的流量信息以及权限申请日志信息。
5.根据权利要求1所述的应用程序隐私泄露检测方法,其特征在于,在增加key集合和增加value集合的步骤中,设定特定的最多关联度n,进而保证关联分析的数据量。
6.一种应用程序隐私泄露检测系统,可用于执行权利要求1-5中任一项所述的方法,其特征在于,包括:
应用程序包文件获取模块,该模块获取所需检测的应用程序包文件;
动态检测信息获取模块,该模块对所需检测的应用程序包文件自动地安装及运行,并收集动态检测所需的数据信息;
静态检测信息获取模块,该模块在所述应用程序包文件进行自动安装及运行期间,并行地建立静态检测通路,收集与动态检测所需的数据信息相匹配的静态检测所需的数据信息;
隐私信息检测模块,该模块结合动态检测所需的数据信息与静态检测所需的数据信息,通过关联分析对数据流信息匹配,查找出其中泄露的隐私信息。
7.一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时可用于执行权利要求1-5中任一项所述的方法。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时可用于执行权利要求1-5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110483163.XA CN113158251B (zh) | 2021-04-30 | 2021-04-30 | 应用程序隐私泄露检测方法、系统、终端及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110483163.XA CN113158251B (zh) | 2021-04-30 | 2021-04-30 | 应用程序隐私泄露检测方法、系统、终端及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113158251A CN113158251A (zh) | 2021-07-23 |
CN113158251B true CN113158251B (zh) | 2022-10-11 |
Family
ID=76872896
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110483163.XA Active CN113158251B (zh) | 2021-04-30 | 2021-04-30 | 应用程序隐私泄露检测方法、系统、终端及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113158251B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114297700B (zh) * | 2021-11-11 | 2022-09-23 | 北京邮电大学 | 动静态结合的移动应用隐私协议提取方法及相关设备 |
CN114091028B (zh) * | 2022-01-19 | 2022-04-19 | 南京明博互联网安全创新研究院有限公司 | 一种基于数据流的Android应用信息泄露检测方法 |
CN114826732B (zh) * | 2022-04-25 | 2023-01-06 | 南京大学 | 一种安卓系统隐私窃取行为的动态检测与溯源方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104537309A (zh) * | 2015-01-23 | 2015-04-22 | 北京奇虎科技有限公司 | 应用程序漏洞检测方法、装置及服务器 |
CN106845236A (zh) * | 2017-01-18 | 2017-06-13 | 东南大学 | 一种针对iOS平台的应用程序多维度隐私泄露检测方法及系统 |
CN107196870B (zh) * | 2017-07-20 | 2021-07-20 | 哈尔滨工业大学 | 一种基于dpdk的流量动态负载均衡方法 |
CN108334780A (zh) * | 2018-02-06 | 2018-07-27 | 南京航空航天大学 | 基于上下文信息的隐私泄露检测方法 |
CN108846282A (zh) * | 2018-06-04 | 2018-11-20 | 西安电子科技大学 | 基于静态污点分析的安卓应用程序权限泄露漏洞检测方法 |
US20200320202A1 (en) * | 2019-04-04 | 2020-10-08 | International Business Machines Corporation | Privacy vulnerability scanning of software applications |
CN112257063B (zh) * | 2020-10-19 | 2022-09-02 | 上海交通大学 | 一种基于合作博弈论的联邦学习中后门攻击的检测方法 |
-
2021
- 2021-04-30 CN CN202110483163.XA patent/CN113158251B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113158251A (zh) | 2021-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113158251B (zh) | 应用程序隐私泄露检测方法、系统、终端及介质 | |
CN106203113B (zh) | 安卓应用文件的隐私泄露监控方法 | |
CN104766012B (zh) | 基于动态污点追踪的数据安全动态检测方法及系统 | |
CN110737899B (zh) | 一种基于机器学习的智能合约安全漏洞检测方法 | |
CN112131882A (zh) | 一种多源异构网络安全知识图谱构建方法及装置 | |
CN105787366B (zh) | 基于组件关系的安卓软件可视化安全分析方法 | |
CN112685737A (zh) | 一种app的检测方法、装置、设备及存储介质 | |
CN107368417A (zh) | 一种漏洞挖掘技术测试模型及测试方法 | |
CN108133139A (zh) | 一种基于多运行环境行为比对的安卓恶意应用检测系统 | |
CN105893848A (zh) | 一种基于代码行为相似度匹配的Android恶意应用程序防范方法 | |
CN105550594A (zh) | 安卓应用文件的安全性检测方法 | |
CN105068921A (zh) | 基于App对比分析的Android应用商店可信度评价方法 | |
CN111104579A (zh) | 一种公网资产的识别方法、装置及存储介质 | |
CN104281808A (zh) | 一种通用的Android恶意行为检测方法 | |
CN108090360A (zh) | 一种基于行为特征的安卓恶意应用分类方法及系统 | |
CN112016138A (zh) | 一种车联网自动化安全建模的方法、装置和电子设备 | |
CN111414402A (zh) | 一种日志威胁分析规则生成方法及装置 | |
CN113177205A (zh) | 一种恶意应用检测系统及方法 | |
Pérez et al. | Lapse+ static analysis security software: Vulnerabilities detection in java ee applications | |
CN114006765A (zh) | 检测报文中敏感信息的方法、装置和电子设备 | |
CN116932381A (zh) | 小程序安全风险自动化评估方法及相关设备 | |
CN116980162A (zh) | 云审计的数据检测方法、装置、设备、介质及程序产品 | |
CN110287722B (zh) | iOS应用中用于隐私条例检查的敏感权限提取方法 | |
CN113901463B (zh) | 面向概念漂移的可解释Android恶意软件检测方法 | |
CN111611590A (zh) | 涉及应用程序的数据安全的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |