Android系统下的SUID标记

Android内核基于linux内核开发,但一些安全访问限制有所不同。

如果是Linux系统,可执行文件设置了suid标记,则该程序运行时可以拥有创建者的euid,比如自己编写的一个idpie程序

$ ls -l /system/bin/idpie
-rwsr-xr-x root	shell	651379 2013-10-30 15:21 idpie

这个程序运行时会显示自己的uid和euid,然后尝试利用setuid,seteuid等提权,再输出提权后的uid和euid

$ idpie
uid:2000,euid:0
uid:0,euid:0

目前来看,Android和Linux的情况相同,但Android系统下如果将这个程序放到/data/local/tmp目录执行,执行结果:

$ /data/local/tmp/idpie
uid:2000,euid:2000

结论是:Android下,suid位并不是程序权限提升的唯一因素,程序所在目录也会限制,虽然没有全面测试,但至少/system/bin目录下的suid标记可以生效,/data/local/tmp目录下则不行

Update:

参考Ron的研究

suid程序不能放在nosuid挂载点的文件夹,否则无法获取相应的权限

$ cat /proc/mounts | grep nosuid 可以获取mount挂载文件夹到底支不支持suid

显然 /data 和 /cache 都不行

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注