Apache Cordova app框架中有漏洞 一键可修改安卓app行为(含POC)(附演示视频)

技术 作者:站内编辑 2015-05-30 03:41:44
概述: 趋势科技表示在Apache Cordova app框架中发现一个漏洞,可允许攻击者仅通过点击一个URL就可修改app行为。修改造成的后果包括为app用户带来麻烦、导致app完全崩溃等。 这个漏洞编号为CVE-2015-1835,它影响Apache Cordova 直到4.0.1的版本。Apache已发布安全公告证实该漏洞的存在。这就意味着多数基于Cordova的app都易于被利用,而这些app占据谷歌应用商店所有app的5.6%。 这个漏洞是在Cordova功能中发现的,该功能允许二次配置变量(同时作为参数)从base activity中的intent bundle中设置。这个功能是Apache在2010年10月份与Cordova安装更新0.9.3一起发布的代码更新的一部分。 成功利用的前提条件 成功利用这个漏洞只需两个条件: 1.      至少有一个从Cordova base activity延伸而来的app组件:CordovaActivity 或者配置Cordova框架,这样Config.java并没有被恰当保护,也就是说可从app之外访问。 2.      至少其中一个Cordova支持的参数(除tLogLevel及ErrorUrl外)并未在配置文件config.xml中定义。 如何实施攻击 为了了解漏洞是如何被利用的,需要先了解app中的参数是如何设置的: 二次配置变量也称参数是为开发人员配置app而准备的变量集。这些变量是 内置Cordova App特征的来源,而且应当由app开发人员控制。在运行初始化过程中对这些参数的任何篡改都会扰乱app的正常行为。 安卓(直到4.0.1版本)上的Apache Cordova框架支持一下参数: l  Fullscreen l  DisallowOverscroll l  BackgroundColor l  Orientation l  KeepRunning l  LoadUrlTimeoutValue l  SplashScreen l  SplashScreenDelay l  InAppBrowserStorageEnabled l  LoadingDialog l  LoadingPageDialog l  ErrorUrl l  ShowTitle l  LogLevel l  SetFullscreen l  AndroidLaunchMode l  DefaultVolumeStream 这些参数可在Cordova框架中的config.xml中明确设置,或者不用定义而与默认值隐秘连接。有必要了解的是,许多开发人员都会选择后一种方式,原因是对于app来讲并非所有的这些参数都是必要的。一旦有参数没有在config.xml中明确配置,Cordova框架将会从基本活动中的intent bundle中予以设置。 t01eeb08a6563340fdd

图表1. App加载了intent bundle并且在CordovaActivity初始化时将其复制到参数

t018c1630e9fcf65c67

图表2:当config.xml中缺失参数值时,app将参数从bundle中加载

App开发人员通常会被引导在app中扩展CordovaActivity以此让这个混合框架得以运行。 t011458ea737d24d8a5

图表3. CordovaActivity中启动网页的子类内容

遗憾的是,在本例中,正是这个平常可见的开发人员指南让app易受攻击。活动被延伸意味着可从app之外进行访问,因此攻击者能够将恶意intent bundle注入活动以篡改app的内置特征,或从远程web服务器或从本地被攻陷的app入手。 趋势科技发现所有除LogLevel及ErrorUrl之外的参数都可被利用。Cordova框架以一种特殊方式处理这两个参数从而让其免受漏洞攻击之苦。 我们认为这个漏洞非常容易被利用,因为成功实施攻击所需条件是平常开发人员的做法。多数基于Cordova的app确实扩展了“CordovaActivity”并且很少有app会在配置中定义所有的参数。此外,所有基于Cordova的app都是从Cordova Command-Line Interface(CLI)()自动满足先前提到的前提条件,因此所有的app都容易被攻击。 POC 趋势科技制作了一个常见的远程恶意注入攻击演示,它利用易受攻击安卓设备即华为T950E智能手机中intent URL scheme先前披露的一个漏洞。 以下是远程服务器中的HTML代码: 2 只需通过访问设备库存浏览器页面,本地实际的Cordova app就可被注入恶意对话并附有推送的题目及短信。具体可见视频演示。 此外也可修改app的其他参数并且为以下案例创建示例视频 l  利用SplashScreen及SpalshScreenDelay在带有“res/drawable”下任何资源的Cordova app中注入启动画面,并随意控制显示时间。 l  利用BackgroundColor篡改Cordova app的背景颜色。 l  利用SefFullScreen篡改Cordova app的显示设置。 l  利用DefaultVolumeStream篡改音量按钮控制器的基本功能(例如通过媒体上的控制默认替代手机通话上的控制) 此外,趋势科技表示还可能通过将特殊数据注入intent bundle的方式远程致 使Cordova app崩溃。 adb shell am start -n com.trendmicro.justademo/.MainActivity --es backgroundcolor ffffff 这次攻击将引发Cordova框架出现例外并且强制app关闭。 图表4. 漏洞利用导致app崩溃 t013e99fa3327385647 可能的影响 到目前为止,这个漏洞可能会为Cordova app及其用户带来如下影响: 1.      篡改app参数 2.      注入弹出窗口及文本 3.      注入启动画面 4.      修改基本功能 5.      导致app崩溃 虽然这个漏洞影响的是app,但也会对数千个Apache Cordova第三方插件带 来巨大风险,尤其是如果它们的功能严重依赖参数时。 解决方案 趋势科技表示将这个漏洞私下披露给Apache,该公司已发布相关官方公告。 趋势科技建议安卓app开发人员将Cordova框架升级到最新版本(4.0.2)并进行重新构建发布新版本。这会组织攻击者利用该漏洞修改app行为。

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接