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

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

缺陷编号:wooyun-2012-08187

漏洞标题:小米MIUI系统造成用户大量敏感数据泄露

相关厂商:小米科技

漏洞作者: Claud

提交时间:2012-06-11 18:53

修复时间:2012-07-26 18:54

公开时间:2012-07-26 18:54

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

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

在目前所有MIUI系统中,满足漏洞条件的情况下,该漏洞导致手机中任何应用程序均能获取用户的以下敏感数据:
1. 已安装应用软件列表及版本号
2. 用户通讯录中联系人姓名、电话号码、邮箱地址等
3. 用户通话记录中电话号码、通话时间等.
4. 用户短信和彩信内容、号码、时间等
5. 用户保存在手机中的无线网络的SSID与密码
6. 用户保存在便签中的个人数据
7. 其他应用程序的本地私有数据,包括数据库文件、配置文件等
此外,攻击者可以利用此漏洞在特定条件下替换用户已安装的应用程序。

详细说明:

在MIUI中,用户通过备份程序(Backup.apk)将个人数据、应用程序和应用数据保存在本地,以便升级或刷机以后恢复。在这个应用中,存在两处策略不当:
1. 备份内容被保存在SD卡上;
2. 备份内容以明文方式保存,没有加密。
根据官方文档,Android并不对SD卡的文件读写进行进程UID的权限验证,任何应用软件可以随意读取和写入位于SD卡上的文件。详情见:
http://developer.android.com/guide/topics/data/data-storage.html#filesExternal
其中的“Caution: All applications can read and write files placed on the external storage and the user can remove them.”
因此,攻击者可以编写应用软件,读取MIUI保存在SD卡中的备份数据,而这些数据并没有被加密,造成攻击者可以直接读取。
此外,MIUI将本地已经安装的应用软件的APK文件以及软件私有数据也保存在其中,攻击者可以用相同package name和version的另一个恶意APK文件替换,而这些恶意APK文件可以是在原文件基础上重打包(re-packaging)加入了会话劫持或者数据回传的代码,并在用户恢复备份时被安装到系统中。

漏洞证明:

1. /sdcard/MIUI/backup/AllBackup/<date_time>/backup_config.db文件是sqlite数据库文件,在其中的apps表中可以直接读出已安装软件信息:


2. 用户个人信息分别保存在同目录的以下文件中:
通讯录 addressbook.store
通话记录 calllog.store
短信 sms.store
彩信 mms.store
WLAN设置 wpa_supplicant.conf
便签 note.store
其中,WLAN设置为明文直接存储,包括网络SSID、类型、密码等:


其他以.store为扩展名的文件为Google ProtoBuf序列化的二进制数据,虽然不能拿到原始的proto文件,但有两种方法可以读取其中内容:猜测格式并直接读取,逆向分析软件的备份还原代码。
直接猜测格式并读取,可以简单地拿到上述个人信息,例如通讯录中姓名(其中中文采用UTF-8编码)、号码、邮箱:


再例如短信记录(同样的,中文采用了UTF-8编码):


而另一种逆向分析代码的方法,可以考虑用smali、dex2jar/jd-gui、ded等静态逆向软件,分析/system/app/Backup.apk中的代码,其中对这些.store文件做反序列化操作的代码位于com.miui.milk.model目录下,以短信数据为例,下面是采用ded+soot反编译得到的源码,显示了对短信的类型、号码、主题、内容、时间分别如何做序列化的:


最后,该漏洞还会将本地已安装所有软件的私有数据从其私有目录拷贝至SD卡。在Android中,这些目录原来是根据各个软件的UID设置了访问权限,以保证(在没有root权限的前提下)各软件之间不能直接读取对方数据,而必须通过IPC机制进行。但移动到SD卡后,没有了这些权限检查机制,使得所有数据都被暴露出来。其中,许多应用的数据都是明文存储在其私有目录的(在Android安全模型假设下,这种做法是规范的)。例如,人人网将用户的社交信息缓存在sqlite数据库中:


而本漏洞则导致这些本来在Android保护之下的数据可以被所有应用软件直接访问。

修复方案:

考虑到备份数据的尺寸比较大,无法保存在内部存储中,建议将软件改为在本地SD卡中存储的数据一律加密,加密算法采用对称加密,密钥随机生成并保存在Backup.apk的私有目录下或回传到云端。不要采用固定密钥。
从逆向Backup.apk的情况看,MIUI的代码质量还是很高的。这里只是犯了一个基本的策略错误,即将隐私数据明文保存在了可公共访问的SD卡上,造成了攻击者可以通过本地应用程序直接读取这些数据。虽然这种攻击还没有出现,但考虑到MIUI是目前最大的几个第三方ROM之一,攻击价值还是存在的。
此外,代码质量高是指编码风格和框架设计上。从安全上,其他几种策略错误也有存在,其他几类漏洞也有。正在验证。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:10

