From ffe22a00c473cbb6593143785f95155afb993d9a Mon Sep 17 00:00:00 2001 From: Simon Davies Date: Thu, 16 Jan 2025 17:58:41 +0000 Subject: [PATCH 01/10] Update diagram Reflect the use of CreateFileMapping/MapViewOfFile/UnmapViewOfFile/CloseHandle instead of VirtualAlloc/VirtualFree Signed-off-by: Simon Davies --- docs/assets/hyperlight_arch.excalidraw | 183 ++++++++++++++----------- docs/assets/hyperlight_arch.png | Bin 89331 -> 93428 bytes 2 files changed, 101 insertions(+), 82 deletions(-) diff --git a/docs/assets/hyperlight_arch.excalidraw b/docs/assets/hyperlight_arch.excalidraw index bfaeca907..3d18006bb 100644 --- a/docs/assets/hyperlight_arch.excalidraw +++ b/docs/assets/hyperlight_arch.excalidraw @@ -544,10 +544,10 @@ { "id": "Ph9DIcEYybit7fiUewmDA", "type": "arrow", - "x": 1111.926599382088, - "y": 426, - "width": 3.1214874998370306, - "height": 123, + "x": 1107.926599382088, + "y": 416, + "width": 0.8785125001629694, + "height": 133, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", @@ -562,11 +562,11 @@ "type": 2 }, "seed": 230755504, - "version": 528, - "versionNonce": 1642140732, + "version": 549, + "versionNonce": 2008038525, "isDeleted": false, "boundElements": [], - "updated": 1730814289308, + "updated": 1737045415864, "link": null, "locked": false, "points": [ @@ -575,20 +575,22 @@ 0 ], [ - -3.1214874998370306, - 123 + 0.8785125001629694, + 133 ] ], "lastCommittedPoint": null, "startBinding": { "elementId": "NJEIgp1M_osOAid-pqylt", - "gap": 10.5, - "focus": -0.19866512165760108 + "focus": -0.14562925044842748, + "gap": 1, + "fixedPoint": null }, "endBinding": { "elementId": "7nba6ESM8WtJu9ALZO5xR", + "focus": -0.05182243444132844, "gap": 1, - "focus": 0.03885529393375819 + "fixedPoint": null }, "startArrowhead": null, "endArrowhead": "arrow", @@ -596,8 +598,8 @@ }, { "type": "arrow", - "version": 520, - "versionNonce": 967519420, + "version": 548, + "versionNonce": 562391101, "isDeleted": false, "id": "p7oFf4tdH2F-Rs6h74mXc", "fillStyle": "hachure", @@ -606,12 +608,12 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 1033.262520530746, - "y": 423.6756983844284, + "x": 1036.262520530746, + "y": 413.6756983844284, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 69.44279429559049, - "height": 168, + "width": 74.44279429559049, + "height": 186, "seed": 584371376, "groupIds": [], "frameId": null, @@ -619,18 +621,20 @@ "type": 2 }, "boundElements": [], - "updated": 1730814289308, + "updated": 1737045406282, "link": null, "locked": false, "startBinding": { "elementId": "NJEIgp1M_osOAid-pqylt", - "gap": 8.175698384428415, - "focus": 0.34981241764755727 + "focus": 0.365217665128887, + "gap": 1, + "fixedPoint": null }, "endBinding": { "elementId": "3kyoI793GcGF7EDeHkGwn", - "gap": 8.324301615571528, - "focus": -0.8818303206989911 + "focus": -0.9247001447347454, + "gap": 1, + "fixedPoint": null }, "lastCommittedPoint": null, "startArrowhead": null, @@ -641,16 +645,16 @@ 0 ], [ - -69.44279429559049, - 168 + -74.44279429559049, + 186 ] ], "index": "aN" }, { "type": "arrow", - "version": 656, - "versionNonce": 832451900, + "version": 688, + "versionNonce": 1717589939, "isDeleted": false, "id": "Kb3EyDIdXPG3ZT2r9mpHi", "fillStyle": "hachure", @@ -659,12 +663,12 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 992.0058069311134, - "y": 427.6685868091555, + "x": 1000.0058069311134, + "y": 413.6685868091555, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 98.36782637495253, - "height": 225.0000000000001, + "width": 105.36782637495253, + "height": 246.0000000000001, "seed": 752920240, "groupIds": [], "frameId": null, @@ -672,18 +676,20 @@ "type": 2 }, "boundElements": [], - "updated": 1730814289308, + "updated": 1737045396963, "link": null, "locked": false, "startBinding": { "elementId": "NJEIgp1M_osOAid-pqylt", - "gap": 12.1685868091555, - "focus": 0.6750814542078091 + "focus": 0.6636815928403077, + "gap": 1, + "fixedPoint": null }, "endBinding": { "elementId": "4UEm1MHIYvpNpekBnVfxq", - "gap": 7.331413190844387, - "focus": -0.7616555031432064 + "focus": -0.7623126270323419, + "gap": 1, + "fixedPoint": null }, "lastCommittedPoint": null, "startArrowhead": null, @@ -694,8 +700,8 @@ 0 ], [ - -98.36782637495253, - 225.0000000000001 + -105.36782637495253, + 246.0000000000001 ] ], "index": "aO" @@ -779,8 +785,8 @@ }, { "type": "rectangle", - "version": 183, - "versionNonce": 1452679684, + "version": 237, + "versionNonce": 1173479901, "isDeleted": false, "id": "b7Bij3NIQzuDHvVD1Sq9F", "fillStyle": "hachure", @@ -793,8 +799,8 @@ "y": 622, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 253.00000000000006, - "height": 43, + "width": 351, + "height": 60, "seed": 1087376048, "groupIds": [], "frameId": null, @@ -811,15 +817,15 @@ "type": "arrow" } ], - "updated": 1730814221461, + "updated": 1737045370952, "link": null, "locked": false, "index": "aR" }, { "type": "text", - "version": 263, - "versionNonce": 517468220, + "version": 384, + "versionNonce": 879992381, "isDeleted": false, "id": "kasuMAdu3diZs4y3X1s-9", "fillStyle": "hachure", @@ -828,27 +834,27 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 437.0599899291992, - "y": 631, + "x": 441.3483333309491, + "y": 627, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 225.88002014160156, - "height": 25, + "width": 315.3033333381017, + "height": 50, "seed": 2044409008, "groupIds": [], "frameId": null, "roundness": null, "boundElements": [], - "updated": 1730814221461, + "updated": 1737045370952, "link": null, "locked": false, "fontSize": 20, "fontFamily": 1, - "text": "VirtualAlloc/VirtualFree", + "text": "CreateFileMapping/MapViewOfFile\nUnmapViewOfFile/CloseHandle", "textAlign": "center", "verticalAlign": "middle", "containerId": "b7Bij3NIQzuDHvVD1Sq9F", - "originalText": "VirtualAlloc/VirtualFree", + "originalText": "CreateFileMapping/MapViewOfFile\nUnmapViewOfFile/CloseHandle", "lineHeight": 1.25, "baseline": 18, "index": "aS", @@ -857,10 +863,10 @@ { "id": "blyLXaPSOXpb1fkRZ017C", "type": "arrow", - "x": 636.6588056574739, - "y": 415, - "width": 12.830409331983105, - "height": 136, + "x": 635.6588056574739, + "y": 414, + "width": 11.830409331983105, + "height": 148, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", @@ -875,11 +881,11 @@ "type": 2 }, "seed": 58666576, - "version": 221, - "versionNonce": 1326137732, + "version": 250, + "versionNonce": 960823891, "isDeleted": false, "boundElements": [], - "updated": 1730814221461, + "updated": 1737045430579, "link": null, "locked": false, "points": [ @@ -888,20 +894,22 @@ 0 ], [ - -12.830409331983105, - 136 + -11.830409331983105, + 148 ] ], "lastCommittedPoint": null, "startBinding": { "elementId": "-vXJ-MosW68OujoNRBhQj", - "focus": -0.3141025641025642, - "gap": 2 + "focus": -0.30148431419804506, + "gap": 1, + "fixedPoint": null }, "endBinding": { "elementId": "c0XS-Vryc8iymtiVZQj9a", - "focus": 0.2554561155597424, - "gap": 10 + "focus": 0.27404122631940364, + "gap": 1, + "fixedPoint": null }, "startArrowhead": null, "endArrowhead": "arrow", @@ -910,10 +918,10 @@ { "id": "vtiLTp9RPUEAHDDwc5n_T", "type": "arrow", - "x": 564.3431442239641, - "y": 426, - "width": 73.80817085522006, - "height": 195, + "x": 561.3431442239641, + "y": 415, + "width": 82.16943731060223, + "height": 211.5, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", @@ -928,11 +936,11 @@ "type": 2 }, "seed": 835222704, - "version": 238, - "versionNonce": 1801881788, + "version": 349, + "versionNonce": 1154055165, "isDeleted": false, "boundElements": [], - "updated": 1730814221461, + "updated": 1737045424265, "link": null, "locked": false, "points": [ @@ -941,20 +949,22 @@ 0 ], [ - -73.80817085522006, - 195 + -82.16943731060223, + 211.5 ] ], "lastCommittedPoint": null, "startBinding": { "elementId": "-vXJ-MosW68OujoNRBhQj", - "focus": 0.14180380423167346, - "gap": 13 + "focus": 0.19263691070624067, + "gap": 2, + "fixedPoint": null }, "endBinding": { "elementId": "b7Bij3NIQzuDHvVD1Sq9F", - "focus": -0.5049201779638837, - "gap": 1 + "focus": -0.6931852241077019, + "gap": 1, + "fixedPoint": null }, "startArrowhead": null, "endArrowhead": "arrow", @@ -981,11 +991,20 @@ "type": 3 }, "seed": 500723376, - "version": 122, - "versionNonce": 1157127556, + "version": 124, + "versionNonce": 251249459, "isDeleted": false, - "boundElements": [], - "updated": 1730814244437, + "boundElements": [ + { + "id": "vtiLTp9RPUEAHDDwc5n_T", + "type": "arrow" + }, + { + "id": "p7oFf4tdH2F-Rs6h74mXc", + "type": "arrow" + } + ], + "updated": 1737045400331, "link": null, "locked": false, "index": "aV" diff --git a/docs/assets/hyperlight_arch.png b/docs/assets/hyperlight_arch.png index 93294c5e25c9a022a26b815ffd39739f35c9c313..5a97f16fd52a8a2c9f92cee039d96bb8a7505904 100644 GIT binary patch literal 93428 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 literal 89331 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%0AbeCiIbp#pMo>asdY;Gs?^myOya5{R()Z)Z%s! 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�S+Z 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 Date: Thu, 16 Jan 2025 18:01:01 +0000 Subject: [PATCH 02/10] Ensure that the memory mapped file handle is passed to the HypervWindowsDriver Signed-off-by: Simon Davies --- src/hyperlight_host/src/hypervisor/hypervisor_handler.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/hyperlight_host/src/hypervisor/hypervisor_handler.rs b/src/hyperlight_host/src/hypervisor/hypervisor_handler.rs index 3975d5344..c78624c0f 100644 --- a/src/hyperlight_host/src/hypervisor/hypervisor_handler.rs +++ b/src/hyperlight_host/src/hypervisor/hypervisor_handler.rs @@ -38,6 +38,8 @@ use windows::Win32::System::Hypervisor::{WHvCancelRunVirtualProcessor, WHV_PARTI #[cfg(feature = "function_call_metrics")] use crate::histogram_vec_observe; use crate::hypervisor::handlers::{MemAccessHandlerWrapper, OutBHandlerWrapper}; +#[cfg(target_os = "windows")] +use crate::hypervisor::wrappers::HandleWrapper; use crate::hypervisor::Hypervisor; use crate::mem::layout::SandboxMemoryLayout; use crate::mem::mgr::SandboxMemoryManager; @@ -905,6 +907,9 @@ fn set_up_hypervisor_partition( #[cfg(target_os = "windows")] Some(HypervisorType::Whp) => { + let mmap_file_handle = mgr + .shared_mem + .with_exclusivity(|e| e.get_mmap_file_handle())?; let hv = crate::hypervisor::hyperv_windows::HypervWindowsDriver::new( regions, mgr.shared_mem.raw_mem_size(), // we use raw_* here because windows driver requires 64K aligned addresses, @@ -912,6 +917,7 @@ fn set_up_hypervisor_partition( pml4_ptr.absolute()?, entrypoint_ptr.absolute()?, rsp_ptr.absolute()?, + HandleWrapper::from(mmap_file_handle), )?; Ok(Box::new(hv)) } From 30ee6b5ab88099c45bf4158a969fcaf277c0d46e Mon Sep 17 00:00:00 2001 From: Simon Davies Date: Thu, 16 Jan 2025 19:30:35 +0000 Subject: [PATCH 03/10] Update hyperv driver so that: When the driver is created a handle to the FileMapping for the memory for this sandbox. Uses that handle as an argument to the get_surrogate_process function on the SurrogateProcessManager Removes the code that copies the Sandbox memory to and from the surrogate process memory each time the VM is run. Signed-off-by: Simon Davies --- .../src/hypervisor/hyperv_windows.rs | 61 +++---------------- 1 file changed, 7 insertions(+), 54 deletions(-) diff --git a/src/hyperlight_host/src/hypervisor/hyperv_windows.rs b/src/hyperlight_host/src/hypervisor/hyperv_windows.rs index 5ce5e815d..067d0cb1a 100644 --- a/src/hyperlight_host/src/hypervisor/hyperv_windows.rs +++ b/src/hyperlight_host/src/hypervisor/hyperv_windows.rs @@ -21,7 +21,6 @@ use std::string::String; use hyperlight_common::mem::PAGE_SIZE_USIZE; use tracing::{instrument, Span}; -use windows::Win32::Foundation::HANDLE; use windows::Win32::System::Hypervisor::{ WHvX64RegisterCr0, WHvX64RegisterCr3, WHvX64RegisterCr4, WHvX64RegisterCs, WHvX64RegisterEfer, WHV_MEMORY_ACCESS_TYPE, WHV_PARTITION_HANDLE, WHV_REGISTER_VALUE, WHV_RUN_VP_EXIT_CONTEXT, @@ -33,7 +32,7 @@ use super::handlers::{MemAccessHandlerWrapper, OutBHandlerWrapper}; use super::surrogate_process::SurrogateProcess; use super::surrogate_process_manager::*; use super::windows_hypervisor_platform::{VMPartition, VMProcessor}; -use super::wrappers::WHvFPURegisters; +use super::wrappers::{HandleWrapper, WHvFPURegisters}; use super::{ HyperlightExit, Hypervisor, VirtualCPU, CR0_AM, CR0_ET, CR0_MP, CR0_NE, CR0_PE, CR0_PG, CR0_WP, CR4_OSFXSR, CR4_OSXMMEXCPT, CR4_PAE, EFER_LMA, EFER_LME, EFER_NX, EFER_SCE, @@ -43,15 +42,14 @@ use crate::hypervisor::hypervisor_handler::HypervisorHandler; use crate::hypervisor::wrappers::WHvGeneralRegisters; use crate::mem::memory_region::{MemoryRegion, MemoryRegionFlags}; use crate::mem::ptr::{GuestPtr, RawPtr}; -use crate::HyperlightError::WindowsAPIError; -use crate::{debug, log_then_return, new_error, Result}; +use crate::{debug, new_error, Result}; /// A Hypervisor driver for HyperV-on-Windows. pub(crate) struct HypervWindowsDriver { size: usize, // this is the size of the memory region, excluding the 2 surrounding guard pages processor: VMProcessor, - surrogate_process: SurrogateProcess, - source_address: *mut c_void, // this points into the first guard page + _surrogate_process: SurrogateProcess, // we need to keep a reference to the SurrogateProcess for the duration of the driver since otherwise it will dropped and the memory mapping will be unmapped and the surrogate process will be returned to the pool + source_address: *mut c_void, // this points into the first guard page entrypoint: u64, orig_rsp: GuestPtr, mem_regions: Vec, @@ -73,6 +71,7 @@ impl HypervWindowsDriver { pml4_address: u64, entrypoint: u64, rsp: u64, + mmap_file_handle: HandleWrapper, ) -> Result { // create and setup hypervisor partition let mut partition = VMPartition::new(1)?; @@ -81,7 +80,7 @@ impl HypervWindowsDriver { // with guard pages setup let surrogate_process = { let mgr = get_surrogate_process_manager()?; - mgr.get_surrogate_process(raw_size, raw_source_address) + mgr.get_surrogate_process(raw_size, raw_source_address, mmap_file_handle) }?; partition.map_gpa_range(&mem_regions, surrogate_process.process_handle)?; @@ -95,7 +94,7 @@ impl HypervWindowsDriver { Ok(Self { size: mem_size, processor: proc, - surrogate_process, + _surrogate_process: surrogate_process, source_address: raw_source_address, entrypoint, orig_rsp: GuestPtr::try_from(RawPtr::from(rsp))?, @@ -402,54 +401,8 @@ impl Hypervisor for HypervWindowsDriver { #[instrument(err(Debug), skip_all, parent = Span::current(), level = "Trace")] fn run(&mut self) -> Result { - let bytes_written: Option<*mut usize> = None; - let bytes_read: Option<*mut usize> = None; - let handle: HANDLE = self.surrogate_process.process_handle.into(); - - // TODO optimise this - // the following write to and read from process memory is required as we need to use - // surrogate processes to allow more than one WHP Partition per process - // see HyperVSurrogateProcessManager - // this needs updating so that - // 1. it only writes to memory that changes between usage - // 2. memory is allocated in the process once and then only freed and reallocated if the - // memory needs to grow. - - // - copy stuff to surrogate process - - if let Err(e) = unsafe { - windows::Win32::System::Diagnostics::Debug::WriteProcessMemory( - handle, - self.surrogate_process - .allocated_address - .add(PAGE_SIZE_USIZE), - self.source_address.add(PAGE_SIZE_USIZE), - self.size, - bytes_written, - ) - } { - log_then_return!(WindowsAPIError(e.clone())); - } - - // - call WHvRunVirtualProcessor let exit_context: WHV_RUN_VP_EXIT_CONTEXT = self.processor.run()?; - // - call read-process memory - - if let Err(e) = unsafe { - windows::Win32::System::Diagnostics::Debug::ReadProcessMemory( - handle, - self.surrogate_process - .allocated_address - .add(PAGE_SIZE_USIZE), - self.source_address.add(PAGE_SIZE_USIZE), - self.size, - bytes_read, - ) - } { - log_then_return!(WindowsAPIError(e.clone())); - } - let result = match exit_context.ExitReason { // WHvRunVpExitReasonX64IoPortAccess WHV_RUN_VP_EXIT_REASON(2i32) => { From 6548339b66cb577a9fc8ae3d11c0c3cea4602089 Mon Sep 17 00:00:00 2001 From: Simon Davies Date: Thu, 16 Jan 2025 20:39:17 +0000 Subject: [PATCH 04/10] Update memory allocation in Windows Replace use of VirtualAlloc/VirtualFree with CreateFileMapping/MapViewOFile/UnmapViewOfFile/CloseHandle to allow memry to be mapped into surrogate processes without any copying Signed-off-by: Simon Davies --- src/hyperlight_host/src/mem/shared_mem.rs | 105 +++++++++++++++++++--- 1 file changed, 91 insertions(+), 14 deletions(-) diff --git a/src/hyperlight_host/src/mem/shared_mem.rs b/src/hyperlight_host/src/mem/shared_mem.rs index 559c99f43..2bc4be31d 100644 --- a/src/hyperlight_host/src/mem/shared_mem.rs +++ b/src/hyperlight_host/src/mem/shared_mem.rs @@ -17,13 +17,21 @@ limitations under the License. use std::any::type_name; use std::ffi::c_void; use std::io::Error; +#[cfg(target_os = "linux")] use std::ptr::null_mut; use std::sync::{Arc, RwLock}; use hyperlight_common::mem::PAGE_SIZE_USIZE; use tracing::{instrument, Span}; #[cfg(target_os = "windows")] -use windows::Win32::System::Memory::{VirtualAlloc, MEM_COMMIT, PAGE_EXECUTE_READWRITE}; +use windows::core::PCSTR; +#[cfg(target_os = "windows")] +use windows::Win32::Foundation::{CloseHandle, HANDLE, INVALID_HANDLE_VALUE}; +#[cfg(target_os = "windows")] +use windows::Win32::System::Memory::{ + CreateFileMappingA, MapViewOfFile, UnmapViewOfFile, VirtualProtect, FILE_MAP_ALL_ACCESS, + MEMORY_MAPPED_VIEW_ADDRESS, PAGE_EXECUTE_READWRITE, PAGE_PROTECTION_FLAGS, PAGE_READWRITE, +}; #[cfg(target_os = "windows")] use crate::HyperlightError::{MemoryRequestTooBig, WindowsAPIError}; @@ -82,6 +90,8 @@ macro_rules! generate_writer { pub struct HostMapping { ptr: *mut u8, size: usize, + #[cfg(target_os = "windows")] + handle: HANDLE, } impl Drop for HostMapping { @@ -95,10 +105,19 @@ impl Drop for HostMapping { } #[cfg(target_os = "windows")] fn drop(&mut self) { - use windows::Win32::System::Memory::{VirtualFree, MEM_DECOMMIT}; + let mem_mapped_address = MEMORY_MAPPED_VIEW_ADDRESS { + Value: self.ptr as *mut c_void, + }; + if let Err(e) = unsafe { UnmapViewOfFile(mem_mapped_address) } { + tracing::error!( + "Failed to drop HostMapping (UnmapViewOfFile failed): {:?}", + e + ); + } - if let Err(e) = unsafe { VirtualFree(self.ptr as *mut c_void, self.size, MEM_DECOMMIT) } { - tracing::error!("Failed to free shared memory (VirtualFree failed): {:?}", e); + let file_handle: HANDLE = self.handle; + if let Err(e) = unsafe { CloseHandle(file_handle) } { + tracing::error!("Failed to drop HostMapping (CloseHandle failed): {:?}", e); } } } @@ -369,7 +388,9 @@ impl ExclusiveSharedMemory { #[cfg(target_os = "windows")] #[instrument(skip_all, parent = Span::current(), level= "Trace")] pub fn new(min_size_bytes: usize) -> Result { - use windows::Win32::System::Memory::PAGE_READWRITE; + #[cfg(inprocess)] + use windows::Win32::System::Memory::FILE_MAP_EXECUTE; + use windows::Win32::System::Memory::{PAGE_NOACCESS, PAGE_PROTECTION_FLAGS}; use crate::HyperlightError::MemoryAllocationFailed; @@ -394,16 +415,67 @@ impl ExclusiveSharedMemory { return Err(MemoryRequestTooBig(total_size, isize::MAX as usize)); } - // allocate the memory + let mut dwmaximumsizehigh = 0; + let mut dwmaximumsizelow = 0; + + if std::mem::size_of::() == 8 { + dwmaximumsizehigh = (total_size >> 32) as u32; + dwmaximumsizelow = (total_size & 0xFFFFFFFF) as u32; + } + + // Allocate the memory use CreateFileMapping instead of VirtualAlloc + // This allows us to map the memory into the surrogate process using MapViewOfFile2 + let handle = unsafe { + CreateFileMappingA( + INVALID_HANDLE_VALUE, + None, + PAGE_READWRITE, + dwmaximumsizehigh, + dwmaximumsizelow, + PCSTR::null(), + )? + }; + + #[cfg(inprocess)] let addr = - unsafe { VirtualAlloc(Some(null_mut()), total_size, MEM_COMMIT, PAGE_READWRITE) }; - if addr.is_null() { + unsafe { MapViewOfFile(handle, FILE_MAP_ALL_ACCESS | FILE_MAP_EXECUTE, 0, 0, 0) }; + #[cfg(not(inprocess))] + let addr = unsafe { MapViewOfFile(handle, FILE_MAP_ALL_ACCESS, 0, 0, 0) }; + if addr.Value.is_null() { log_then_return!(MemoryAllocationFailed( Error::last_os_error().raw_os_error() )); } - // TODO protect the guard pages + // Set the first and last pages to be guard pages + + let mut unused_out_old_prot_flags = PAGE_PROTECTION_FLAGS(0); + + // If the following calls to VirtualProtect are changed make sure to update the calls to VirtualProtectEx in surrogate_process_manager.rs + + let first_guard_page_start = addr.Value; + if let Err(e) = unsafe { + VirtualProtect( + first_guard_page_start, + PAGE_SIZE_USIZE, + PAGE_NOACCESS, + &mut unused_out_old_prot_flags, + ) + } { + log_then_return!(WindowsAPIError(e.clone())); + } + + let last_guard_page_start = unsafe { addr.Value.add(total_size - PAGE_SIZE_USIZE) }; + if let Err(e) = unsafe { + VirtualProtect( + last_guard_page_start, + PAGE_SIZE_USIZE, + PAGE_NOACCESS, + &mut unused_out_old_prot_flags, + ) + } { + log_then_return!(WindowsAPIError(e.clone())); + } Ok(Self { // HostMapping is only non-Send/Sync because raw pointers @@ -416,8 +488,9 @@ impl ExclusiveSharedMemory { // is not pointless as the lint suggests. #[allow(clippy::arc_with_non_send_sync)] region: Arc::new(HostMapping { - ptr: addr as *mut u8, + ptr: addr.Value as *mut u8, size: total_size, + handle, }), }) } @@ -425,8 +498,6 @@ impl ExclusiveSharedMemory { pub(super) fn make_memory_executable(&self) -> Result<()> { #[cfg(target_os = "windows")] { - use windows::Win32::System::Memory::{VirtualProtect, PAGE_PROTECTION_FLAGS}; - let mut _old_flags = PAGE_PROTECTION_FLAGS::default(); if let Err(e) = unsafe { VirtualProtect( @@ -472,7 +543,7 @@ impl ExclusiveSharedMemory { /// must be properly aligned. /// /// The rules on validity are still somewhat unspecified, but we - /// assume that the result of our calls to mmap/VirtualAlloc may + /// assume that the result of our calls to mmap/CreateFileMappings may /// be considered a single "allocated object". The use of /// non-atomic accesses is alright from a Safe Rust standpoint, /// because SharedMemoryBuilder is not Sync. @@ -482,7 +553,7 @@ impl ExclusiveSharedMemory { /// Again, the exact provenance restrictions on what is /// considered to be initialized values are unclear, but we make /// sure to use mmap(MAP_ANONYMOUS) and - /// VirtualAlloc(MEM_COMMIT), so the pages in question are + /// CreateFileMapping(SEC_COMMIT), so the pages in question are /// zero-initialized, which we hope counts for u8. /// - The memory referenced by the returned slice must not be /// accessed through any other pointer (not derived from the @@ -585,6 +656,12 @@ impl ExclusiveSharedMemory { }, ) } + + /// Gets the file handle of the shared memory region for this Sandbox + #[cfg(target_os = "windows")] + pub fn get_mmap_file_handle(&self) -> HANDLE { + self.region.handle + } } /// A trait that abstracts over the particular kind of SharedMemory, From 8c183a5f0c5888222edc261cb7bc59307a600438 Mon Sep 17 00:00:00 2001 From: Simon Davies Date: Thu, 16 Jan 2025 20:40:59 +0000 Subject: [PATCH 05/10] Only run load library tests when inprocess feature is enabled Signed-off-by: Simon Davies --- src/hyperlight_host/src/mem/mgr.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/hyperlight_host/src/mem/mgr.rs b/src/hyperlight_host/src/mem/mgr.rs index dd5749cf9..993f68679 100644 --- a/src/hyperlight_host/src/mem/mgr.rs +++ b/src/hyperlight_host/src/mem/mgr.rs @@ -809,7 +809,7 @@ impl SandboxMemoryManager { mod tests { use hyperlight_testing::rust_guest_as_pathbuf; use serde_json::to_string; - #[cfg(target_os = "windows")] + #[cfg(all(target_os = "windows", inprocess))] use serial_test::serial; use super::SandboxMemoryManager; @@ -848,7 +848,7 @@ mod tests { } } - #[cfg(target_os = "windows")] + #[cfg(all(target_os = "windows", inprocess))] #[test] #[serial] fn load_guest_binary_using_load_library() { From c4dcccf3ae7afb16e8546623a52dbc0755a7ada1 Mon Sep 17 00:00:00 2001 From: Simon Davies Date: Thu, 16 Jan 2025 20:42:30 +0000 Subject: [PATCH 06/10] Update inprocess and local library tests to take account of inprocess feature flag Signed-off-by: Simon Davies --- .../src/sandbox/uninitialized.rs | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/src/hyperlight_host/src/sandbox/uninitialized.rs b/src/hyperlight_host/src/sandbox/uninitialized.rs index bf462a701..4ca951d57 100644 --- a/src/hyperlight_host/src/sandbox/uninitialized.rs +++ b/src/hyperlight_host/src/sandbox/uninitialized.rs @@ -364,7 +364,28 @@ mod tests { None, ); - // in process should only be enabled with the inprocess feature and on debug builds, and requires windows + // debug mode should fail with an elf executable + assert!(sbox.is_err()); + + let simple_guest_path = simple_guest_exe_as_string().unwrap(); + let sbox = UninitializedSandbox::new( + GuestBinary::FilePath(simple_guest_path.clone()), + None, + Some(SandboxRunOptions::RunInProcess(false)), + None, + ); + + // in process should only be enabled with the inprocess feature and on debug builds + assert_eq!(sbox.is_ok(), cfg!(all(inprocess))); + + let sbox = UninitializedSandbox::new( + GuestBinary::FilePath(simple_guest_path.clone()), + None, + Some(SandboxRunOptions::RunInProcess(true)), + None, + ); + + // debug mode should succeed with a PE executable on windows with inprocess enabled assert_eq!(sbox.is_ok(), cfg!(all(inprocess, target_os = "windows"))); } @@ -592,7 +613,14 @@ mod tests { } #[cfg(target_os = "windows")] { - let _ = mgr_res.unwrap(); + #[cfg(inprocess)] + { + assert!(mgr_res.is_ok()) + } + #[cfg(not(inprocess))] + { + assert!(mgr_res.is_err()) + } } } From 4cadc22749577b58d8b29940d5a203ed75ebbef5 Mon Sep 17 00:00:00 2001 From: Simon Davies Date: Thu, 16 Jan 2025 20:54:35 +0000 Subject: [PATCH 07/10] Updated Cargo.lock Signed-off-by: Simon Davies --- src/tests/rust_guests/callbackguest/Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tests/rust_guests/callbackguest/Cargo.lock b/src/tests/rust_guests/callbackguest/Cargo.lock index b2d029e52..b07307997 100644 --- a/src/tests/rust_guests/callbackguest/Cargo.lock +++ b/src/tests/rust_guests/callbackguest/Cargo.lock @@ -39,9 +39,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.5" +version = "1.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31a0499c1dc64f458ad13872de75c0eb7e3fdb0e67964610c914b034fc5956e" +checksum = "c8293772165d9345bdaaa39b45b2109591e63fe5e6fbc23c6ff930a048aa310b" dependencies = [ "shlex", ] From 67decc203319e594e90d8a77866c98e63347ede5 Mon Sep 17 00:00:00 2001 From: Simon Davies Date: Thu, 16 Jan 2025 20:56:10 +0000 Subject: [PATCH 08/10] When dropping a surrogate process use UnmapViewOfFile2 instead of VirtualFreeEx Signed-off-by: Simon Davies --- .../src/hypervisor/surrogate_process.rs | 36 ++++++++++++++----- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/src/hyperlight_host/src/hypervisor/surrogate_process.rs b/src/hyperlight_host/src/hypervisor/surrogate_process.rs index ad1f4ad51..4ebbaec94 100644 --- a/src/hyperlight_host/src/hypervisor/surrogate_process.rs +++ b/src/hyperlight_host/src/hypervisor/surrogate_process.rs @@ -18,7 +18,9 @@ use core::ffi::c_void; use tracing::{instrument, Span}; use windows::Win32::Foundation::HANDLE; -use windows::Win32::System::Memory::{VirtualFreeEx, MEM_RELEASE}; +use windows::Win32::System::Memory::{ + UnmapViewOfFile2, MEMORY_MAPPED_VIEW_ADDRESS, UNMAP_VIEW_OF_FILE_FLAGS, +}; use super::surrogate_process_manager::get_surrogate_process_manager; use super::wrappers::HandleWrapper; @@ -54,10 +56,16 @@ impl Default for SurrogateProcess { impl Drop for SurrogateProcess { #[instrument(skip_all, parent = Span::current(), level= "Trace")] fn drop(&mut self) { - let handle: HANDLE = self.process_handle.into(); - if let Err(e) = unsafe { VirtualFreeEx(handle, self.allocated_address, 0, MEM_RELEASE) } { + let process_handle: HANDLE = self.process_handle.into(); + let memory_mapped_view_address = MEMORY_MAPPED_VIEW_ADDRESS { + Value: self.allocated_address, + }; + let flags = UNMAP_VIEW_OF_FILE_FLAGS(0); + if let Err(e) = + unsafe { UnmapViewOfFile2(process_handle, memory_mapped_view_address, flags) } + { tracing::error!( - "Failed to free surrogate process resources (VirtualFreeEx failed): {:?}", + "Failed to free surrogate process resources (UnmapViewOfFile2 failed): {:?}", e ); } @@ -66,9 +74,21 @@ impl Drop for SurrogateProcess { // of the SurrogateProcess being dropped. this is ok to // do because we are in the process of dropping ourselves // anyway. - get_surrogate_process_manager() - .unwrap() - .return_surrogate_process(self.process_handle) - .unwrap(); + match get_surrogate_process_manager() { + Ok(manager) => match manager.return_surrogate_process(self.process_handle) { + Ok(_) => (), + Err(e) => { + tracing::error!("Failed to return surrogate process to surrogate process manager when dropping : {:?}", e); + return; + } + }, + Err(e) => { + tracing::error!( + "Failed to get surrogate process manager when dropping SurrogateProcess: {:?}", + e + ); + return; + } + } } } From f9e57f116fc39a7c87604038b3c8088b20cf0087 Mon Sep 17 00:00:00 2001 From: Simon Davies Date: Tue, 28 Jan 2025 22:56:48 +0000 Subject: [PATCH 09/10] When allocating a SurrogateProcess use MapViewOfFile2 instead of VirtualAllocEx Signed-off-by: Simon Davies --- .../hypervisor/surrogate_process_manager.rs | 98 ++++++++++++++----- 1 file changed, 72 insertions(+), 26 deletions(-) diff --git a/src/hyperlight_host/src/hypervisor/surrogate_process_manager.rs b/src/hyperlight_host/src/hypervisor/surrogate_process_manager.rs index 4cec0f459..cbb81e1fb 100644 --- a/src/hyperlight_host/src/hypervisor/surrogate_process_manager.rs +++ b/src/hyperlight_host/src/hypervisor/surrogate_process_manager.rs @@ -33,9 +33,9 @@ use windows::Win32::System::JobObjects::{ JOBOBJECT_EXTENDED_LIMIT_INFORMATION, JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE, }; use windows::Win32::System::Memory::{ - VirtualAllocEx, VirtualProtectEx, MEM_COMMIT, MEM_RESERVE, PAGE_NOACCESS, - PAGE_PROTECTION_FLAGS, PAGE_READWRITE, + MapViewOfFileNuma2, VirtualProtectEx, PAGE_NOACCESS, PAGE_PROTECTION_FLAGS, PAGE_READWRITE, }; +use windows::Win32::System::SystemServices::NUMA_NO_PREFERRED_NODE; use windows::Win32::System::Threading::{ CreateProcessA, CREATE_SUSPENDED, PROCESS_INFORMATION, STARTUPINFOA, }; @@ -79,7 +79,7 @@ const NUMBER_OF_SURROGATE_PROCESSES: usize = 512; /// There is, however, another API (WHvMapGpaRange2) that has a second /// parameter which is a handle to a process. This process merely has to exist, /// the memory being mapped from the host to the virtual machine is -/// allocated/freed in this process using VirtualAllocEx/VirtualFreeEx. +/// allocated/freed in this process using CreateFileMapping/MapViewOfFile. /// Memory for the HyperVisor partition is copied to and from the host process /// from/into the surrogate process in Sandbox before and after the VCPU is run. /// @@ -145,27 +145,47 @@ impl SurrogateProcessManager { &self, raw_size: usize, raw_source_address: *const c_void, + mmap_file_handle: HandleWrapper, ) -> Result { - let process_handle: HANDLE = self.process_receiver.recv()?.into(); + let surrogate_process_handle: HANDLE = self.process_receiver.recv()?.into(); + let mapping_file_handle: HANDLE = mmap_file_handle.into(); - // allocate memory + // Allocate the memory by creating a view over the memory mapped file + + // Use MapViewOfFile2 to map memoy into the surrogate process, the MapViewOfFile2 API is implemented in as an inline function in a windows header file + // (see https://learn.microsoft.com/en-us/windows/win32/api/memoryapi/nf-memoryapi-mapviewoffile2#remarks) so we use the same API it uses in the header file here instead of + // MapViewOfFile2 which does not exist in the rust crate (see https://github.com/microsoft/windows-rs/issues/2595) let allocated_address = unsafe { - VirtualAllocEx( - process_handle, + MapViewOfFileNuma2( + mapping_file_handle, + surrogate_process_handle, + 0, Some(raw_source_address), raw_size, - MEM_COMMIT | MEM_RESERVE, - PAGE_READWRITE, + 0, + PAGE_READWRITE.0, + NUMA_NO_PREFERRED_NODE, ) }; - if allocated_address.is_null() { + + if allocated_address.Value.is_null() { log_then_return!( - "VirtualAllocEx failed for mem address {:?}", + "MapViewOfFileNuma2 failed for mem address {:?}", raw_source_address ); } - // set up guard page + if allocated_address.Value as *const c_void != raw_source_address { + log_then_return!( + "Address Mismatch Allocated: {:?} Requested: {:?}", + allocated_address.Value, + raw_source_address + ); + } + + // set up guard pages + + // If the following calls to VirtualProtectEx are changed make sure to update the calls to VirtualProtect in shared_mem.rs let mut unused_out_old_prot_flags = PAGE_PROTECTION_FLAGS(0); @@ -173,7 +193,7 @@ impl SurrogateProcessManager { let first_guard_page_start = raw_source_address; if let Err(e) = unsafe { VirtualProtectEx( - process_handle, + surrogate_process_handle, first_guard_page_start, PAGE_SIZE_USIZE, PAGE_NOACCESS, @@ -187,7 +207,7 @@ impl SurrogateProcessManager { let last_guard_page_start = unsafe { raw_source_address.add(raw_size - PAGE_SIZE_USIZE) }; if let Err(e) = unsafe { VirtualProtectEx( - process_handle, + surrogate_process_handle, last_guard_page_start, PAGE_SIZE_USIZE, PAGE_NOACCESS, @@ -197,7 +217,10 @@ impl SurrogateProcessManager { log_then_return!(WindowsAPIError(e.clone())); } - Ok(SurrogateProcess::new(allocated_address, process_handle)) + Ok(SurrogateProcess::new( + allocated_address.Value, + surrogate_process_handle, + )) } /// Returns a surrogate process to the pool of surrogate processes. @@ -391,15 +414,17 @@ mod tests { use std::thread; use std::time::{Duration, Instant}; + use hyperlight_common::mem::PAGE_SIZE_USIZE; use rand::{thread_rng, Rng}; use serial_test::serial; - use windows::Win32::Foundation::BOOL; + use windows::Win32::Foundation::{CloseHandle, BOOL, HANDLE, INVALID_HANDLE_VALUE}; use windows::Win32::System::Diagnostics::ToolHelp::{ CreateToolhelp32Snapshot, Process32First, Process32Next, PROCESSENTRY32, TH32CS_SNAPPROCESS, }; use windows::Win32::System::JobObjects::IsProcessInJob; use windows::Win32::System::Memory::{ - VirtualAlloc, VirtualFree, MEM_COMMIT, MEM_RELEASE, MEM_RESERVE, PAGE_READWRITE, + CreateFileMappingA, MapViewOfFile, UnmapViewOfFile, FILE_MAP_ALL_ACCESS, PAGE_READWRITE, + SEC_COMMIT, }; use super::*; @@ -423,13 +448,29 @@ mod tests { // surrogate process, make sure we actually got one, // then put it back for p in 0..NUMBER_OF_SURROGATE_PROCESSES { - let allocated_address = unsafe { - VirtualAlloc(None, size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE) + let dwmaximumsizehigh = 0; + let dwmaximumsizelow = (size & 0xFFFFFFFF) as u32; + let handle = unsafe { + CreateFileMappingA( + INVALID_HANDLE_VALUE, // Causes the page file to be used as the backing store + None, + PAGE_READWRITE | SEC_COMMIT, + dwmaximumsizehigh, + dwmaximumsizelow, + PCSTR::null(), + ) + .unwrap() }; + + let addr = unsafe { MapViewOfFile(handle, FILE_MAP_ALL_ACCESS, 0, 0, 0) }; + let timer = Instant::now(); let surrogate_process = { - let res = surrogate_process_manager - .get_surrogate_process(size, allocated_address)?; + let res = surrogate_process_manager.get_surrogate_process( + size, + addr.Value, + HandleWrapper::from(handle), + )?; let elapsed = timer.elapsed(); // Print out the time it took to get the process if its greater than 150ms (this is just to allow us to see that threads are blocking on the process queue) if (elapsed.as_millis() as u64) > 150 { @@ -454,10 +495,11 @@ mod tests { // dropping the surrogate process, as we do in the line // below, will return it to the surrogate process manager drop(surrogate_process); - unsafe { - let res = VirtualFree(allocated_address, 0, MEM_RELEASE); - assert!(res.is_ok()) - } + let res = unsafe { UnmapViewOfFile(addr) }; + assert!(res.is_ok(), "Failed to UnmapViewOfFile: {:?}", res.err()); + + let res = unsafe { CloseHandle(handle) }; + assert!(res.is_ok(), "Failed to CloseHandle: {:?}", res.err()); } Ok(()) }); @@ -516,7 +558,11 @@ mod tests { let mem = ExclusiveSharedMemory::new(SIZE).unwrap(); let process = mgr - .get_surrogate_process(mem.raw_mem_size(), mem.raw_ptr() as *mut c_void) + .get_surrogate_process( + mem.raw_mem_size(), + mem.raw_ptr() as *mut c_void, + HandleWrapper::from(mem.get_mmap_file_handle()), + ) .unwrap(); let buffer = vec![0u8; SIZE]; From 203215b047eaaed8ff7cb9de00abef204953ea50 Mon Sep 17 00:00:00 2001 From: Simon Davies Date: Wed, 29 Jan 2025 20:46:18 +0000 Subject: [PATCH 10/10] Update Cargo.toml to use additional windows crate feature Win32_System_SystemServices Signed-off-by: Simon Davies --- src/hyperlight_host/Cargo.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/hyperlight_host/Cargo.toml b/src/hyperlight_host/Cargo.toml index 9cf699cf7..89a2ae72a 100644 --- a/src/hyperlight_host/Cargo.toml +++ b/src/hyperlight_host/Cargo.toml @@ -62,6 +62,7 @@ windows = { version = "0.59", features = [ "Win32_System_Memory", "Win32_System_Threading", "Win32_System_JobObjects", + "Win32_System_SystemServices", ] } windows-sys = { version = "0.59", features = ["Win32"] } windows-result = "0.3"