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

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

缺陷编号:wooyun-2012-08222

漏洞标题:小米MIUI漏洞可以导致大量系统、软件和用户数据泄露

相关厂商:小米科技

漏洞作者: Claud

提交时间:2012-06-12 17:18

修复时间:2012-07-27 17:18

公开时间:2012-07-27 17:18

漏洞类型:用户敏感数据泄漏

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2012-06-12: 细节已通知厂商并且等待厂商处理中
2012-06-12: 厂商已经确认,细节仅向厂商公开
2012-06-15: 细节向第三方安全合作伙伴开放
2012-08-06: 细节向核心白帽子及相关领域专家公开
2012-08-16: 细节向普通白帽子公开
2012-08-26: 细节向实习白帽子公开
2012-07-27: 细节向公众公开

简要描述:

该漏洞的成功利用不需要任何条件。
通过该漏洞,任何应用软件可以获取下列信息:
- 硬件数据,包括:系统版本、系统编译信息、内存和CPU信息、电池信息、IMEI、基带版本、设备生产序号等
- 当前状态数据,包括:当前进程基本信息、所有进程的trace结果、分区挂载信息、路由表和ARP缓存表、运营商、当前系统服务状态、系统维护的Content Provider和Broadcast数据结构和权限管理信息、各软件运行时间
- 日志数据,包括:系统日志、系统事件日志、内核事件日志、内核消息、
- 软件数据,包括:已安装软件的包名、版本、签名证书、使用权限、安装时间、上次使用时间
- 用户敏感数据,包括:已连接的WiFi网络(MAC地址、SSID、类型、IP、DNS、网关、DHCP)、周围可用WiFi网络的SSID/BSSID和类型等;、Broadcast处理的历史记录(可以对用户行为做统计)、当前地理位置、历史地理位置、用户当前账户的用户名、用户数据同步账户的用户名和时间、软件使用情况统计数据
(借地方说句话:希望小米能给我一些测试机,昨晚对其他几个问题的测试已经把我自用手机的系统和硬件搞坏几次了)

详细说明:

当前的MIUI系统存在两个问题:
1. 以普通shell权限可以运行/system/bin/bugreport程序,该程序用于搜集系统各类信息并输出
2. 安装了一个软件/system/app/Cit.apk,原用于出厂硬件测试用,该软件中,com.miui.cit.CitBroadcastReceiver组件存在permission re-delegation类型漏洞,通过利用该漏洞,可导致任何软件通过特定参数远程触发该接收器,触发该软件自动调用bugreport,并将结果保存在SD卡的特定目录/sdcard/MIUI/debug_log/下,如前所述,SD卡的文件可以被任意软件读写
上述两个问题中的任何一个都可以导致对本漏洞的利用。任何应用软件通过解析bugreport的输出结果,得到上述信息。

漏洞证明:

三种利用方法:
1. adb shell进去,不提权,直接bugreport > /sdcard/dump.txt即可,如图所示:


2. 对应用软件,在源码中用Runtime.getRuntime().exec()函数执行bug report即可。获得输出结果有两种方法,一是上面所示的重定向,二是对返回的Process对象调用getOutputStream()方法。不具体演示了,我在小米的代码里有看到使用。
3. 对CitBroadcastReceiver的permission re-delegation攻击,代码片段如下:
Intent intent = new Intent();
intent.setAction("android.provider.Telephony.SECRET_CODE");
intent.setData(Uri.parse("android_secret_code://284"));
sendBroadcast(intent);
然后稍等十秒即可从SD卡的/sdcard/MIUI/debug_log/目录读到类似于bugreport-<date>-<time>.log的文件
可以读取到的部分数据如下:
IMEI


已安装软件信息


已安装软件的签名


用户账户


正在使用的和周边的WiFi网络信息


地理位置信息和历史记录

修复方案:

建议:
1. 将bugreport的执行权限调为root
2. 删掉Cit.apk软件,或为其CitBroadcastReceiver接收器的调用加入静态或者动态的自定义权限检查代码
3. 考虑对bugreport输出结果进行加密,既然这个东西只有小米的工程师看,可以在设备上部署同一个公钥,私钥只有小米官方掌握就可以了
再次建议给我发测试机,已经遇到一些问题让我的手机无法正常工作了。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:10

确认时间:2012-06-12 19:42

厂商回复:

多谢上报,确认中

最新状态:

暂无


漏洞评价:

