【发布时间】:2018-05-12 02:29:38
【问题描述】:
我正在开发一个 SUID 根二进制“应用程序”,它运行一个系统(“ls -la /dir”)命令并通过编写恶意 ls 来获取 root 并更改我的用户的环境路径来设置它来设法利用它比内核的优先级更高。
我注意到以用户身份执行它会返回我的 root shell,而使用 sudo "./example" 执行它会使用 root 的路径并简单地列出 dir 中的文件。据我所知,setuid 继承了用户的所有者(在本例中为 root)权限,并且 sudo 以 root 身份执行。
这样的漏洞叫什么?应用程序开发人员将如何修补它?我有什么办法可以强制用户使用 sudo ./app 来执行程序?
【问题讨论】:
-
系统明智地设置文件权限,因此只有 root 和 root 组(或类似组)可以执行它。懒惰的编码方式在用户第一次启动时检查用户的 UID/GID(如果还没有 root 抱怨并退出)。更好的编码方式 - 修复它,使用户输入不会触发缓冲区溢出。我真的会考虑写一些需要 SUID 等的东西,直到你更好地理解它。
标签: unix privileges