【问题标题】:SUID exploit and patchSUID 漏洞利用和补丁
【发布时间】: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


【解决方案1】:

我建议您更改应用程序以对其运行的命令使用绝对路径。例如:

system("/bin/ls -la /dir");

即使用户使用 sudo 命令执行它,他们也可以使用 sudo 参数 (--preserve-env) 来保留自己的 PATH。

如果您希望用户使用 sudo 运行应用程序,那么二进制文件不需要是 SUID root。

【讨论】:

    猜你喜欢
    • 2016-02-12
    • 2015-05-03
    • 2017-11-23
    • 2014-05-21
    • 2018-10-22
    • 2012-06-02
    • 1970-01-01
    • 2021-01-13
    • 1970-01-01
    相关资源
    最近更新 更多