Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

Short Text, Large Effect: Measuring the Impact of User Reviews on Android App Security & Privacy

作者:Duc Cuong Nguyen, Erik Derr, Michael Backes, Sven Bugiel

单位:CISPA Helmholtz Center等

出处:IEEE Symposium on Security and Privacy (S&P) 2019

原文:https://publications.cispa.saarland/2815/1/main_sp.pdf


文章概述

应用市场提供的App评论功能,为开发者与用户的沟通建立起了通道,用户可以及时地向开发者提出反馈。但目前还不清楚用户在多大程度上会使用评论来指出他们对App相关的安全和隐私问题的担心、用户具体担心哪些方面、以及开发者是如何对此类与安全和隐私相关的评论做出反应。在这篇文章中,作者对这些问题进行了研究(第一次),使用NLP技术对Google Play上2583个App的450万条评论进行处理,识别出其中5527个与安全和隐私相关的评论(security- and privacy-related reviews, SPR)。对于与SPR相关的每一App版本,作者使用静态分析的方式提取出评论中提到的App的权限保护功能,并发现60.77%的SPR都可以对应到App中与安全和隐私相关的更新(security- and privacy-related app updates, SPU)。作者通过进一步的分析表明了SPR是预测App隐私相关更新的重要因素,用户评论能够促进App隐私保护的提升,同时大概半数的App隐私相关的更新都与三方库代码有关。

#### 相关工作 + NLP(Natural Language Processing):主要集中在挖掘App描述(开发者提供)和App实际行为是否匹配上,而本文研究的对象是用户的评论,常常会包含错别字、不遵循语法结构等。

  • App评论:已有的工作利用NLP、统计模型等实现分析评论的主题、对评论的分类等,但都没有聚焦到App评论和App安全演变(evolution)之间的联系。

  • App安全演变:作者的讨论集中在安卓权限控制、三方库等方面。

实验方法

1. App和评论爬取
  • App选择:基于Google Play中少量App占据绝大部分下载量这一发现,作者研究的App仅限于Google Play上最流行的App,即下载量超过5000万的2583个App。

  • 爬取内容:2583个App的所有历史版本及其对应英文评论的内容、打分,最终爬取了4547493条评论。

  • App历史版本:作者利用Google Play的隐藏(undocumented)API来查询、下载App的历史版本,并利用市场分析公司如appannie、apk4fun、appbrain等的数据获取App历史版本的发布日期。最终作者搜集了62838个不同的App版本(平均每个App对应24.33个版本),其中51225(81.52%)个App版本都能获取到对应的App上传时间。对于2583个App,作者得到了957个App的完整历史版本。剩下的App中因为发布时间过早(市场分析公司尚未开始收集数据)等原因,无法获取完整的历史。

2. 评论分类

对评论进行分类,比较naive的方法是用关键词匹配,但用这种方式存在一些缺陷,如很难找到有代表性的关键词列表、缺乏上下文联系等。因此,作者使用了机器学习的方法帮助对评论进行分类。 + 训练集:基于安卓权限相关内容获取了下表所示的关键词,利用这些关键词筛选出185万个评论,随后随机挑选出4000个评论并人工标记。除去一些含义不明的评论,训练集最终包含3891个评论(SPR:586,non-SPR:3305)。

  • 特征提取:数据预处理(移除冠词、词干提取),并使用5-grams以减少错别字的影响,如”Why does this app need access to my location”转变为”why d, hy do, y doe, does, oes t, es th, […] , locat, ocati, catio, ation”

  • 模型选择:Bag of Words、SVM

  • 验证:10 Fold,平均AUC为0.93

##### 3. App静态分析 + 提取App的target SDK属性

  • 扫描App中是否调用了需要高危权限的API

  • 利用LibScout获取App使用的三方库及其版本

4. SPR与SPU关联

根据日期将SPR和相应的App版本联系起来,并在后续App版本中寻找最近的SPU,计算SRP对应版本和SPU对应版本之间的距离(一次版本更新距离加一)。 #### 实验结果 ##### 1. SPR 作者对4547493条评论进行分类,在其中识别出5527(0.12%)条SPR,归属于1269个不同的App。对于5527条SPR中的2898条,作者能够识别出4180个能够被归类进15个权限组的与权限相关的描述。剩下的2629条评论没办法直接对其进行归类。此外,作者通过App的targetSDK这一属性来判断App是否采用运行时权限,并结合相应的SPR数量得出:采用运行时权限的App收到的SPR的数量会有明显的上升。

作者对开发者回复SPR的情况也做了研究,共有673次回复。具体分类如下: ##### 2. SPU 作者通过对App的静态分析,发现SPU包含如下情况: + 从App中移除申请的权限:1608

+ 从App中移除受权限保护的API:1085

  • 从三方库中移除受权限保护的API:940 98.4%(925)的情况下整个库被移除,而仅有14个case中部分三方库的功能被移除。

作者还对SPU改动进行了溯源(通过分析评论中提到的权限涉及的API在后续版本中的使用情况),发现

  • 17%(72):仅在App中

  • 48.8%(206):仅在三方库中

  • 34.2%(144):App与三方库中都有

3. SPR与SPU关联

对于5527条SPR,4898条都是可以确定评论发布时App版本的,剩余的629(11.38%)条因为评论时间过早,无法确定其对应版本。而4898条SPR中有3359条都可以关联上后续的一个SPU,剩余的1539条在App更新中未检测到SPU。下图所示为SPR-SPU距离分布,其中76.8%的情况下,SPU发生在紧接着SPR的一次版本更新中。

SPU模型

为了更好地评估SPU和non-SPU具体受什么因素影响,作者利用logistic regression建立了回归模型

  • 数据集:只考虑在两次更新间隔存在至少一条评论的情况,最终收集到15835个数据点(12540 non-SPU和3295 SPU)

  • 模型考虑因素

    • SPR数量比例
    • 平均打分
    • 权限机制
    • App类别
    • 开发人员回复率
结果
  • 使用运行时权限的App的更新更有可能是SPU

  • SPU与App所属类别无关

  • App收到越多的SPR,越有可能发布SPU

  • 如果开发者回复评论,那么后续版本存在SPU的可能性较低

  • 如果评论打分高,那么后续版本存在SPU的可能性较低

总结

优点:研究点有创新性、图表很多、实验很丰富。

缺点:训练集样本少、实验结果处很多数据的含义不明确,没有进一步解释。