// back

SGI IRIX runpriv Design Error Vulnerability

10.10.05

BACKGROUND

The runpriv program is a setuid root application that checks to see if a
regular user has been granted privileges to execute a certain predefined
command, and if so it runs the command found in the directory
/usr/sysadm/privbin with root privileges. It is installed by default
under multiple versions of IRIX 6.

DESCRIPTION

Local exploitation of a design error vulnerability in the runpriv
command included in multiple versions of Silicon Graphics Inc.'s IRIX
could allow for arbitrary code execution as the root user.

The runpriv program is a setuid root application that checks to see if a
regular user has been granted privileges to execute a certain predefined
command, and if so it runs the command found in the directory
/usr/sysadm/privbin with root privileges.

The vulnerability specifically exists because runpriv unsafely executes
commands after it has verified a user's privileges. This allows an
attacker who has been given privileged access to one binary in
/usr/sysadm/privbin to effectively execute any command as root. To
exploit this vulnerability, all that is required is appending a string
of the form "command to execute" to the end of an otherwise authorized
and legitimate command. For example, if a user has been authorized to
run the mountfs utility, they can exploit this vulnerability in the
following way:

/usr/sysadm/bin/runpriv mountfs -s test -d / -o |
  "ksh -c 'echo r00t::0:0:r00t:/tmp:/bin/sh >> /etc/passwd'"
su r00t -c "chown root:sys /tmp/passwd123 ;
mv /tmp/passwd123 /etc/passwd ;
chmod 644 /etc/passwd ; su"

This will have the effect of adding an administrative user "r00t" to the
system with no password, which allows for trivial privilege escalation.

ANALYSIS

Exploitation requires an attacker to have access to an account which has
been granted usage of a binary in the /usr/sysadm/privbin directory. As
root must explicitly allow such privileges, the impact of this
vulnerability is lessened significantly. Exploitation does not require
any knowledge of application internals, making exploitation trivial,
even for unskilled attackers.

DETECTION

iDEFENSE has confirmed the existence of this vulnerability in SGI IRIX
version 6.5.22 (maintenance). It is suspected that previous and later
versions of both the feature and maintenance revisions of IRIX 6.5 are
also vulnerable.

WORKAROUND

Only grant runpriv privileges to trusted users with secure accounts.

Alternately, remove the setuid and setgid bits from runpriv:

chmod ug-s /usr/sysadm/bin/runpriv

VENDOR RESPONSE

A vendor advisory for this vulnerability is to be posted at:

  http://www.sgi.com/support/security/advisories.html

Vendor patch 7004 for IRIX 6.5.27 and 6.5.28 is available at:

  http://support.sgi.com/

CVE INFORMATION

The Common Vulnerabilities and Exposures (CVE) project has assigned the
name CAN-2005-2925 to this issue. This is a candidate for inclusion in
the CVE list (http://cve.mitre.org), which standardizes names for
security problems.

DISCLOSURE TIMELINE

09/08/2005   Initial vendor notification
09/09/2005   Initial vendor response
10/05/2005   Coordinated public disclosure

CREDIT

The discoverer of this vulnerability wishes to remain anonymous.

Get paid for vulnerability research
http://www.idefense.com/poi/teams/vcp.jsp

Free tools, research and upcoming events
http://labs.idefense.com

LEGAL NOTICES

Copyright © 2005 Verisign, Inc.

Permission is granted for the redistribution of this alert
electronically. It may not be edited in any way without the express
written consent of iDEFENSE. If you wish to reprint the whole or any
part of this alert in any other medium other than electronically, please
email customerservice@idefense.com for permission.

Disclaimer: The information in the advisory is believed to be accurate
at the time of publishing based on currently available information. Use
of the information constitutes acceptance for use in an AS IS condition.
There are no warranties with regard to this information. Neither the
author nor the publisher accepts any liability for any direct, indirect,
or consequential loss or damage arising from use of, or reliance on,
this information.