确认时间:2012-06-11 20:22

厂商回复:

正在确认中,感谢您的上报!

最新状态:

2012-06-12:已经确认,非常感谢您的工作!


漏洞评价:

评论

  1. 2012-06-11 19:24 | px1624 ( 普通白帽子 | Rank:1036 漏洞数:175 | px1624)

    这个简要描述好长。小米的,不知道有么有送手机!

  2. 2012-06-11 19:26 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)

    @px1624 送360特供机吧

  3. 2012-06-11 21:03 | px1624 ( 普通白帽子 | Rank:1036 漏洞数:175 | px1624)

    @xsser 听说以前有人发了小米的漏洞,小米直接给送了部小米手机、

  4. 2012-06-11 21:36 | 悠悠 ( 路人 | Rank:22 漏洞数:5 | 悠悠~~)

    @px1624 强烈顶小米,要求送手机 哈哈~~要不然我的小米都不安全了

  5. 2012-07-02 16:57 | possible ( 普通白帽子 | Rank:373 漏洞数:32 | everything is possible!)

    牛叉 不懂手机,看着写的就牛叉 呵呵

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

    @Claud ,根据你的描述,中兴手机也存在这个问题。貌似你可以做漏洞大礼包了?

  7. 2012-07-03 13:55 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)

    @horseluke @Claud 刚还有个漏洞可以读取sd卡文件的,这个结合无敌了

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

    @xsser 看了看洞主提交的其它漏洞,有点怀疑是android本身的问题?得开模拟机和收集多几部android的手机看看了...

  9. 2012-07-03 14:14 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)

    @horseluke 这是小米搞出来的吧?

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

    @xsser 就这个问题,应该是小米的问题了,刚才说的中兴等估计要单独测试再行确定。其余的已经分别回复~修复方案个人有些异议,等公开后再提出~

  11. 2012-07-03 15:18 | Claud ( 普通白帽子 | Rank:161 漏洞数:18 | secmobi.com)

    @horseluke 是的,这是个普遍存在的漏洞。在Android SDK中有提出这个警告,但基本上开发者都无视掉了。

  12. 2012-07-30 14:18 | X-Secure ( 路人 | Rank:6 漏洞数:2 | 扭啊扭啊扭~~~)

    @Claud 保重,小心被极端分子喷为360水军……另外~小米送手机没?听说要出小米2代了~跟他们说下,直接送2代吧~~~

  13. 2012-07-30 15:39 | Claud ( 普通白帽子 | Rank:161 漏洞数:18 | secmobi.com)

    @X-Secure 还木有送,哈哈

  14. 2012-07-30 21:25 | CCOz ( 路人 | Rank:22 漏洞数:7 | 本人还是处,有意的富婆请联系我,五万以下...)

    http://www.cnbeta.com/articles/199302.htm ...

  15. 2012-07-31 10:39 | king ( 路人 | Rank:15 漏洞数:2 | 喜爱安全,网络游戏安全应用漏洞挖掘)

    楼上的处男 haha

  16. 2012-08-01 18:15 | kookxiang ( 路人 | Rank:28 漏洞数:6 | 苦逼PHP程序猿…)

    被数字水军拿去炒作了,唉~o(︶︿︶)o

  17. 2012-08-02 01:55 | flyto ( 路人 | Rank:10 漏洞数:2 | 一个小小的,没啥技术的白帽子。)

    漏洞每个公司都有,我觉得乌云以后漏洞公布的时候应该谨慎一点,防止被别有用心的人利用。

  18. 2012-08-02 03:15 | 冰锋刺客 ( 普通白帽子 | Rank:113 漏洞数:14 | 请在监护人陪同下与本人交流)

    @flyto 觉得尽量别把标题写的那么严重的样子,如实写出情况即可,有点标题党

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

    @冰锋刺客 你说得对。我第一次在乌云发漏洞,经验不足。谢谢指教~

  20. 2012-08-05 12:31 | flyto ( 路人 | Rank:10 漏洞数:2 | 一个小小的,没啥技术的白帽子。)

    @冰锋刺客 现在数字总拿这个说事···

  21. 2012-08-15 18:46 | 大和尚 ( 实习白帽子 | Rank:49 漏洞数:5 | www.ieroot.com 积极向上的心态!百折不挠...)

    多少rank到普通白帽子?a