IBM AIX chcod Local Privilege Escalation Vulnerability
21 Dec. 2004
Summary
The chcod program is "a setuid root application, installed by default under newer versions of IBM AIX, that manages capacity upgrade on demand (CUoD)".
Local exploitation of an untrusted path vulnerability in the chcod command included by default in multiple versions of IBM Corp. AIX could allow for arbitrary code execution as the root user.
During execution, chcod invokes an external application ("grep") while trusting the user specified PATH environment variable. Root privileges are not dropped before this execution occurs, thus allowing an attacker to gain root access by specifying a controlled path and creating a malicious binary within that path. All an attacker needs to do to exploit the vulnerability is create a file called grep which contains malicious code, set their PATH variable to the current directory, and execute /usr/sbin/chcod.
Analysis:
The impact of this vulnerability is lessened by the fact that an attacker must first gain access to the system group in order to use this binary. Once group id system has been acquired, all that is required to exploit this vulnerability is a writable directory. This
directory can be the user's home directory, or even the /tmp directory, provided setuid execution is allowed. Exploitation does not require any knowledge of application internals, making privilege escalation trivial, even for unskilled attackers.
Workaround:
Only allow trusted users local access to security critical systems. Only allow trusted users access to the system group. Alternately, remove the setuid bit from chcod using chmod u-s /usr/sbin/chcod.
Vendor Response:
"IBM provides the following fixes:
* APAR number for AIX 5.1.0: IY64356 (available)
* APAR number for AIX 5.2.0: IY64355 (available)
* APAR number for AIX 5.3.0: IY64354 (available)
NOTE: Affected customers are urged to upgrade to 5.1.0, 5.2.0 or 5.3.0 at the latest maintenance level."