Dear <font color="#888888"><span style="color: rgb(0, 0, 0);">Hideki EIRAKU,</span><br style="color: rgb(0, 0, 0);"><br style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 0);">Hi,<br>Thank you for your response. However, this statements has been stated in "BitVisor: A Thin Hypervisor for Enforcing I/O Device Security" paper:<br>
"The guest OS of parapass-through hypervisors use the physical address space that is identical to the machine (real) physical address space. The hypervisor does not need to carry out address translations. This contributes to reducing the size of the hypervisor."<br>
"Hypervisors must hide their own memory regions from the guest OS so that the guest OS do not use them. BitVisor hooks the BIOS functions for obtaining the memory usage map (function e820h) to fake that the memory regions are reserved. "<br>
So we have concluded int0x15 would be the only mechanism for protecting Bitvisor memory area.<br>Indeed, there is no address translation in </span></font>gmm_pass_gp2hp() function, it just check whether the mentioned memory area is located in Bitvisor memory region or not and set the fakerom based on the result. <font color="#888888"><span style="color: rgb(0, 0, 0);"> <br>
<br>Thanks again,<br><br><br><br style="color: rgb(0, 0, 0);"></span><br></font><br><div class="gmail_quote">On Tue, Apr 5, 2011 at 2:40 PM, Hideki EIRAKU <span dir="ltr"><<a href="mailto:hdk@igel.co.jp">hdk@igel.co.jp</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">Hi,<br>
<br>
From: Nafise Sadat Moosavi <<a href="mailto:ns.moosavi@gmail.com">ns.moosavi@gmail.com</a>><br>
Subject: [BitVisor-devel-en:7] Bitvisor memory protection<br>
Date: Sun, 3 Apr 2011 15:55:02 +0430<br>
Message-ID: <<a href="mailto:BANLkTimak_mJC7G6Svcg1rEYbXdPvpLzag@mail.gmail.com">BANLkTimak_mJC7G6Svcg1rEYbXdPvpLzag@mail.gmail.com</a>><br>
<div class="im"><br>
> Dear Bitvisor developers,<br>
><br>
> As stated in the first Bitvisor paper, Bitvisor uses Int0x15 for protecting<br>
> its memory from guest OS. However, there are manual way of probing memory<br>
> map instead of using BIOS int0x15, which are not recommended but still can<br>
> be used.<br>
<br>
</div>BitVisor hooks int0x15 to change the memory map, not to protect<br>
BitVisor's memory from the guest OS. The protection of memory is<br>
implemented in the gmm_pass_gp2hp() function, which is an address translator<br>
that translates guest-physical address to host-physical address.<br>
<br>
If the guest attempts to access an address in use by BitVisor, the address<br>
translater returns the physical address of a blank page with the read-only<br>
flag (fakerom) set. The shadow page table implementation calls panic()<br>
if the guest OS tries to modify a page with the read-only flag set.<br>
<div class="im"><br>
> Assume a guest OS which contains a rootkit for detection and destruction of<br>
> Bitvisor. It can guess the memory area of Bitvisor by using int0x15 results<br>
> during Bitvisor presence and absence in the same system, and then it can use<br>
> manual ways of memory access (without using int0x15) for destruction of the<br>
> hypervisor in memory.<br>
> Can Bitvisor protect itself against such attacks?<br>
<br>
</div>Yes. The gmm_pass_gp2hp function will protect against this scenario as well.<br>
However, the protection works only if the access is performed by the CPU,<br>
not via DMA.<br>
<font color="#888888"><br>
--<br>
Hideki EIRAKU <<a href="mailto:hdk@igel.co.jp">hdk@igel.co.jp</a>><br>
</font></blockquote></div><br>