基于多粒度匹配的Android第三方功能库检测方法技术

技术编号:33534168 阅读:14 留言:0更新日期:2022-05-19 02:11
本发明专利技术公开一种基于多粒度匹配的安卓应用程序第三方库检测方法,主要解决现有技术无法检测被无效代码插入与控制流随机化混淆的应用程序问题,其方案是:通过反编译提取安卓应用程序静态信息和库文件静态信息;根据静态信息设计应用程序类过滤器与库过滤器,并将每个应用程序类过滤器与库过滤器进行匹配,得到潜在匹配类集合;将应用程序中的类与其潜在匹配库类集合中的每个类进行粗粒度匹配,得到应用程序类与库类多对多匹配结果;将粗粒度匹配的应用程序类与库类进行细粒度匹配,得到应用程序类与库类的一对一匹配结果,依据该匹配结果确定出应用程序是否包含第三方库。本发明专利技术检测精确率、召回率、F1值高,可用于安卓应用程序的第三方库检测。的第三方库检测。的第三方库检测。

【技术实现步骤摘要】
基于多粒度匹配的Android第三方功能库检测方法


[0001]本专利技术属于软件工程
,特别涉及一种Android应用程序的第三方功能库检测方法,可用于网络安全中的Android应用程序第三方漏洞功能库的存在性检测。

技术介绍

[0002]在移动互联网领域,Android操作系统已然成为最流行的开源操作系统之一,其上应用程序更是数不甚数,但随之而来的用户隐私泄露、资金丢失等重大安全问题也愈发严重,而其中应用程序由于引用了存在安全威胁的第三方功能库所导致的安全问题更是不容忽视。第三方功能库的特性主要是多样化和不透明性。其中多样化特性体现在现如今Android应用程序通过不断的引入大量现成的第三方功能库或者SDK(Software Development Kit),例如广告服务,地图服务,网络传输服务,社交统计服务等等,甚至在一些比较大的应用程序中,会同时引入几十甚至上百个第三方功能库来丰富应用程序的功能。不透明特性主要体现在,涉及社交、金融等第三方功能库提供商为了应用程序开发人员能够使用它们的服务,可能会在第三方功能库中添加一些关于自身服务的代码,而这些未知的情况,都会最终导致开发出的应用程序出现不确定的安全隐患。Android应用程序开发人员通过maven等工具可以很方便的集成所需的第三方功能库。但引用不当也会带来一系列的安全问题,其主要包括:
[0003](1)权限滥用:应用程序本身与引入的第三方功能库作为一个整体编译为应用程序文件供用户安装,程序运行时系统提示用户的应用申请权限信息中没有第三方代码权限的描述,导致第三方功能库中可能申请一些应用程序本身不需要的权限。
[0004](2)如果一个流行的第三方功能库包含某个安全漏洞,该漏洞的威胁将会传播到所有引用该库的应用程序。
[0005]目前最新的关于Android应用程序第三方功能库检测主要是基于聚类与相似度比较两种方式。基于聚类的方式,是通过聚类大量应用程序中的公共代码特征来达到检测大量应用程序中公有第三方功能库的方式。基于相似度比较的方式,是分别提取应用程序与第三方功能库的中间代码特征,通过相似度比较的方式检测应用程序中是否引入某第三方功能库的方式。在2021年ICSE录用的论文“ATVHunter:Reliable Version Detection of Third

Party Libraries for Vulnerability Identification in Android Applications”中也是采用相似度比较的方式来检测Android应用程序中的第三方功能库,首先通过解析应用程序中的AndroidManifest.xml文件来排除其中属于应用程序本身的代码,再采用类依赖图CDG来提取应用程序中所有候选的第三方功能库,然后采用了模糊hash的方式将应用程序中候选功能库中的类函数与待检测的库类函数进行相似度比较,即将函数操作码按基本块分隔为多个片段,每个片段分别用hash再组合来作为整个函数的指纹,以此来降低代码混淆中存在的函数内局部修改对函数整体相似度比较的影响,接着采用编辑距离来衡量两个函数模糊hash串的相似度,最后采用如下公式计算候选库与待检测库的相似度得分:
[0006][0007]其中t1表示app中的候选库,t2表示待检测的第三方功能库,表示t1与t2中完成匹配的函数数量,表示t2中的函数数量,TSS(t1,t2)表示两者的相似度得分。当TSS(t1,t2)值大于设定的阈值ε时,则视为应用程序中包含待检测的第三方功能库。该方法由于无法有效的检测被无效代码插入、控制流随机化混淆的应用程序,因而最终在其构建的356个应用程序与189个不同类型库的数据集上对第三方功能库的检测只能达到90.55%的精确率,87.16%的召回率与88.82%的F1值,对于app中未检测出的存在漏洞的第三方功能库会造成用户使用的安全隐患。

技术实现思路

