服务器 > 网络安全 > 手机安全

小米MIUI系统漏洞致大量系统、软件和用户数据泄露及修复方法

83人参与 2012-07-30 手机安全

该漏洞的成功利用不需要任何条件。
通过该漏洞,任何应用软件可以获取下列信息:
- 硬件数据,包括:系统版本、系统编译信息、内存和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输出结果进行加密,既然这个东西只有小米的工程师看,可以在设备上部署同一个公钥,私钥只有小米官方掌握就可以了
 
(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

怎样利用架构廉价的追踪网络中的入侵者

06-01

Android层次化安全架构及核心组件概览

07-07

手机里的信息到底安不安全?手机数据泄露大揭秘

06-03

三星Android(安卓)手机系统锁屏功能信息泄露风险的防范

06-25

手机短信验证码安全吗 警惕手机短信木马

07-11

Android 应用有哪些常见的安全漏洞?及修复建议

06-28

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论