• 軟體損壞資料救援
    誤分割、誤格式化、誤ghost、駭客攻擊、PQ調整失敗等...
  • 硬體損壞資料救援
    電路板芯片燒壞,不認碟、碟體書寫錯誤等...
  • 伺服器資料救援
    磁碟陣列RAID0 、RAID1、RAID1+0、NAS、SAN 、JBO
  • 筆電資料救援
    東芝、日立、邁拓、三星、富士通、昆騰、筆記型等...
  • RAID資料救援
    對RAID0、RAID1、RAID1E、RAID5E、RAID6等救援...
  • 硬碟資料救援
    IDE、SCSI、S-ATA介面的IBM、易拓,昆騰硬碟,移動硬碟...
目前位置: 首頁 > 新聞中心 > 儲存設備

VirtualBox VBoxDrv.sys驅動本地權限漏洞

【綠盟科技授權,賽迪發佈,謝絕任何網站轉載,違者,賽迪網將保留追究其法律責任的權利!】

【賽迪網-IT技術報道】VirtualBox是由德國Innotek公司開發的開源虛擬化技術,目前已成為Sun xVM產品家族的成員。在Windows主機操作系統上使用的時候VirtualBox會安裝VBoxDrv.sys內核驅動來控制guest操作系統的虛擬化。該驅動未經任何驗證便允許非特權用戶以METHOD_NEITHER緩衝模式打開//./VBoxDrv設備,這就允許不可信任的用戶態代碼向驅動傳送任意內核地址作為參數。通過特製的輸入,惡意用戶就可以使用內核中的功能執行任意內核態代碼。

發佈日期:2008-08-04

更新日期:2008-08-05

受影響系統:

Sun xVM VirtualBox 1.6.2

Sun xVM VirtualBox 1.6.0

描述:

----------------------------------------------------------------------------

BUGTRAQ ID: 30481

CVE(CAN) ID: CVE-2008-3431

VirtualBox是由德國Innotek公司開發的開源虛擬化技術,目前已成為Sun xVM產品家族的成員。

在Windows主機操作系統上使用的時候VirtualBox會安裝VBoxDrv.sys內核驅動來控制guest操作系統的虛擬化。該驅動未經任何驗證便允許非特權用戶以METHOD_NEITHER緩衝模式打開//./VBoxDrv設備,這就允許不可信任的用戶態代碼向驅動傳送任意內核地址作為參數。通過特製的輸入,惡意用戶就可以使用內核中的功能執行任意內核態代碼。

以下是SUPDrv-win.cpp中用於處理IOCTL請求的函數:

/-----------  NTSTATUS _stdcall VBoxDrvNtDeviceControl(PDEVICE_OBJECT pDevObj, PIRPpIrp)  {    PSUPDRVDEVEXT       pDevExt = (PSUPDRVDEVEXT)pDevObj->DeviceExtension;    PIO_STACK_LOCATION  pStack = IoGetCurrentIrpStackLocation(pIrp);    PSUPDRVSESSION      pSession =(PSUPDRVSESSION)pStack->FileObject->FsContext;    /*    * Deal with the two high-speed IOCtl that takes it's arguments from    * the session and iCmd, and only returns a VBox status code.    */    ULONG ulCmd = pStack->Parameters.DeviceIoControl.IoControlCode;    if (    ulCmd == SUP_IOCTL_FAST_DO_RAW_RUN(1)   ||  ulCmd == SUP_IOCTL_FAST_DO_HWACC_RUN      ||  ulCmd == SUP_IOCTL_FAST_DO_NOP)    {      KIRQL oldIrql;      int   rc;      /* Raise the IRQL to DISPATCH_LEVEl to prevent Windows fromrescheduling us to another CPU/core. */      Assert(KeGetCurrentIrql() <= DISPATCH_LEVEL);      KeRaiseIrql(DISPATCH_LEVEL, &oldIrql);(2)   rc = supdrvIOCtlFast(ulCmd, pDevExt, pSession);      KeLowerIrql(oldIrql);      /* Complete the I/O request. */      NTSTATUS rcNt = pIrp->IoStatus.Status = STATUS_SUCCESS;      pIrp->IoStatus.Information = sizeof(rc);      __try      {(3)     *(int *)pIrp->UserBuffer = rc;      }      __except(EXCEPTION_EXECUTE_HANDLER)      {        rcNt = pIrp->IoStatus.Status = GetExceptionCode();        dprintf(("VBoxSupDrvDeviceContorl: Exception Code %#x/n", rcNt));      }      IoCompleteRequest(pIrp, IO_NO_INCREMENT);      return rcNt;    }    return VBoxDrvNtDeviceControlSlow(pDevExt, pSession, pIrp, pStack);  }- -----------/

在(1)處句子檢查了IOCTL代碼,SUPDrvIOC.h以如下方式定義:

/-----------#define SUP_IOCTL_FAST_DO_RAW_RUN               SUP_CTL_CODE_FAST(64)/** Fast path IOCtl: VMMR0_DO_HWACC_RUN */#define SUP_IOCTL_FAST_DO_HWACC_RUN             SUP_CTL_CODE_FAST(65)/** Just a NOP call for profiling the latency of a fast ioctl call toVMMR0. */#define SUP_IOCTL_FAST_DO_NOP                   SUP_CTL_CODE_FAST(66)- -----------/

同一文件中還定義了SUP_CTL_CODE_FAST()宏:

/-----------#define SUP_CTL_CODE_FAST(Function) CTL_CODE(FILE_DEVICE_UNKNOWN,(Function)                                       | SUP_IOCTL_FLAG, METHOD_NEITHER,                                         FILE_WRITE_ACCESS)- -----------/

這時可以知道所使用的通訊方式為METHOD_NEITHER,然後在(2)處將supdrvIOCtlFast()的返回值保存到了rc中,在(3)處未經任何有效性檢查便將rc中的值直接寫入到了用戶態所發送的緩衝區指針。在這種情況下,就可以對IOCTL提供內核地址,向supdrvIOCtlFast()的返回值寫入內核空間記憶體中的任意地址,以任意修改內核代碼或內核指針,之後在ring 0環境中執行任意代碼。

<*來源:Anibal Sacco

鏈接:http://marc.info/?l=bugtraq&m=121788371725717&w=2

http://secunia.com/advisories/31361/

http://sunsolve.sun.com/search/printfriendly.do?assetkey=1-66-240095-1

*>

建議:

----------------------------------------------------------------------------

廠商補丁:

Sun

---

Sun已經為此發佈了一個安全公告(Sun-Alert-240095)以及相應補丁:

Sun-Alert-240095:A Security Vulnerability in 'VBoxDrv.sys' driver of Sun xVM VirtualBox 1.6 may lead to Arbitrary Code Execution or Denial of Service (DoS)

鏈接:http://sunsolve.sun.com/search/printfriendly.do?assetkey=1-66-240095-1

(

加入好友line@vga9721w
線上客服
@hd119