CNZZ友盟SDK越权漏洞分析报告

浏览:
字体:
发布时间:2018-01-25 11:03:53
来源:

近年来,随着移动互联网的高速发展,智能终端设备已经走入人们生活的方方面面。在Android和iOS两大移动平台阵营中,Android系统以其开源性、易开发、丰富的硬件等优势占据了市场上约80%的份额。

Android系统中提供的应用丰富多样,且功能复杂,几乎所有的应用都采用了第三方的SDK以加速其开发周期,节约成本。第三方SDK包括支付、统计、广告、社交、推送、地图类等,其在加速产品成型时,也引入了许许多多的安全问题。下图所示内容为经360显危镜后台查询的几款常用SDK使用情况统计数据,从图中可以看出使用了该SDK开发的APP非常多。

1.png

图1

              下文以友盟消息推送SDK为例,详细介绍一下第三方SDK在缺乏产品安全审计的情况下存在的高危漏洞风险,希冀以此能督促第三方SDK厂商在产品安全性方面能投入更多的精力。

 

SDK介绍

友盟 Push SDK是友盟互联网数据服务SDK其中用来做消息推送的模块之一,基于【友盟+】全域数据建立与用户精准直接沟通的渠道,将APP的内容主动推送给终端用户,让用户实时实地的获取相关信息,有效提升用户活跃和忠诚度。由于其定位精准、集成快速等优点,目前有多个知名APP在使用U-PUSH服务。

 

技术分析

友盟的消息推送SDK中有一导出Service组件存在漏洞,可被越权调用并利用该组件访问任意service组件,甚至未导出的亦可。随后,利用该漏洞调用友盟其他未导出的组件,可进一步越权调用任意导出和未导出的Activity,进而扩大了该漏洞的攻击面,为攻击者提供了更大范围的攻击可能性。

下文详述了友盟的消息推送SDK中可越权调用所有非导出组件的漏洞技术原理,并据此详述了如何实现非导出组件恶意调用、恶意消息通知、远程代码执行等攻击行为。

 

漏洞起因

友盟最新的消息推送SDK中集成的说明文档中的demo里,AndroidManifest文件中导出了一个IntentService——UmengIntentService,据推测这个服务是为了使用了PUSH SDK的APP之间相互唤醒使用的,详情如下图所示。

 

友盟SDK越权漏洞分析报告

 

这个IntentService有个实现的抽象方法如下:

 

友盟SDK越权漏洞分析报告

 

我们能看到外部接收了intent携带的body数据(JSON格式),交给UMessage构造后得到v3,如果display_type 为“pullapp”的话,可通过设置pulled_service和pulled_package参数能拉起任意未运行的servcie。其中Umessage函数的结构如下:

 

友盟SDK越权漏洞分析报告

 

 

漏洞利用

初步利用——访问未导出service组件

通过构造如下POC,可访问APP内所有的service组件,甚至未导出的servcie。而且SDK提供了一个“贴心”的功能,接收额外的参数,封装到新的Intent后发送给拉起的service。

 

友盟SDK越权漏洞分析报告

 

 

友盟SDK越权漏洞分析报告

 

*限制一点的只能putExtra String类型的数据,但是也足够利用了。

PoC:

 

友盟SDK越权漏洞分析报告

 

进阶利用——访问未导出Activity

SDK有几个强大功能:接收推送的消息,下载图片或接收文本进行通知展示。点击通知后有几个可选动作,打开URL、打开指定activity、运行其他APP和一个自定义的动作。我们通过一个未导出的Service——UmengDownloadResourceService进行进一步的利用。

 

友盟SDK越权漏洞分析报告

 

打开activity的POC:

 

友盟SDK越权漏洞分析报告

 

利用实例1——通用弹出钓鱼通知

利用上面打开任意activity的POC,可以弹出任意通知,这个通知的图标,文本都是可以定制的,而且用户长按通知也会发现这个通知是漏洞APP发出的。点击通知,我们可以跳转url打开一个钓鱼页面或是钓鱼activity。

利用实例2——隔山打牛,一点资讯下载任意压缩包

通过检索平台搜索后发现,APP一点资讯是存在这个漏洞的。进一步挖掘过程中,发现APP有一个未导出的service——WebAppUpdateService,详情如下。

 

友盟SDK越权漏洞分析报告

 

 

友盟SDK越权漏洞分析报告

 

通过构造合法的参数,可以利用WebAppUpdateService组件实现下载自定义的zip文件并解压到当前应用沙箱目录中,EXP代码如下:

 

友盟SDK越权漏洞分析报告

 

运行成功后,下载zip文件夹并解压到相关目录,这个目录里存的是APP所使用的html页面,而整个zip里文件都是我们能够修改和替换。现在做钓鱼页面,加各种js代码都没问题了。

 

友盟SDK越权漏洞分析报告

 

 

友盟SDK越权漏洞分析报告

 

随后,通过对该APP代码的深度挖掘分析,我们发现该应用提供了动态加载插件的功能,且在对加载的插件解压时未做过滤导致存在目录穿越漏洞。结合该漏洞,我们可以在加载插件过程中覆盖该APP的lib文件,注入自己的恶意代码,进而造成远程代码执行。不言而喻,远程代码执行对用户的危害是非常严重的,可远程控制用户终端设备,远程窃取用户隐私数据,甚至其他任意的恶意行为。下图所示为结合上述漏洞实现的对用户终端设备远程获取隐私敏感数据的攻击截图。

 

友盟SDK越权漏洞分析报告

 

 

影响范围

通过分析发现,有漏洞的组件UmengIntentService是在新版3.1.X版本中引入的。我们据此确定以下的特征值,并在360显危镜后台数据库中查询受该漏洞影响的APP:组件service中包含UmengIntentService并且在apk中包含字符串pullapp。

 

友盟SDK越权漏洞分析报告

 

在360显危镜后台数据库中,按该漏洞的特征值查询后发现约3万多的APP受此漏洞的影响,其中不乏大公司的产品主流产品,对用户影响巨大。

 

修复建议

如果组件导出是非必要的,将漏洞组件设置为不导出;

如果组件是必须导出的,在Service加上android:protectLevel增加权限校验,至少为signature级别。

官方已有修复版本更新,请及时更新到最新版本。

>更多相关文章
24小时热门资讯
24小时回复排行
资讯 | QQ | 安全 | 编程 | 数据库 | 系统 | 网络 | 考试 | 站长 | 关于东联 | 安全雇佣 | 搞笑视频大全 | 微信学院 | 视频课程 |
关于我们 | 联系我们 | 广告服务 | 免责申明 | 作品发布 | 网站地图 | 官方微博 | 技术培训
Copyright © 2007 - 2024 Vm888.Com. All Rights Reserved
粤公网安备 44060402001498号 粤ICP备19097316号 请遵循相关法律法规
');})();