BUGTRAQ ID: 27944
CVE(CAN) ID: CVE-2008-0923
VMWare是一款虚拟PC软件,允许在一台机器上同时运行两个或多个Windows、DOS、LINUX系统。
VMware的共享文件夹机制实现上存在目录遍历漏洞,运行于Guest系统上的程序可以利用此漏洞访问到Host系统的文件。
VMware的共享文件夹允许用户在Guest和Host系统之间传输数据,该机制允许Guest系统的用户读写任意部分的Host文件系统,包括系统文件夹和其他敏感文件。
该漏洞的起因是用于在Guest系统中提供共享文件夹功能的VMware API处理PathName参数的方式。在确认PathName参数不包含有0x2e0x2e(翻译为ASCII子字符“…”)字符串后,就会将其从多个字节字符串转换为宽字符字符串,然后将所生成的宽字符字符串传送给Host系统上的系统文件API。这个转换是使用Windows API的MultiByteToWideChar函数实现的。由于验证“…”字符串是在转换输入字符串之前执行的,因此Guest系统上的恶意程序或用户提供的PathName可以通过验证,但在调用MultiByteToWideChar之后仍可能映射为包含有Unicode UTF-16版本的“…”字符串。
VMWare VMWare Workstation 6.0.2
VMWare VMWare Workstation 5.5.4
VMWare ACE 2.0.2
VMWare ACE 1.0.2
VMWare Player 2.0.2
VMWare Player 1.0.4
临时解决方法:
如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:
从VMware产品菜单选择Edit > Preferences
在Workspace标签的Virtual Machines下,清除选择Enable复选框。
如果要对单个虚拟机设置禁用共享文件夹:
从VMware产品的菜单选择VM > Settings
在Options标签中,选择Shared Folders然后选择Disable。
厂商补丁:
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
<a href=“http://www.vmware.com” target=“_blank”>http://www.vmware.com</a>
/-----------
// mbtwc.c
#include <windows.h>;
int main(int argv, char *argc[]) {
~ unsigned int i, ans;
~ unsigned char buf[200];
~ for (i=1;i;i++) {
~ memset(buf, 0, 200);
~ ans = MultiByteToWideChar(CP_UTF8, 8, &i, 4, buf, 100);
~ // 8 = MB_ERR_INVALID_CHARS
~ if (ans && (buf[0] == '.') && (buf[1] == 0) &&
~ ((i & 0xff) != '.'))
~ printf("%d %04x: %02x %02x %02x %02x\n", ans, i,
~ buf[0], buf[1], buf[2], buf[3]);
}
~ }
- -----------/