WebResourceManipulation

《An Empirical Study of Web Resource Manipulation in Real-world Mobile Applications》
来源:USENIX 2018 (CCF A)
关键词:Android, Static Analysis, Web Resource Manipulation, Malicious intent
摘要:由于Android和IOS都允许应用程序注入JavaScript到WEB页面中,且web资源缺少同源访问控制,因此会导致XPM攻击(cross-principal manipulation)。此文章针对XPM攻击进行了研究,一方面定义并在现实app中研究了该威胁,另一方面设计了XPM的自动检测方案,其中在检测中引入了搜索引擎和自然语言处理部分。但此文章的重点不在于检测,而在于大规模的研究,最终提出了14个Finding。

1.针对问题:

静态检测Android与IOS中的WebView存在的attack——XPM (cross-principal manipulation)
研究点:现实中的app到底有多少存在这个attack

XPM (cross-principal manipulation):Android和iOS都有evaluateJavascript的API,允许host app注入JavaScript代码到Web页面中并得到结果。但是,这些web资源控制缺少同源访问控制,因此导致WebView的app的代码。例如,如果一个Host app通过webview加载“www.facebook.com”,那么它就可以使用evaluateJavascript API来在facebook页面中运行Javascript,从而得到facebook的数据。

XPM如图所示,manipulating code(控制代码)通过Web Resource manipulate point(web资源控制点,即相关API)来控制Manipulated Web Resource。
title

Treat Model:如图所示是两个app之间通过web资源窃取cookie。App A是Facebook软件, App B是一个嵌入了facebook SDK登录功能的软件三个class, C1, C2和C3都会通过webview访问www.facebook.com,前两个都属于正常的,第三个则是app B恶意收集facebook的cookie信息
title

两种攻击者:一是host app本身,二是host app使用的第三方库
Web Resource Manipulation APIs:作者列举了四个方面的13个API(包括Android和IOS),如表所示。
title

2.Contribution

(1)将在Web资源控制中存在的威胁定义为XPM,并大规模地研究这种威胁在现实app中的存在
(2)设计了一个自动工具来检测Android中的XPM
(3)对80694个app进行了研究,说明XPM在现实app(Android和IOS)中的严重性

3.Chanllenge

(1)一个app中存在多个principal
(2)字符串的混淆与缩写
main ideas:
(1)使用代码特征来识别AP
(2)使用搜索引擎来对比AP与WP,并加入自然语言处理部分

4.检测方法——XPMChecker

(1)静态分析模块:使用flowdroid和soot构建ICFG,并寻找Web Resource Manipulation API及相关的context等信息
包含URL的提取(前向数据流分析)、string的分析(后向切片)、代码块的signature
(2)Principal识别模块:WP与AP的识别(判断是Host app代码还是Lib代码,寻找其是否出现在多个Lib中)
(3)XPMClassifier模块:根据相似性计算(图3所示公式)来判断AP与WP <AP,WP> 是否属于同一来源,判断标准是某个阈值ϴ。步骤如下:
A. 去除<AP,WP>中的噪声词汇,如后缀或者停止词汇(get.appdog.com中的com),得到<AP’,WP’>
B. 将AP’和WP’作为关键字在Google搜索引擎上搜索,并得到结果Rap和Rwp
C. 使用词袋模型进行结果分段(忽略语法和词序),并转换成向量A和W
D. 最后根据公式计算相似性,以阈值ϴ作为界限来判断是否存在XPM。相似性的计算公式如下所示:
title

5.Evaluation

由于此文章重点在于分析现实app中存在的XPM,而不是检测方法,因此评估是以findings为主体。
(1)XPMChecker的评估
.静态分析模块:人工选择50个app并标注了36个web资源控制点,XPMChecker可自动识别其中的33个,另外3个是因为字符串加密或调用链太深
. Principal识别和分类模块:人工选择1000个app,并通过误报率和漏报率的交点得到阈值ϴ,结果如表4所示。
title

(2) XPM行为的普遍性
Finding 1:49.2%的控制点都存在跨域(principal)
Finding 2:16.9%的app都有web控制资源,4.8%存在XPM
Finding 3:63.6%的XPM点来源于库
Finding 4:多于70%的XPM点都是控制流行web服务的
Finding 5:web contents和web addresses是最普遍的

(3)XPM的Breakdown
Finding 6:大多数XPM行为对用户体验都是必要的
Finding 7:一些XPM行为部署认证模块的方式不安全
Finding 8:第一次确定了带有恶意intent的web资源控制行为,包含模仿认证模块、窃取用户账户及密码、窃取滥用cookie
Finding 9:恶意XPM行为在Android和IOS上都存在
Finding 10:大多数恶意XPM行为旨在攻击认证模块
Finding 11:恶意XPM行为已经影响了大量用户

缓解方案
完全的webview隔离是不适用于大多数app的,但是可以采用细粒度的访问控制策略。

6.Limitation

(1)XPMChecker并不能防止逃逸行为,如可以通过使用Java反射和混淆字符串来逃避检测
(2)静态分析工具固有的缺陷