Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

Checking More and Alerting Less: Detecting Privacy Leakages via Enhanced Data-flow Analysis and Peer Voting

论文下载

摘要和简介

当下,越来越多的apk需要应用到用户的隐私数据,比如登陆的时候需要密码、发微博的时候需要用到GPS数据等等,apk如何使用这些隐私数据就成了当下比较热门的话题。现如今有很多程序可以针对这种情况分析apk在使用这些数据的时候是否偷偷的传递到其他不安全的地方,但是,这些方法只能提供一些报警的措施,不能很好的提供使用者更多的信息或者是关于隐私数据泄露的安全分析。作者分析了这些方法,发现大多数的程序要么不能提供精确的检测或者只能检测结果,而不是过滤出合法的隐私泄露。因此,作者提出了一个自动检测隐私数据泄露的程序——AAPL。AAPL通过一些静态分析技术,结合peer app vote的方式过滤出大多数的合法隐私泄露,使得结果更加准确。

AAPL分析框架

Fig

对于一个给定的app,AAPL首先根据开发者对其的描述在Google Play等市场上挑选出相似功能的app作为其peer apps。然后对原app和它的peer app进行高精度的静态隐私数据泄露的检测。当完成高精度的检测以后,AAPL将会继续通过peer app vote的方式区分出合法和不合法的隐私数据泄露。

隐私泄露分析模块

AAPL采用一般性的数据流分析的方法,为了提高精确度和区分合法和不合法的泄露问题,作者采取了三种方式:opportunistic constant evaluation,object origin inference, joint flow tracking。

当对android程序静态分析的时候,会遇到如何处理一些有条件的source/sink。比如对于getContentResolver().query这种通用的API,不能简单的就定义它为source/sink。根据这个问题,作者提出了根据参数值区分这些有条件的source/sink的opportunistic constant evaluation,和根据参数类型区分的object origin inference。而现如今的污点分析方法,当遇到数据流从程序代码中跳到本地的时候,就会停止分析。比如程序将标记污点的数据流写入文件,再读取文件内容的时候,大多数的污点分析方法就会停止。对于这个问题,作者提出了joint flow tracking的方法去解决。

隐私泄露检查模块

作者发现,大多数的隐私泄露问题都和应用的核心功能相关。同时,作者观察到如 果能在一些功能和需要检测的应用相似的app中找到特殊的数据流,能够有效的帮助区 分合法和不合法的隐私泄露。

  1. Peer Apps:对于给定需要被分析的app,首先需要找到和它核心功能相似的app作为peer apps。作者通过对比发现,利用Google Play推荐系统获取的apps效果最好。
  2. Peer Voting机制:对于一个在主app中分析得到的隐私泄露流,Votes Number代表同样能分析出了这个隐私泄露流的peer app的个数,Peers Number代表它的peer app的总个数,根据公式privacy legitimacy = Votes Number/Peers Number可以计算出这个隐私泄露流的合法性。

性能

从随机挑选的417个apps中检查到532个特殊的隐私泄露,其中有67%是合法的。

挑选了6000多个比较流行的免费应用,发现其中2777个有隐私泄露的问题。再将这2777个应用作为分析程序,计算他们的peer apps,总共有40456个应用,其中发现18100个有隐私泄露的问题。

一些缺点

不能分析由JAVA反射函数、代码的加密、动态载入代码等问题。