Reliable Third-Party Library Detection in Android and Its Security Applications

Abstract & Introduction

本文主要关注的是第三方库的安全问题。作者提出了一个检测第三方库的方法,该方法的特点主要是可以应对一般的混淆,并且能够给出第三方库的版本号。作者在此基础上进行了一些列分析,指出了第三方库的使用存在许多问题。

Fig

Approach

实现第三方库检测的方法主要分为两步,首先去第三方库提供商的网站上下载所有版本的库文件,分别提取每一个文件的特征,建立一个库文件特征的数据库。

Fig

  • 提取的特征为一个树状结构,包括每个层级的hash值,最小单位为method hash。
  • 对于Bytecode会进行标准化,去除编译相关的元素
  • 在提取method hash的时候,需要做一些处理,为了应对混淆,method需要做模糊化处理

Fig

有了库文件特征,就可以进行相似度匹配,匹配时每个相似度超过50%的标准库作为候选结果,然后从候选结果中找出相似度最高的作为匹配结果。

Implementation & Evaluation

  • 作者一共获得了164个第三方库,共计2065个版本,分析的app为2015到2016年间,google play上下载的4666个app共计10W个版本。
  • 作者说59.3%第三方库都能指出版本,其他的由于采样模糊的问题,无法精确。
  • 统计的第三方库的流行程度如下:

Fig

  • 第三方库的更新情况:70.40%的第三方库都是旧版本,APP开发者更新第三方库的平均时长为324天,是第三方库作者的两倍,造成这种现象的原因主要是怕引起兼容性问题。

Fig

  • 漏洞版本的使用情况:作者分析了两个版本的第三方库漏洞,分别是facebook账号劫持漏洞和dropbox数据泄露漏洞。

Fig

Fig

  • 密码学误用的情况: 挑选了39个第三方库一共315个样本,使用之前的论文提到的检查密码学误用的方法进行检查,最后进行人工分析。

Fig

 

转载自:https://loccs.sjtu.edu.cn/gossip/blog/2016/09/18/2016-09-18/    原文作者:GoSSIP