小米MIUI系统漏洞致大量系统、软件和用户数据泄
网络安全 2021-07-03 10:15www.168986.cn网络安全知识
该漏洞的成功利用不需要任何条件。
通过该漏洞,任何应用软件可以获取下列信息
- 硬件数据,包括系统版本、系统编译信息、内存和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,原用于出厂硬件测试用,该软件中,.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输出结果进行加密,既然这个东西只有小米的工程师看,可以在设备上部署同一个公钥,私钥只有小米官方掌握就可以了
通过该漏洞,任何应用软件可以获取下列信息
- 硬件数据,包括系统版本、系统编译信息、内存和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,原用于出厂硬件测试用,该软件中,.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输出结果进行加密,既然这个东西只有小米的工程师看,可以在设备上部署同一个公钥,私钥只有小米官方掌握就可以了
网络安全培训
- 网络安全常见漏洞类型 网络安全常见漏洞类型包
- 绿色上网顺口溜七言 绿色上网的宣传标语
- 网络安全等级保护测评 网络安全等级保护条例
- 如何加强网络安全 网络安全隐患有哪些
- 网络安全防护措施有哪些 网络安全等级保护等级
- 如何保障网络安全 如何做好网络安全保障工作
- 维护网络安全的措施有哪些 维护网络安全的主要
- 网络安全工程师好学吗 2024年网络安全工程师好学
- 网络安全注意事项简短 网络安全注意事项100字
- 网络安全面临的挑战 当前网络安全面临的新问题
- 网络安全培训哪个靠谱 网络安全培训找哪个
- 普及网络安全知识内容 普及网络安全教育
- 网络安全防范知识宣传内容 网络安全防范知识宣
- 如何做好网络安全工作 如何做好网络安全工作
- 网络安全常识的丰富内容 网络安全的相关知识
- 青少年网络安全教育片 青少年网络安全知识讲座