REDMI 5 Plus Second Space Password Bypass
这个漏洞来自F-Secure实验室
https://labs.f-secure.com/advisories/xiaomi-second-space
一句话描述就是:通过ADB命令启动一个Service就可以绕过小米Second Space的密码校验
我有一台Mix 2,刚好可以用于测试
Second Space的中文版本叫作手机分身

点击开启手机分身,会进入设置,两个密码,一个密码用于进入分身,一个密码用于回到主系统
这个漏洞的作用,就是让攻击者不需要密码,也可以进入分身,并且在主系统与分身之间自由切换
一共两条命令
第一条命令用于查询当前手机里的用户,| grep -o "{[0-9]*" | tr -d '{' | tail -n 1用于过滤出11这个字段
第二条命令可以说是最为关键,我们对其进行参数拆分
我们现在知道了这个Service响应的Action是"com.miui.xspace.TO_CHANGE_USER"
根据F-Secure的文章提示找到应用com.miui.securitycore
当然了,你想自己通过全局爆搜APK字符串也是可以的
这是实现Space切换的Service

查看AndroidManifest文件的定义,有<intent-filter>默认导出
获取四个Intent字段后,调用checkPasswordBeforeSwitch(),mTargetUserId就是上文提到的11
needCloseSdcardFs()返回的固定值0,所以第一个if块不会进入,第二个if块有两个判断条件,!mIsNeedcheckPassword和!isSecure(),只需要满足其中一个就可以进入if块,而PoC中设置的"params_check_password"字段为False,所以这个if块就是我们关注的重点
这个if块的第一句代码就是调用switchUser(),一共有三个判断
第一个判断,如果当前有电话打进来或者正在接电话,不进行Space切换
第二个判断和第三个判断,有一点点棘手,因为它调用到了Framework代码,小米在这一层多了相当多的定制
解析boot-framework.vdex,会获得三个cdex,再解析三个cdex文件为dex文件即可

JEB分析一波,可以直接找到两个方法,正常情况下这两个方法都返回false,可以不用过多关注

最后就是切换Space啦
这后面又会调用到Framework的代码,咱们就不进行展开了
Last updated