Unix SUID漏洞和补丁

Unix SUID漏洞和补丁,unix,privileges,Unix,Privileges,我正在开发一个SUID root二进制“app”,它运行一个系统(“ls-la/dir”)命令,并通过编写一个恶意的ls来获取root并更改用户的环境路径来将其设置为比内核的优先级更高的优先级,从而设法利用它 我注意到,当使用sudo执行它时,以用户身份执行它会返回root shell。“/example”使用root的路径并简单地列出dir中的文件。据我所知,setuid将所有者(在本例中为root)的特权继承给用户,sudo以root身份执行 这些漏洞叫什么?应用程序开发人员将如何修补它?我

我正在开发一个SUID root二进制“app”,它运行一个系统(“ls-la/dir”)命令,并通过编写一个恶意的ls来获取root并更改用户的环境路径来将其设置为比内核的优先级更高的优先级,从而设法利用它

我注意到,当使用sudo执行它时,以用户身份执行它会返回root shell。“/example”使用root的路径并简单地列出dir中的文件。据我所知,setuid将所有者(在本例中为root)的特权继承给用户,sudo以root身份执行


这些漏洞叫什么?应用程序开发人员将如何修补它?我有没有办法强制用户使用sudo./app来执行程序?

我建议您将app更改为使用它运行的命令的绝对路径。例如:

system("/bin/ls -la /dir");
即使用户使用sudo命令执行它,也可以使用(--preserve env)来保留自己的路径


如果希望用户使用sudo运行应用程序,则无需将二进制文件设置为SUID root。

系统设置文件权限,以便只有root和root组(或类似组)可以执行该文件。惰性编码方式在用户首次启动时检查用户的UID/GID(如果尚未启动并退出)。更好的编码方式-修复它,这样用户输入就不会触发缓冲区溢出。我真的会考虑写一些需要SUID的东西,等等,直到你更好地理解它。