[0008]本专利技术的目的在于针对上述现有技术的不足,提出一种基于多粒度匹配的Android第三方功能库检测方法,提高检测的精确率、召回率和F1值,减小用户使用的安全隐患。
[0009]实现本专利技术目的技术思路是:通过研究Android平台流行的混淆工具如ProGuard摸清当下针对Android应用程序的主流混淆方式的特点;通过利用Android应用程序反编译得到的中间代码中不能被混淆的类级别描述信息来预先为每个应用程序类提取出库中的潜在匹配类集合,以加快后续核心的相似度比较过程,提高检测效率;通过设计一个新的函数相似度比较方法减小无效代码插入与控制流随机化混淆对库检测中函数相似度比较的影响,保证在各种混淆情况下依然能够实现应用程序类函数与库类函数的真实匹配,同时尽可能的减少误匹配。
[0010]根据上述思路,本专利技术的实现方案包括如下:
[0011]为实现上述目的,本专利技术的具体步骤如下:
[0012]1.一种基于多粒度匹配的Android第三方功能库检测方法,其特征在于,包括:
[0013](1)分别输入待检测的Android应用程序文件和待检测的库文件,通过反编译分别提取Android应用程序静态信息α和库文件静态信息β;
[0014](2)根据提取的两个静态信息α和β分别为应用程序中的每个类与整个库构造过滤器,并将应用程序类过滤器与库过滤器进行匹配,以预先为每个应用程序类提取出库中的潜在匹配类集合;
[0015](3)将应用程序中的类与其潜在匹配库类集合中的每个类进行粗粒度匹配,得到应用程序类与库类多对多成功匹配结果;
[0016](4)将粗粒度成功匹配的应用程序类与库类进行细粒度匹配,得到应用程序类与库类的一对一成功匹配结果;
[0017](5)依据一对一成功匹配的库类信息确定应用程序中包含的第三方库信息:
[0018](5a)定义阈值θ1,从库文件静态信息β中获取库中每个类的操作码数量与库的总操作码数量,计算所有一对一成功匹配的库类中的操作码数量之和与库的总操作码数量比值θ2;
[0019](5b)将比值θ2与阈值θ1进行比较:
[0020]如果θ2≥θ1,则视为应用程序中包含第三方功能库,
[0021]如果θ2<θ1,则视为应用程序中不包含第三方功能库。
[0022]本专利技术与现有技术相比具有以下优点:
[0023]第一,本方法由于采用对应用程序类与库类先进行宽松的粗粒度匹配,再对粗粒度成功匹配结果进行了细粒度匹配,不仅降低粗粒度匹配可能造成的误匹配,而且能够抵抗应用程序中无效代码插入与控制流随机化的混淆,在检测第三方功能库上比现有技术具有更高的精确率、召回率和F1值。
[0024]第二,本方法由于引入了过滤器匹配,预先为每一个待匹配的应用程序类找出了库中所有的潜在匹配类集合,降低了后续应用程序类与库类成对比较的复杂性,比现有技术具有更高的检测效率。
附图说明
[0025]图1是本专利技术的实现流程图;
[002本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于多粒度匹配的Android第三方功能库检测方法,其特征在于,包括:(1)分别输入待检测的Android应用程序文件和待检测的库文件,通过反编译分别提取Android应用程序静态信息α和库文件静态信息β;(2)根据提取的两个静态信息α和β分别为应用程序中的每个类与整个库构造过滤器,并将应用程序类过滤器与库过滤器进行匹配,以预先为每个应用程序类提取出库中的潜在匹配类集合;(3)将应用程序中的类与其潜在匹配库类集合中的每个类进行粗粒度匹配,得到应用程序类与库类多对多成功匹配结果;(4)将粗粒度成功匹配的应用程序类与库类进行细粒度匹配,得到应用程序类与库类的一对一成功匹配结果;(5)依据一对一成功匹配的库类信息确定应用程序中包含的第三方库信息:(5a)定义阈值θ1,从库文件静态信息β中获取库中每个类的操作码数量与库的总操作码数量,计算所有一对一成功匹配的库类中的操作码数量之和与库的总操作码数量比值θ2;(5b)将比值θ2与阈值θ1进行比较:如果θ2≥θ1,则视为应用程序中包含第三方功能库,如果θ2<θ1,则视为应用程序中不包含第三方功能库。2.根据权利要求1所述的方法,其特征在于,(1)中通过反编译分别提取Android应用程序静态信息α和库文件静态信息β,实现如下:(1a)使用Android逆向工具AndroGuard反编译输入的应用程序,从反编译得到的中间代码数据中,提取出类的描述信息、字段描述信息、函数描述信息、函数内的操作码信息和函数内的调用信息,作为Android应用程序静态信息α;(1b)使用Android逆向工具dex2jar将输入的jar文件先转换为dex文件,再使用Android逆向工具AndroGuard反编译dex文件,从反编译得到的中间代码数据中,提取出类的描述信息、字段描述信息、函数描述信息、函数内的操作码信息和函数内的调用信息,作为库文件静态信息β。3.根据权利要求1所述的方法,其特征在于,(2)中根据提取的两个静态信息α和β分别构造应用程序中的每个类与整个库的过滤器,并对这两种过滤器进行匹配,实现如下:(2a)将静态信息α中记录的应用程序类中的各项特征分别用整数0或1表示,其中0表示类不具有该特征,1表示类具有该特征,针对应用程序中的每个类,按固定特征顺序组合其中的所有0和1作为该类的过滤器;(2b)将静态信息β中记录的各个库类中具有相同特征的库类名称放入同一个集合中,按固定特征顺序组合所有的集合作为库的过滤器;(2c)针对应用程序中的每一个类,先获取其过滤器中所有数字为1的特征,再对库过滤器中这些特征位的集合求交集,将...

【专利技术属性】
技术研发人员:孙聪伍亚飞王培丞史鉴马建峰
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1