特权隔离
本应该是Android系统中最受限的隔离进程,却拥有众多特权,非常奇妙。
0. 随机uid,曾经的magiskhide绕过方案,magisk已处理。
https://t.me/magiskalpha/255
1. app zygote的setuid权能在selinux关闭时不受限制,已失效。
https://t.me/vvb2060_Channel/81
2. app zygote可以检测selinux状态,ksu已处理。
https://t.me/magiskalpha/714
3. app zygote native没有unshare,和init挂载命名空间相同,无法隐藏。
https://t.me/vvb2060_Channel/60
现在,我们又发现了一个隔离进程的特权:遍历进程。隔离进程拥有gid 3009,可以不受限访问/proc。
这是从隔离进程诞生起就拥有的能力,但10年来无人发现。2020年Project Zero偶然发现app zygote拥有gid 3009,可惜的是,没有发现存在时间更久的隔离进程有一模一样的问题,并且修复补丁特意忽略了隔离进程情况,只对is_child_zygote清空groups,真是哭笑不得。
由于我们在某加固壳中观察到了野外利用,因此决定直接公开该漏洞细节。我们还编写了一个poc,以检测root为例: https://github.com/LSPosed/Privisolated
本应该是Android系统中最受限的隔离进程,却拥有众多特权,非常奇妙。
0. 随机uid,曾经的magiskhide绕过方案,magisk已处理。
https://t.me/magiskalpha/255
1. app zygote的setuid权能在selinux关闭时不受限制,已失效。
https://t.me/vvb2060_Channel/81
2. app zygote可以检测selinux状态,ksu已处理。
https://t.me/magiskalpha/714
3. app zygote native没有unshare,和init挂载命名空间相同,无法隐藏。
https://t.me/vvb2060_Channel/60
现在,我们又发现了一个隔离进程的特权:遍历进程。隔离进程拥有gid 3009,可以不受限访问/proc。
这是从隔离进程诞生起就拥有的能力,但10年来无人发现。2020年Project Zero偶然发现app zygote拥有gid 3009,可惜的是,没有发现存在时间更久的隔离进程有一模一样的问题,并且修复补丁特意忽略了隔离进程情况,只对is_child_zygote清空groups,真是哭笑不得。
由于我们在某加固壳中观察到了野外利用,因此决定直接公开该漏洞细节。我们还编写了一个poc,以检测root为例: https://github.com/LSPosed/Privisolated