评论

  1. 2012-06-12 17:35 | youstar ( 实习白帽子 | Rank:34 漏洞数:8 | 我们人啊~)

    建议开启送手机模式~

  2. 2012-06-12 18:52 | horseluke ( 普通白帽子 | Rank:116 漏洞数:18 | Realize the dream in earnest.)

    膜拜大神

  3. 2012-06-12 19:12 | 水滴 ( 普通白帽子 | Rank:146 漏洞数:24 )

    mk

  4. 2012-06-12 19:41 | 小一 ( 实习白帽子 | Rank:32 漏洞数:13 )

    屌丝表示用不起小米这种高端手机。。。

  5. 2012-06-27 08:15 | yangff ( 路人 | Rank:1 漏洞数:1 | 介绍写什么呢?)

    @小一 MIUI 不一定要小米

  6. 2012-07-03 14:18 | horseluke ( 普通白帽子 | Rank:116 漏洞数:18 | Realize the dream in earnest.)

    @Claud @xsser ,模拟器上也存在这问题,疑似是android官方rom就已经有的东西。单凭小米可能解决不了,建议向google反馈?

  7. 2012-07-13 17:27 | Vty ( 普通白帽子 | Rank:199 漏洞数:37 )

    送手机啊,终端安全攻城尸就是好啊

  8. 2012-07-15 19:46 | Cp0204 ( 实习白帽子 | Rank:37 漏洞数:4 | 著名艺术家)

    @youstar 手机不够送的

  9. 2012-07-31 16:51 | Concorde ( 路人 | Rank:0 漏洞数:1 | 不是所有飞机都是可以被人打下来的)

    亲爱的乌云,不要再抹黑小米支持360了好吗?这是Android都有的问题,在SDK里就有的这个问题,请你楼主认真的分析一下360特供机,难道只有小米存在这个问题!我已经做好了被删号的准备!

  10. 2012-07-31 20:56 | Cp0204 ( 实习白帽子 | Rank:37 漏洞数:4 | 著名艺术家)

    @Concorde 别的不说我就说一句。360备份到sd卡的文件是有加密的,miui备份的是的是明文储存。

  11. 2012-07-31 21:12 | 水滴 ( 普通白帽子 | Rank:146 漏洞数:24 )

    @Cp0204 还有:无需权限任何app均可随意读取

  12. 2012-07-31 22:24 | Concorde ( 路人 | Rank:0 漏洞数:1 | 不是所有飞机都是可以被人打下来的)

    @Cp0204 那么也是硬件检测模块的权限分配不安全,我实验了一下,因为我本人是很喜欢小米的,而且360最近也总是在抹黑小米,通过4.7.27这个固件版本的话,是不能用上述方法的,而且加上WooYun和360微博上的夸大问题严重性对这篇文章严重反感,以为是360故意的,I am So Sorry,Cit.apk还是不建议小米手机用户删除的,因为这是MIUI的特色,用户可以在家里测试自己的硬件是不是有问题(据我所知Cit.apk只能在小米上使用,MIUI的其他ROM里有这个是失误吧,没什么用只能留下漏洞,Cit.apk其实在小米手机里是个硬件检测炒年糕许可以减轻小米客服测试硬件不方便和遗漏测试内容的问题,高级用户也可以进行自行检测和调节重力感应模块等等,大大提高了客服的效率和一个系统性解决问题的方案,但是这个程序在小米手机里也是没有Root的也就是说可以使用的)再次抱歉

  13. 2012-07-31 22:26 | Concorde ( 路人 | Rank:0 漏洞数:1 | 不是所有飞机都是可以被人打下来的)

    @Concorde 那个文件也应该是Cit的输出文件,希望小米改进一下有些系统权限遗漏分配的问题吧,这个程序需要最高权限是必须的

  14. 2012-08-02 16:37 | Claud ( 普通白帽子 | Rank:161 漏洞数:18 | secmobi.com)

    @Concorde 我的看法是,Cit.apk遗留是策略问题,而Cit.apk使用的本地可执行文件权限不当是安全问题。关于存在这个漏洞的MIUI版本,当时没有说明清楚,是我的错。

  15. 2012-08-02 21:18 | Concorde ( 路人 | Rank:0 漏洞数:1 | 不是所有飞机都是可以被人打下来的)

    @Claud 其实我更在意的不是这个漏洞的问题,而是行政问题,360利用这个漏洞,把矛头指向小米科技,明显表示是小米科技故意的,而且乌云的官方微博的矛头也指向小米科技,而且这几天乌云还说360有漏洞,但是及时修正了,明显是打广告给360,我不知道他们想干什么,但是这个让人实在是反感到极点,而且这件事让我对乌云太失望了

  16. 2012-08-02 21:50 | Claud ( 普通白帽子 | Rank:161 漏洞数:18 | secmobi.com)

    @Concorde 我认为乌云一直是中立的。小米的技术人员是承认漏洞的,但公关人员在混淆问题,这是不负责任的。乌云的那句话很到位。总之,还是希望安全的环境能好一些。

  17. 2012-08-05 13:31 | horseluke ( 普通白帽子 | Rank:116 漏洞数:18 | Realize the dream in earnest.)

    @Claud @Concorde ,但是,这个问题的根本,不是在Cit.apk吧?而是bugreport的明文输出。而bugreport,就是android核心的东西,哪个搞rom的敢动这个东西?所以我才说这个bug应该要报给google而不是小米。

  18. 2012-08-05 15:01 | Claud ( 普通白帽子 | Rank:161 漏洞数:18 | secmobi.com)

    @horseluke 嗯。我去报个CVE。。。

  19. 2012-08-05 22:10 | Claud ( 普通白帽子 | Rank:161 漏洞数:18 | secmobi.com)

    @Concorde @horseluke 重新测试和分析了一下。我犯了一个错,shell可以调用bugreport,但普通app调用会失败。这样的话,在一般的Android下软件无法通过bugreport获得敏感信息。不过这不影响这个漏洞的存在。但在MIUI中,Cit.apk的receiver暴露了以root权限执行bugreport的代码,可以导致第三方应用软件触发bugreport并获得输出结果。进一步的技术分析可以看这里:http://blog.claudxiao.net/2012/08/miui-cit-vuln/对我的不严谨表示道歉。

  20. 2012-08-09 10:24 | horseluke ( 普通白帽子 | Rank:116 漏洞数:18 | Realize the dream in earnest.)

    @Claud 赞啊~我也学习了,看来不学移动编程,还是不能真正理解问题的根本......

  21. 2012-11-12 14:10 | 纷纭 ( 路人 | Rank:19 漏洞数:8 | 学习者。)

    提交问题的,怎么变成口水战了,什么小米还是360.关乌云鸟事,提交给小米那小米就接着,就算不是你的问题,回复下有啥不好的?