Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

UIPicker: User-Input Privacy Identification in Mobile Applications

论文下载:https://www.usenix.org/system/files/conference/usenixsecurity15/sec15-paper-nan.pdf

摘要

本文提出一种鉴别用户隐私信息的新的思路:通过机器学习、污点分析等方式,分析安卓应用的UI界面和相应的程序代码,更加精确的分析出用户敏感信息的输入。同时,本文还根据静态分析的结果,提出了一个动态监控的机制,当这些输入不安全的离开设备时,会向用户提出警告。

分析框架

Fig

Pre-Processing

利用apktool提取app的资源文件,主要包括string和layout。

  1. 对一些通过下划线、空格方式连接或者有多个单词连接的有意义的字符串的处理。比如:phone number、confirmpasswordfield。
  2. 去掉类似the、is、have等无帮助的词汇。
  3. 更一些由于时态等变形的词汇还原。

Privacy-related Texts Analysis

Fig

  • 首先给定一些初始值,框架会结合资源文件,通过一些简单的逻辑关系(save password 或者 your username)将所有的layout文件分成两类。
  • 然后对于那些出现在positive samples中的词汇做Chi-Square test并且排序。

UIP Data Element Identification

  • 特征的选取:通过上述过程推测的隐私相关的文本均作为相关的特征。
  • 训练数据:将在positive samples中出现的所有拥有和隐私相关属性的元素均标记。比如:textEmailAddress、textPersonName。
  • 分类器:支持向量机(SVM)。

Behavior Based Result Filtering

通过对程序代码的检查,查看应用是否接受了用户的输入,过滤上述过程中一些不相干元素。

Fig

利用flowdroid。source:findViewById sink:getText()

Runtime Security Enhancement with UIPicker

  • 对于sink只考虑两种情况:1、直接通过http发送 2、不安全的ssl传输
  • 利用MalloDroid分析出app是否有上述两种不安全的sink
  • 根据静态分析得出的source,利用TaintDroid实时监控。

实验

  • 数据集:17,425 apps
  • Performance:平均 6.27 seconds per app.
  • Effectiveness:在17,425 apps中发现6,179(35.46%)包含隐私数据输入。
  • Precision:随机挑选了200个app手工检测,发现UIPicker检测的975个用户隐私输入元素有67 false positives 和 107 false negatives.