Date: Sun, 23 Feb 1997 21:49:08 -0800 From: jehamby@lightside.com (Jake Hamby) To: hackers@freebsd.org Subject: disallow setuid root shells? Message-ID: <199702240549.VAA01306@lightside.com>
next in thread | raw e-mail | index | archive | help
In light of the recent security review, here's something that I've wondered about ever since I noticed it. Often, after hacking the root account, a malicious user will hide a setuid-root shell as a back door to allow future access. Under Solaris, I've discovered that none of the standard shells will allow a user to gain root privileges through a setuid root shell! The sh and ksh shells will run, but the user will have their normal privileges. Csh (and interestingly enough tcsh) print "Permission denied" and exit when run with the setuid bit set. Curiously, when I made a setuid shell owned by nobody, the sh command worked (and gave me, as a normal user, nobody's permissions), while the csh command still printed "Permission denied." I theorize that csh tries to gain control of the user's terminal (for job control purposes), but can't do it while assuming another user's UID. Since I don't have Solaris source code, I'm not sure exactly what these shells are doing, but I imagine a simple: if(geteuid()==0) { /* If this is a setuid-root shell */ setuid(getuid()); /* then silently restore user's permissions * to prevent security backdoor */ } near the beginning of the program would suffice. I don't claim that this will do anything to thwart the knowledgable hacker, but anything to make the system more secure, especially against novice hackers who just found out about the latest bug-of-the-week, would make FreeBSD a more secure system. After all, although a setuid shell owned by a regular user might be useful (though I wouldn't recommend it), it's obvious that a setuid-root shell would be too much of a security risk to be allowable under any circumstances. Comments? While we're on the topic, I've always wondered about Perl 5's configure messages about "secure setuid scripts". What exactly makes an OS capable of hosting "secure" Perl or shell scripts, and what does this have to do with the /dev/fd directory (that Perl searches for)? -- Jake
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199702240549.VAA01306>