From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga17.intel.com (mga17.intel.com []) by mx.groups.io with SMTP id smtpd.web09.13038.1607717275324064921 for ; Fri, 11 Dec 2020 12:07:56 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=fail (domain: intel.com, ip: , mailfrom: michael.d.kinney@intel.com) IronPort-SDR: UKLsB4A3xJKuHWsLykFZv6cOqbjI4J5eFMiChb47/47LFvxBo35v7iEiUFrUTott2K3v/AONsH ZhzkYHVMH4xw== X-IronPort-AV: E=McAfee;i="6000,8403,9832"; a="154302271" X-IronPort-AV: E=Sophos;i="5.78,412,1599548400"; d="scan'208";a="154302271" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Dec 2020 12:07:55 -0800 IronPort-SDR: PN3se9810dL7k9E7aVraVXgMJ/ENsVwqa8GfjFQU1f/XTqi+P9HiPhexejoVf8McNhRNPRrY4j KTtmrFXlK7Ow== X-IronPort-AV: E=Sophos;i="5.78,412,1599548400"; d="scan'208";a="365601928" Received: from mdkinney-mobl2.amr.corp.intel.com ([10.212.203.56]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Dec 2020 12:07:54 -0800 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Jiewen Yao , Vincent Zimmer , Laurie Jarlstrom , Kevin Shaw Subject: [tianocore-docs][ATBB-Memory_Protection_in_UEFI_BIOS][Patch 1/2] Clean up format and layout to match template Date: Fri, 11 Dec 2020 12:07:47 -0800 Message-Id: <20201211200748.1622-2-michael.d.kinney@intel.com> X-Mailer: git-send-email 2.29.2.windows.2 In-Reply-To: <20201211200748.1622-1-michael.d.kinney@intel.com> References: <20201211200748.1622-1-michael.d.kinney@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Move figures from assets directory to media directory * Remove non ASCII characters * Add Figure to TOC * Add missing file headers Cc: Jiewen Yao Cc: Vincent Zimmer Cc: Laurie Jarlstrom Cc: Kevin Shaw Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney --- README.md | 36 ++--- SUMMARY.md | 38 +++++ assets/Tianocore_logo2.png | Bin 7360 -> 0 bytes authors.md | 31 ++++ book.json | 9 ++ cover.jpg | Bin 0 -> 211343 bytes executive-summary.md | 31 ++++ glossary.md | 68 ++++++--- .../Fig1- SMRAM memory protection.jpg | Bin .../Fig2 - Mapping of Protection in SMM.jpg | Bin ...g3 - Page table enforced memory layout.jpg | Bin .../Fig4 - UEFI memory protection.jpg | Bin media/TianocoreTitlePageLogo.jpg | Bin 0 -> 44499 bytes memory-protection-in-SMM.md | 134 ++++++++++-------- memory-protection-in-uefi.md | 104 +++++++++----- references.md | 50 +++++-- 16 files changed, 359 insertions(+), 142 deletions(-) delete mode 100644 assets/Tianocore_logo2.png create mode 100644 book.json create mode 100644 cover.jpg rename {assets => media}/Fig1- SMRAM memory protection.jpg (100%) rename {assets => media}/Fig2 - Mapping of Protection in SMM.jpg (100%) rename {assets => media}/Fig3 - Page table enforced memory layout.jpg (100%) rename {assets => media}/Fig4 - UEFI memory protection.jpg (100%) create mode 100644 media/TianocoreTitlePageLogo.jpg diff --git a/README.md b/README.md index 6bc2a7b..f470c6e 100644 --- a/README.md +++ b/README.md @@ -29,30 +29,29 @@ --> -![](/assets/Tianocore_logo2.png) + -#####White Paper +### {{ book.title }} +{% if book.draft %} +** DRAFT FOR REVIEW ** +{% else %} +** {{ book.version }} ** +{% endif %} -# A Tour Beyond BIOS - Memory Protection in UEFI BIOS +** {{ gitbook.time|date('MM/DD/YYYY hh:mm:ss') }} ** +{% if book.udkrelease %} +** {{ book.udkrelease }} ** +{% endif %} - - _Jiewen Yao_, + _Jiewen Yao_, _Intel Corporation_ - - - - - _Vincent J. Zimmer _, + _Vincent J. Zimmer _, _Intel Corporation_ - - -##### March 2017 - -## Acknowledgements +### Acknowledgements Redistribution and use in source (original document form) and 'compiled' forms (converted to PDF, epub, HTML and other formats) with or without @@ -78,7 +77,12 @@ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -Copyright © 2007-2017, Intel Corporation. All rights reserved. +Copyright (c) 2007-2017, Intel Corporation. All rights reserved. + +### Revision History +| Revision | Revision History | Date | +| ---------- | ------------------ | ----------- | +| 1.0 | Initial release. | March 2017 | diff --git a/SUMMARY.md b/SUMMARY.md index dcce47b..b0250f0 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -1,3 +1,34 @@ + + # Summary * [Introduction](README.md) @@ -8,3 +39,10 @@ * [References](references.md) * [Authors](authors.md) +--- + +* Figures + * [Figure 1 - SMRAM memory protection](memory-protection-in-SMM.md#figure-1---smram-memory-protection) + * [Figure 2 - Mapping of Protection in SMM](memory-protection-in-SMM.md#figure-2---mapping-of-protection-in-smm) + * [Figure 3 - Page table enforced memory layout](memory-protection-in-SMM.md#figure-3---page-table-enforced-memory-layout) + * [Figure 4 - UEFI memory protection](memory-protection-in-uefi.md#figure-4---uefi-memory-protection) diff --git a/assets/Tianocore_logo2.png b/assets/Tianocore_logo2.png deleted file mode 100644 index 0ba21dc7a651ee64ee3449415aabb667022276b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7360 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 diff --git a/authors.md b/authors.md index f120a97..b3987ff 100644 --- a/authors.md +++ b/authors.md @@ -1,3 +1,34 @@ + + ## Authors Jiewen Yao [jiewen.yao@intel.com](mailto:jiewen.yao@intel.com) is EDK II BIOS architect, EDK II FSP package maintainer, EDK II TPM2 module maintainer, EDK II ACPI S3 module maintainer, with Software and Services Group at Intel Corporation. Jiewen is member of UEFI Security Sub-team and PI Security Sub-team in the UEFI Forum. diff --git a/book.json b/book.json new file mode 100644 index 0000000..b553eb5 --- /dev/null +++ b/book.json @@ -0,0 +1,9 @@ +{ + "variables" : { + "draft" : "yes", + "title" : "A Tour Beyond BIOS - Memory Protection in UEFI BIOS", + "version" : "Revision 1.0" + }, + "plugins": ["puml-aleung"], + "pluginsConfig": {} +} diff --git a/cover.jpg b/cover.jpg new file mode 100644 index 0000000000000000000000000000000000000000..24cb5a036ec8107ea3a7e37df38b045baca492de GIT binary patch literal 211343 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 G==m>^QGss& literal 0 HcmV?d00001 diff --git a/executive-summary.md b/executive-summary.md index da95613..19c0569 100644 --- a/executive-summary.md +++ b/executive-summary.md @@ -1,3 +1,34 @@ + + # Executive Summary ## Introduction **Data execution protection (DEP)** is intended to prevent an application or service from executing code from a non-executable memory region. This helps prevent certain exploits that store code via a buffer overflow. [[WindowsHeap][1]] shows 4 of 7 exploitation techniques that can be mitigated by DEP and ASLR (Address Space Layout Randomization). [[DEP][2]] also shows 14 of 19 exploits from popular exploit kits that fail with DEP enabled. Besides Windows, the Unix/Linux community also has similar non-executable protection [[PaX][3]]. diff --git a/glossary.md b/glossary.md index f1eb67c..81a3bbb 100644 --- a/glossary.md +++ b/glossary.md @@ -1,51 +1,81 @@ + + # Glossary -ASLR – Address Space Layout Randomization. +ASLR - Address Space Layout Randomization. BDA - BIOS Data Area. -CSM – Compatibility Support Module. +CSM - Compatibility Support Module. -DEP – Data Execution Protection. +DEP - Data Execution Protection. EBDA - Extended BIOS Data Area -HOB – Hand off block. See [[PI][1]]. +HOB - Hand off block. See [[PI][1]]. -MMIO – Memory Mapped I/O. +MMIO - Memory Mapped I/O. -NX – No Execution. See DEP. +NX - No Execution. See DEP. -PE/COFF – Portable Executable and Common Object File Format. The executable file format for UEFI. +PE/COFF - Portable Executable and Common Object File Format. The executable file format for UEFI. ROP - Return-oriented programming -RO – Read Only. +RO - Read Only. -RW – Read/Write. +RW - Read/Write. -PCD – Platform configuration database. See [[PI][1]]. +PCD - Platform configuration database. See [[PI][1]]. -PF – Page Fault Exception. +PF - Page Fault Exception. -PI – Platform Initialization. Volume 1-5 of the UEFI PI specifications. +PI - Platform Initialization. Volume 1-5 of the UEFI PI specifications. -SPI – Serial Peripheral Interface. +SPI - Serial Peripheral Interface. TSS - Task-state segment. See [[IA32 SDM][2]]. -UEFI – Unified Extensible Firmware Interface. Firmware interface between the platform and the operating system. Predominate interfaces are in the boot services (BS) or pre-OS. Few runtime (RT) services. +UEFI - Unified Extensible Firmware Interface. Firmware interface between the platform and the operating system. Predominate interfaces are in the boot services (BS) or pre-OS. Few runtime (RT) services. -VTd – Virtualization for Directed IO. See [[VTd][3]] +VTd - Virtualization for Directed IO. See [[VTd][3]] -WP – Write Protect. +WP - Write Protect. -XD – Execution Disable. See DEP. +XD - Execution Disable. See DEP. -XP – Execution Protected. See DEP. +XP - Execution Protected. See DEP. [1]: http://uefi.org "PI" - [2]: https://software.intel.com/en-us/articles/intel-sdm "IA32SDM" [3]: http://www.intel.com/content/www/us/en/embedded/technology/virtualization/vt-directed-io-spec.html "Vtd" diff --git a/assets/Fig1- SMRAM memory protection.jpg b/media/Fig1- SMRAM memory protection.jpg similarity index 100% rename from assets/Fig1- SMRAM memory protection.jpg rename to media/Fig1- SMRAM memory protection.jpg diff --git a/assets/Fig2 - Mapping of Protection in SMM.jpg b/media/Fig2 - Mapping of Protection in SMM.jpg similarity index 100% rename from assets/Fig2 - Mapping of Protection in SMM.jpg rename to media/Fig2 - Mapping of Protection in SMM.jpg diff --git a/assets/Fig3 - Page table enforced memory layout.jpg b/media/Fig3 - Page table enforced memory layout.jpg similarity index 100% rename from assets/Fig3 - Page table enforced memory layout.jpg rename to media/Fig3 - Page table enforced memory layout.jpg diff --git a/assets/Fig4 - UEFI memory protection.jpg b/media/Fig4 - UEFI memory protection.jpg similarity index 100% rename from assets/Fig4 - UEFI memory protection.jpg rename to media/Fig4 - UEFI memory protection.jpg diff --git a/media/TianocoreTitlePageLogo.jpg b/media/TianocoreTitlePageLogo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d84f1b7eb4a947cba4a05bc687fbac3af7d5ed39 GIT binary patch literal 44499 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 literal 0 HcmV?d00001 diff --git a/memory-protection-in-SMM.md b/memory-protection-in-SMM.md index ce89639..e9f21bb 100644 --- a/memory-protection-in-SMM.md +++ b/memory-protection-in-SMM.md @@ -1,13 +1,44 @@ + + # Memory Protection in SMM -The SMM is an isolated execution environment according to Intel® 64 and IA-32 Architectures Software Developer’s Manual [[IA32SDM][1]]. The UEFI Platform Initialization [[PI][2]] specification volume 4 defines the SMM infrastructure. Figure 1 shows the SMM memory protection. **RO** designates read-only memory. **XD **designates execution-disabled memory. +The SMM is an isolated execution environment according to Intel(R) 64 and IA-32 Architectures Software Developer's Manual [[IA32SDM][1]]. The UEFI Platform Initialization [[PI][2]] specification volume 4 defines the SMM infrastructure. Figure 1 shows the SMM memory protection. **RO** designates read-only memory. **XD **designates execution-disabled memory. -![](/assets/Fig1- SMRAM memory protection.jpg) - -Figure 1 - SMRAM memory protection +![](/media/Fig1- SMRAM memory protection.jpg) + +###### Figure 1 - SMRAM memory protection ## Protection for PE image -In UEFI/PI firmware, the SMM image is a normal PE/COFF image loaded by the SmmCore. If a given section of the SMM image is page aligned, it may be protected according to the section attributes, such as read-only for the code and non-executable for data. See the top right of figure 1. +In UEFI/PI firmware, the SMM image is a normal PE/COFF image loaded by the SmmCore. If a given section of the SMM image is page aligned, it may be protected according to the section attributes, such as read-only for the code and non-executable for data. See the top right of Figure 1. In EDK II, the PiSmmCore (https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Core/PiSmmCore/MemoryAttributesTable.c) checks the PE image alignment and builds an `EDKII_PI_SMM_MEMORY_ATTRIBUTES_TABLE ` (https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Include/Guid/PiSmmMemoryAttributesTable.h) to record such information. If the PI SMM image is not page aligned, this table will not be published. If the `EDKII_PI_SMM_MEMORY_ATTRIBUTES_TABLE` is published, that means the `EfiRuntimeServicesCode` contains only code and it is ``EFI_MEMORY_RO``, and the `EfiRuntimeServicesData` contains only data and it is `EFI_MEMORY_XP`. @@ -15,8 +46,8 @@ Later the PiSmmCpu driver (https://github.com/tianocore/edk2/blob/master/UefiCpu There are several assumptions to support the PE image protection in SMM: -1. The PE code section and data sections are not merged. If those 2 sections are merged, a #PF exception might be generated because the CPU might try to write a RO data item in the data section or execute a non-executable (NX) instruction in code section. -2. The PE image can be protected if it is page aligned. There should not be any self-modified-code in the code region. If there is, a platform should not set this PE image to be page aligned. +1. The PE code section and data sections are not merged. If those 2 sections are merged, a #PF exception might be generated because the CPU might try to write a RO data item in the data section or execute a non-executable (NX) instruction in code section. +2. The PE image can be protected if it is page aligned. There should not be any self-modified-code in the code region. If there is, a platform should not set this PE image to be page aligned. A platform may disable the XD in the UEFI environment, but this does not impact the SMM environment. The SMM environment may choose to always enable the XD upon SMM entry, and restore the XD state at the SMM exit point. @@ -40,31 +71,31 @@ The IDT defines the entry point of the exception handler. If the IDT is updated, This work is done by `PatchGdtIdtMap()` at https://github.com/tianocore/edk2/blob/master/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmFuncsArch.c. -However, the IA32 version GDT cannot be set to read-only if the stack guard feature is enabled. (https://github.com/tianocore/edk2/blob/master/UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmmFuncsArch.c) The reason is that the IA32 stack guard needs to use a "_task switch_" to switch the stack, and the task switch needs to write the GDT and Task-State Segment (TSS). The X64 version of the GDT does not have such a problem because the X64 stack guard uses “_interrupt stack table (IST)_” to switch the stack. For details of the stack switch and exceptions, please refer to [[IA32SDM][1]]. +However, the IA32 version GDT cannot be set to read-only if the stack guard feature is enabled. (https://github.com/tianocore/edk2/blob/master/UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmmFuncsArch.c) The reason is that the IA32 stack guard needs to use a "_task switch_" to switch the stack, and the task switch needs to write the GDT and Task-State Segment (TSS). The X64 version of the GDT does not have such a problem because the X64 stack guard uses "_interrupt stack table (IST)_" to switch the stack. For details of the stack switch and exceptions, please refer to [[IA32SDM][1]]. ### Page Table In an X86 CPU, we rely on the page table to set up the read-only or non-executable region. In order to prevent the page table itself from being updated, we may need to set the page table itself to be read-only. The work is done at https://github.com/tianocore/edk2/blob/master/UefiCpuPkg/PiSmmCpuDxeSmm/X64/PageTbl.c `SetPageTableAttributes()`. -However, setting a page table to be read-only may break the original dynamic paging feature in SMM. There is a (PCD) ```PcdCpuSmmStaticPageTable ``` to determine if the platform wants to enable the static page table or the dynamic page table. +However, setting a page table to be read-only may break the original dynamic paging feature in SMM. There is a (PCD) `PcdCpuSmmStaticPageTable` to determine if the platform wants to enable the static page table or the dynamic page table. -If ```PcdCpuSmmStaticPageTable``` is FALSE, the PiSmmCpu uses the original dynamic paging policy, namely the the PiSmmCpu only sets 4GiB paging by default. If the PiSmmCpu needs to access above 4GiB memory locations, a page fault exception (#PF) exception is triggered and an above-4GiB mapping is created in the page fault handler. +If `PcdCpuSmmStaticPageTable` is FALSE, the PiSmmCpu uses the original dynamic paging policy, namely the the PiSmmCpu only sets 4GiB paging by default. If the PiSmmCpu needs to access above 4GiB memory locations, a page fault exception (#PF) exception is triggered and an above-4GiB mapping is created in the page fault handler. -If ```PcdCpuSmmStaticPageTable``` is TRUE, the PiSmmCpu will try to set the read-only attribute for the page table. +If `PcdCpuSmmStaticPageTable` is TRUE, the PiSmmCpu will try to set the read-only attribute for the page table. Figure 2 shows the mapping of the protection. -![](/assets/Fig2 - Mapping of Protection in SMM.jpg) +![](/media/Fig2 - Mapping of Protection in SMM.jpg) -Figure 2 Mapping of Protection in SMM +###### Figure 2 - Mapping of Protection in SMM ## Life cycle of the protection -In a normal boot, the page table based protection is configured by the PiSmmCpu driver just after the SmmReadyToLock event by ```PerformRemainingTasks()``` at https://github.com/tianocore/edk2/blob/master/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c. All read-only data must be ready before ```SmmReadyToLock```. +In a normal boot, the page table based protection is configured by the PiSmmCpu driver just after the SmmReadyToLock event by `PerformRemainingTasks()` at https://github.com/tianocore/edk2/blob/master/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c. All read-only data must be ready before `SmmReadyToLock`. -In an S3 resume, the protection is disabled during SMBASE relocation because the PiSmmCpu needs to set up the environment. The PiSmmCpu uses SmmS3Cr3, which is generated by ```InitSmmS3Cr3()``` at https://github.com/tianocore/edk2/blob/master/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmProfileArch.c with 4G paging only. After the SMBASE relocation is done, all the protection takes effect up receipt of the next SMI by ```PerformPreTasks()``` at https://github.com/tianocore/edk2/blob/master/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c. +In an S3 resume, the protection is disabled during SMBASE relocation because the PiSmmCpu needs to set up the environment. The PiSmmCpu uses SmmS3Cr3, which is generated by `InitSmmS3Cr3()` at https://github.com/tianocore/edk2/blob/master/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmProfileArch.c with 4G paging only. After the SMBASE relocation is done, all the protection takes effect up receipt of the next SMI by `PerformPreTasks()` at https://github.com/tianocore/edk2/blob/master/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c. -If there is an additional lock that needs to be set, it can be done in ```SmmCpuFeaturesCompleteSmmReadyToLock()``` API (defined in https://github.com/tianocore/edk2/blob/master/UefiCpuPkg/Include/Library/SmmCpuFeaturesLib.h). +If there is an additional lock that needs to be set, it can be done in `SmmCpuFeaturesCompleteSmmReadyToLock()` API (defined in https://github.com/tianocore/edk2/blob/master/UefiCpuPkg/Include/Library/SmmCpuFeaturesLib.h). ## SMRAM Size Overhead ### PE image @@ -80,29 +111,29 @@ In order to protect the page table itself, we must use the static page table ins The size of the dynamic paging is fixed. We need 6 fixed pages (24K) and 8 on-demand pages (32K). The total size of the page table is 56K in this case. The size of the static page table depends upon 2 things: 1) 1G paging capability, 2) max supported address bit. A rough estimation is below: -1. If 1G paging is supported, -* 32 bit addressing need (1+1+4) pages = 24K. (still use 2M paging for below 4G memory) -* 39 bit addressing need (1+1+4) pages = 24K. -* 48 bit addressing need (1+512) pages = 2M. +1. If 1G paging is supported, +* 32 bit addressing need (1+1+4) pages = 24K. (still use 2M paging for below 4G memory) +* 39 bit addressing need (1+1+4) pages = 24K. +* 48 bit addressing need (1+512) pages = 2M. * If 1G paging is not supported, 2M paging is used. -* 32 bit addressing need (1+1+4) pages = 24K. -* 39 bit addressing need (1+1+512) pages = 2M. -* 48 bit addressing need (1+512+512*512) pages = 1G. < - This seems ****not**** acceptable. +* 32 bit addressing need (1+1+4) pages = 24K. +* 39 bit addressing need (1+1+512) pages = 2M. +* 48 bit addressing need (1+512+512*512) pages = 1G. < - This seems ****not**** acceptable. -The maximum address bit is determined by the (CPU_HOB) if it is present, or the physical address bit returned by the CPUID instruction if the CPU_HOB is not present. (https://github.com/tianocore/edk2/blob/master/UefiCpuPkg/PiSmmCpuDxeSmm/X64/PageTbl.c, ```CalculateMaximumSupportAddress()```) A platform may set the CPU_HOB based upon the addressing capability of the memory controller or the CPU. +The maximum address bit is determined by the (CPU_HOB) if it is present, or the physical address bit returned by the CPUID instruction if the CPU_HOB is not present. (https://github.com/tianocore/edk2/blob/master/UefiCpuPkg/PiSmmCpuDxeSmm/X64/PageTbl.c, `CalculateMaximumSupportAddress()`) A platform may set the CPU_HOB based upon the addressing capability of the memory controller or the CPU. ## Performance Overhead -1. The SMRAM protection setup is a one-time activity. It happens just after the SmmReadyToLock event. We do not observe too much impact to the system firmware boot performance. The activity only takes some small number of milliseconds. +1. The SMRAM protection setup is a one-time activity. It happens just after the SmmReadyToLock event. We do not observe too much impact to the system firmware boot performance. The activity only takes some small number of milliseconds. -2. The SMRAM runtime protection is based upon the page table. No additional CPU instruction is needed. As such, there is zero SMM runtime performance impact to have this protection. +2. The SMRAM runtime protection is based upon the page table. No additional CPU instruction is needed. As such, there is zero SMM runtime performance impact to have this protection. ## Non SMRAM access in SMM Besides the SMRAM, the SMM memory protection also limits the access to the non-SMRAM region. First, the non-SMRAM region must be set to be non-executable because the SMM entities should not call any code outside SMRAM. Code outside of SMRAM might be controlled by malicious software. -This protection work is done by ```InitPaging()``` at https://github.com/tianocore/edk2/blob/master/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c +This protection work is done by `InitPaging()` at https://github.com/tianocore/edk2/blob/master/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c Second, because of the security concerns regarding SMM entities accessing VMM memory, [[WindowsWSMT][3]] [[Wsmt.docx][4]] and [[MicrosoftHV][5]] introduced the Windows SMM Security Mitigations Table (WSMT). A platform needs to report the WSMT table in order to declare that the SMI handler will validate the SMM communication buffer. @@ -113,13 +144,13 @@ A better way is to use an active check. The PiSmmCpu driver sets the non-fixed D As such, if a platform SMI handler does not include the check recommended in [[SecureSmmComm][6]], the system will get #PF exception within SMM on such an attack. -This protection work is done by ```SetUefiMemMapAttributes()``` at https://github.com/tianocore/edk2/blob/master/UefiCpuPkg/PiSmmCpuDxeSmm/SmmCpuMemoryManagement.c. +This protection work is done by `SetUefiMemMapAttributes()` at https://github.com/tianocore/edk2/blob/master/UefiCpuPkg/PiSmmCpuDxeSmm/SmmCpuMemoryManagement.c. Figure 3 shows final image layout. - ![](/assets/Fig3 - Page table enforced memory layout.jpg) + ![](/media/Fig3 - Page table enforced memory layout.jpg) -Figure 3 Page table enforced memory layout +###### Figure 3 - Page table enforced memory layout The assumption for non-SMRAM access in SMM is described in [[SecureSmmComm][6]]. Besides that, this solution assumes that all DRAM regions are added to the Global Coherency Domain (GCD) management before EndOfDxe, so that the UEFI memory map can return all DRAM regions. If there are more regions added to the GCD after EndOfDxe, those regions are not set to not-present in the page table. @@ -128,52 +159,41 @@ NOTE: The SMM does not set the not-present bit for the GCD **EfiGcdMemoryTypeNon ## Limitation Setting up RO and NX attribute for SMRAM is a good enhancement to prevent a code overriding attack. However it has some limitations: -1. It cannot resist a Return-Oriented-Programming (ROP) attack. [[ROP][8]]. We might need ASLR to mitigate the ROP attack. [[ASLR][7]] With the code region randomized, an attacker cannot accurately predict the location of instructions in order to leverage gadgets. -2. Not all important data structure are set to Read-Only. This is the current SMM driver limitation. The SMM driver can be updated to allocate the important structures to be read-only instead of a read-write global variable. +1. It cannot resist a Return-Oriented-Programming (ROP) attack. [[ROP][8]]. We might need ASLR to mitigate the ROP attack. [[ASLR][7]] With the code region randomized, an attacker cannot accurately predict the location of instructions in order to leverage gadgets. +2. Not all important data structure are set to Read-Only. This is the current SMM driver limitation. The SMM driver can be updated to allocate the important structures to be read-only instead of a read-write global variable. To set not-present bit for non-fixed DRAM region in SmmReadyToLock is a good enhancement to enforce the protection policy. However, it cannot cover below cases: -1. Memory Hot Plug. Take a server platform as the example, A RAS server may hot plug more DRAM during OS runtime, and rely on SMM to initialize those DRAM. This SMM Memory Initialization module may need access the DRAM for the memory test. -2. Memory Mapped IO (MMIO). Ideally, not all MMIO regions are configured to be accessible to SMM. Some MMIO BARs are important such as VTd or SPI controller. VTd BAR is important because OS need setup VTd to configuration the DMA protection. SPI controller BAR is important because BIOS SMM handler need access it to program the flash device. It should be a platform policy to configure which one should be accessible. The SMI handler must consider the case that the MMIO BAR might be modified by the malicious software and check if the MMIO BAR is in the valid region. +1. Memory Hot Plug. Take a server platform as the example, A RAS server may hot plug more DRAM during OS runtime, and rely on SMM to initialize those DRAM. This SMM Memory Initialization module may need access the DRAM for the memory test. +2. Memory Mapped IO (MMIO). Ideally, not all MMIO regions are configured to be accessible to SMM. Some MMIO BARs are important such as VTd or SPI controller. VTd BAR is important because OS need setup VTd to configuration the DMA protection. SPI controller BAR is important because BIOS SMM handler need access it to program the flash device. It should be a platform policy to configure which one should be accessible. The SMI handler must consider the case that the MMIO BAR might be modified by the malicious software and check if the MMIO BAR is in the valid region. ## Compatibility Considerations -1. So far, we have not observed self-modified-code in SMM image or executable code in data section. As such, we believe the PE image protection is compatible. +1. So far, we have not observed self-modified-code in SMM image or executable code in data section. As such, we believe the PE image protection is compatible. -2. The protection for the SMM communication buffer may cause a #PF exception in SMM if the SMI handler does not perform the check recommended in [[SecureSmmComm][6]]. +2. The protection for the SMM communication buffer may cause a #PF exception in SMM if the SMI handler does not perform the check recommended in [[SecureSmmComm][6]]. -3. Some legacy Compatibility Support Module (CSM) drivers may need co-work with SMM module. Then the SMM driver need access the legacy region. As such these memory regions should be allocated as ReservedMemory, such as BIOS data area (BDA) or extended BIOS data area (EBDA). +3. Some legacy Compatibility Support Module (CSM) drivers may need co-work with SMM module. Then the SMM driver need access the legacy region. As such these memory regions should be allocated as ReservedMemory, such as BIOS data area (BDA) or extended BIOS data area (EBDA). ## Call for action In order to support SMM memory protection, the firmware need configure SMM driver to be page aligned: -1. Override link flags below to support SMM memory protection. - ```css +1. Override link flags below to support SMM memory protection. + ``` [BuildOptions.common.EDKII.DXE_SMM_DRIVER, - BuildOptions.common.EDKII.SMM_CORE] - MSFT:*_*_*_DLINK_FLAGS = /ALIGN:4096 - GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000 - ``` + BuildOptions.common.EDKII.SMM_CORE] + MSFT:*_*_*_DLINK_FLAGS = /ALIGN:4096 + GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000 + ``` -2. Evaluate if SMRAM size is big enough. +2. Evaluate if SMRAM size is big enough. #### Summary This section introduces the memory protection in SMM. [1]: https://software.intel.com/en-us/articles/intel-sdm "IA32SDM" [2]: http://uefi.org "PI Spec" - - - [3]: https://msdn.microsoft.com/en-us/library/windows/hardware/dn495660(v=vs.85).aspx#wsmt "WindowsWSMT" - [4]: http://download.microsoft.com/download/1/8/A/18A21244-EB67-4538-BAA2-1A54E0E490B6/WSMT.docx "WindowsWSMT docx" -[5]: https://msdn.microsoft.com/en-us/library/windows/hardware/dn614617 "MicrosoftHV" -[6]: https://github.com/tianocore-docs/Docs/raw/master/White_Papers/A_Tour_Beyond_BIOS_Secure_SMM_Communication.pdf "SecureSmmComm" - - +[5]: https://msdn.microsoft.com/en-us/library/windows/hardware/dn614617 "MicrosoftHV" +[6]: https://github.com/tianocore-docs/Docs/raw/master/White_Papers/A_Tour_Beyond_BIOS_Secure_SMM_Communication.pdf "SecureSmmComm" [7]: https://en.wikipedia.org/wiki/Address_space_layout_randomization "ASLR" - [8]: https://en.wikipedia.org/wiki/Return-oriented_programming "ROP" - - - -  diff --git a/memory-protection-in-uefi.md b/memory-protection-in-uefi.md index 635e0f8..255663d 100644 --- a/memory-protection-in-uefi.md +++ b/memory-protection-in-uefi.md @@ -1,24 +1,55 @@ + + # Memory Protection in UEFI In the white paper [[MemMap][1]], we discussed to how to report the runtime memory attribute by using `EFI_MEMORY_ATTRIBUTES_TABLE`, so that OS can apply the protection for the runtime code and data. This may bring some compatibility concerns if we choose to adopt the full DEP protection for the entire UEFI memory. In order to resolve the compatibility concerns, we can define a policy-based setting to enable partial NX and RO protection for the UEFI memory region. The detailed information will be discussed below. -![](/assets/Fig4 - UEFI memory protection.jpg) - -Figure 4 - UEFI memory protection +![](/media/Fig4 - UEFI memory protection.jpg) + +###### Figure 4 - UEFI memory protection ## Protection for PE image The DXE core may apply a pre-defined policy to set up the NX attribute for the PE data region and the RO attribute for the PE code region. -1. The image is loaded by the UEFI boot service - `LoadImage()`. If an image is loaded in some other way, the DXE core does not have such knowledge and the DXE core cannot apply any protection. -2. The image section is page aligned. If an image is not page aligned, the DXE core cannot apply the page level protection. -3. The protection policy can be based upon a PCD ‘PcdImageProtectionPolicy`. (https://github.com/tianocore/edk2/blob/master/MdeModulePkg/MdeModulePkg.dec) Whenever a new image is loaded, the DxeCore checks the source of the image and then decides the policy of the protection. The policy could be to enable the protection if the sections are aligned, or disable the protection. The platform may choose the policy based upon the need. For example, if a platform thinks the image from the firmware volume should be capable of being protection, it can set protection for IMAGE_FROM_FV. But if a platform is not sure about a PCI option ROM or a file system on disk, it can set no-protection. +1. The image is loaded by the UEFI boot service - `LoadImage()`. If an image is loaded in some other way, the DXE core does not have such knowledge and the DXE core cannot apply any protection. +2. The image section is page aligned. If an image is not page aligned, the DXE core cannot apply the page level protection. +3. The protection policy can be based upon a PCD `PcdImageProtectionPolicy`. (https://github.com/tianocore/edk2/blob/master/MdeModulePkg/MdeModulePkg.dec) Whenever a new image is loaded, the DxeCore checks the source of the image and then decides the policy of the protection. The policy could be to enable the protection if the sections are aligned, or disable the protection. The platform may choose the policy based upon the need. For example, if a platform thinks the image from the firmware volume should be capable of being protection, it can set protection for IMAGE_FROM_FV. But if a platform is not sure about a PCI option ROM or a file system on disk, it can set no-protection. There are assumptions for the PE image protection in UEFI: -1. [Same as SMM] The PE code section and data sections are not merged. If those 2 sections are merged, a #PF exception might be generated because the CPU may try to write a RO data in data section or execute a NX instruction in the code section. -2. [Same as SMM] The PE image can be protected if it is page aligned. There should not be any self-modifying-code in the code region. If there is, a platform should not set this PE image to be page aligned. -3. A platform may not disable the XD in the DXE phase. If a platform disables the XD in the DXE phase, the X86 page table will become invalid because the XD bit in page table becomes a RESERVED bit. The consequence is that a #PF exception will be generated. If a platform wants to disable the XD bit, it must happen in the PEI phase. +1. [Same as SMM] The PE code section and data sections are not merged. If those 2 sections are merged, a #PF exception might be generated because the CPU may try to write a RO data in data section or execute a NX instruction in the code section. +2. [Same as SMM] The PE image can be protected if it is page aligned. There should not be any self-modifying-code in the code region. If there is, a platform should not set this PE image to be page aligned. +3. A platform may not disable the XD in the DXE phase. If a platform disables the XD in the DXE phase, the X86 page table will become invalid because the XD bit in page table becomes a RESERVED bit. The consequence is that a #PF exception will be generated. If a platform wants to disable the XD bit, it must happen in the PEI phase. In EDK II, the DXE core image services calls `ProtectUefiImage()` on image load and `UnprotectUefiImage()` on image unload. (https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Core/Dxe/Image/Image.c) Then `ProtectUefiImageCommon()` (https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c) calls `GetUefiImageProtectionPolicy()` to check the image source and protection policy and parses PE alignment. If all checks pass, `SetUefiImageProtectionAttributes()` calls `SetUefiImageMemoryAttributes()`. Finally, `gCpu->SetMemoryAttribute()` sets **EFI_MEMORY_XP** or **EFI_MEMORY_RO** for the new loaded image , or clears the protection for the old unloaded image. When the CPU driver gets the memory attribute setting request, it updates page table. @@ -26,22 +57,22 @@ The X86 CPU driver https://github.com/tianocore/edk2/blob/master/UefiCpuPkg/CpuD The ARM CPU driver https://github.com/tianocore/edk2/blob/master/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c `CpuSetMemoryAttributes()` also has similar capability. -If an image is loaded before CPU_ARCH protocol is ready, the DXE core just skips the setting. Later these images protection will be set in CPU_ARCH callback function – `MemoryProtectionCpuArchProtocolNotify() `(https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c). +If an image is loaded before CPU_ARCH protocol is ready, the DXE core just skips the setting. Later these images protection will be set in CPU_ARCH callback function - `MemoryProtectionCpuArchProtocolNotify()`(https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c). In `ExitBootServices` event, `MemoryProtectionExitBootServicesCallback() `(https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c) is invoked to unprotect the runtime image, because the runtime image code relocation need write code segment at `SetVirtualAddressMap()`. ## Protection for stack and heap -[[UEFI][2]] specification allows ->"Stack may be marked as non-executable in identity mapped page tables." +[[UEFI][2]] specification allows +>"Stack may be marked as non-executable in identity mapped page tables." As such, we set up the NX stack (https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Core/DxeIplPeim/X64/VirtualMemory.c, `CreateIdentityMappingPageTables()`). -The heap protection is based upon the policy, because we already observed some unexpected usage in [[MemMap][1]] white paper. A platform needs to configure a PCD `PcdDxeNxMemoryProtectionPolicy` +The heap protection is based upon the policy, because we already observed some unexpected usage in [[MemMap][1]] white paper. A platform needs to configure a PCD `PcdDxeNxMemoryProtectionPolicy` (https://github.com/tianocore/edk2/blob/master/MdeModulePkg/MdeModulePkg.dec) to indicate which type of memory can be set to NX in the page table. The DxeCore `ApplyMemoryProtectionPolicy()` (https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c) consumes the PCD after the memory allocation service and sets NX attribute for the allocated memory by using CPU_ARCH protocol. -Before CPU_ARCH protocol is ready, the protection takes no effect. In CPU_ARCH callback function – `MemoryProtectionCpuArchProtocolNotify() `(https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c), the `InitializeDxeNxMemoryProtectionPolicy()` is called to get current memory map and setup the NX protection. +Before CPU_ARCH protocol is ready, the protection takes no effect. In CPU_ARCH callback function - `MemoryProtectionCpuArchProtocolNotify() `(https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c), the `InitializeDxeNxMemoryProtectionPolicy()` is called to get current memory map and setup the NX protection. In addition, we may use some special techniques, such as the guard page, to apply the protection for the allocated memory in order to detect a buffer overflow. This is discussed in [[SecurityEnhancement][3]] white paper. @@ -58,10 +89,10 @@ The UEFI firmware does not own page tables after `ExitBootServices()`, so the OS ## Size Overhead -1. Runtime memory overhead (visible to OS) -: The size overhead of the runtime PE image is the same as the overhead of the SMM PE image. If a platform has n runtime images, the average amount overhead is `6K * n`. -2. Boot time memory overhead (invisible to OS) -: The size of the overhead for the boot time PE image is the same as the overhead of the SMM PE image. If a platform has n boot time images, the average overhead is `6K * n`. +1. Runtime memory overhead (visible to OS) +: The size overhead of the runtime PE image is the same as the overhead of the SMM PE image. If a platform has n runtime images, the average amount overhead is `6K * n`. +2. Boot time memory overhead (invisible to OS) +: The size of the overhead for the boot time PE image is the same as the overhead of the SMM PE image. If a platform has n boot time images, the average overhead is `6K * n`. If the NX protection for data is enabled, the size of the page table is increased because we need set fine granularity page level protection. @@ -70,10 +101,10 @@ The size overhead of the boot time page table is also same as for the SMM static ## Limitation The protection in the UEFI is limited to the PE image and the stack at this moment because of the compatibility concerns. The limitations of the UEFI memory protection are: -1. Not all images are protected to be NX and RO. The protection is based upon the policy. -2. Not all heap regions are protected to be NX due to the compatibility concern. We observed that both Windows boot loader and Linux boot loader may use the LoaderData type for the code. The heap protection is based upon the policy. -3. [Same as SMM] The protection cannot resist ROP attack. -4. [Same as SMM] Not all important data structures are set to ReadOnly. +1. Not all images are protected to be NX and RO. The protection is based upon the policy. +2. Not all heap regions are protected to be NX due to the compatibility concern. We observed that both Windows boot loader and Linux boot loader may use the LoaderData type for the code. The heap protection is based upon the policy. +3. [Same as SMM] The protection cannot resist ROP attack. +4. [Same as SMM] Not all important data structures are set to ReadOnly. ## Compatibility Consideration A platform may need to evaluate and select the image protection policy based upon the capability of the platform image, Option ROM, and OS loader. For platform images, the Compatibility Support Module (CSM) and the EDK-I Compatibility Package (ECP) modules should be considered. If a platform observes the compatibility issues, it should choose 1) to disable the protection, or 2) to fix the compatibility issue and enable the protection. @@ -81,36 +112,31 @@ A platform may need to evaluate and select the image protection policy based upo ## Call for action In order to support UEFI memory protection, the firmware need configure UEFI driver to be page aligned: -1. Override link flags below to support UEFI runtime attribute table, so that OS can protect the runtime memory. -```css +1. Override link flags below to support UEFI runtime attribute table, so that OS can protect the runtime memory. +``` [BuildOptions.IA32.EDKII.DXE_RUNTIME_DRIVER, BuildOptions.X64.EDKII.DXE_RUNTIME_DRIVER] -MSFT:*_*_*_DLINK_FLAGS = /ALIGN:4096 +MSFT:*_*_*_DLINK_FLAGS = /ALIGN:4096 GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000 ``` -2. Override link flags below to support UEFI memory protection. -```css -[BuildOptions.common.EDKII.DXE_DRIVER, -BuildOptions.common.EDKII.DXE_CORE, +2. Override link flags below to support UEFI memory protection. +``` +[BuildOptions.common.EDKII.DXE_DRIVER, +BuildOptions.common.EDKII.DXE_CORE, BuildOptions.common.EDKII.UEFI_DRIVER, BuildOptions.common.EDKII.UEFI_APPLICATION] -MSFT:*_*_*_DLINK_FLAGS = /ALIGN:4096 +MSFT:*_*_*_DLINK_FLAGS = /ALIGN:4096 GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000 ``` -3. Evaluate if the UEFI memory size is big enough to hold the split page table. +3. Evaluate if the UEFI memory size is big enough to hold the split page table. -4. Evaluate if the DXE image can be protected. +4. Evaluate if the DXE image can be protected. -5. Set proper `gEfiMdeModulePkgTokenSpaceGuid.PcdImageProtectionPolicy`. - -6. Set proper `gEfiMdeModulePkgTokenSpaceGuid.PcdDxeNxMemoryProtectionPolicy`. +5. Set proper `gEfiMdeModulePkgTokenSpaceGuid.PcdImageProtectionPolicy`. +6. Set proper `gEfiMdeModulePkgTokenSpaceGuid.PcdDxeNxMemoryProtectionPolicy`. #### Summary This section introduces the memory protection in UEFI. [1]: https://github.com/tianocore-docs/Docs/raw/master/White_Papers/A_Tour_Beyond_BIOS_Memory_Map_And_Practices_in_UEFI_BIOS_V2.pdf "MemMap" - - [2]: http://uefi.org "UEFI" - - [3]: https://github.com/tianocore-docs/Docs/raw/master/White_Papers/A_Tour_Beyond_BIOS_Securiy_Enhancement_to_Mitigate_Buffer_Overflow_in_UEFI.pdf "Security Enhancment" \ No newline at end of file diff --git a/references.md b/references.md index 23894e0..c9ffab7 100644 --- a/references.md +++ b/references.md @@ -1,10 +1,41 @@ + + # References [ASLR] Address Space Layout Randmization, https://en.wikipedia.org/wiki/Address_space_layout_randomization -[DEP] Exploit Mitigation Improvements in Windows 8, Ken Johnson, Ma, Miller, http://media.blackhat.com/bh-us-12/Briefings/M_Miller/BH_US_12_Miller_Exploit_Mitigation_Slides.pdf +[DEP] Exploit Mitigation Improvements in Windows 8, Ken Johnson, Ma, Miller, http://media.blackhat.com/bh-us-12/Briefings/M_Miller/BH_US_12_Miller_Exploit_Mitigation_Slides.pdf -[IA32SDM] Intel® 64 and IA-32 Architectures Software Developer’s Manual, www.intel.com https://software.intel.com/en-us/articles/intel-sdm +[IA32SDM] Intel(R) 64 and IA-32 Architectures Software Developer's Manual, www.intel.com https://software.intel.com/en-us/articles/intel-sdm [MemMap] A Tour Beyond BIOS Memory Map And Practices in UEFI BIOS, Jiewen Yao, Vincent Zimmer, 2016 https://github.com/tianocore-docs/Docs/raw/master/White_Papers/A_Tour_Beyond_BIOS_Memory_Map_And_Practices_in_UEFI_BIOS_V2.pdf @@ -12,25 +43,22 @@ [ROP] Return-oriented programming, https://en.wikipedia.org/wiki/Return-oriented_programming -[SecureSmmComm] A Tour Beyond BIOS Secure SMM Communication, Jiewen Yao, Vincent Zimmer, Star Zeng, 2016, https://github.com/tianocore-docs/Docs/raw/master/White_Papers/A_Tour_Beyond_BIOS_Secure_SMM_Communication.pdf +[SecureSmmComm] A Tour Beyond BIOS Secure SMM Communication, Jiewen Yao, Vincent Zimmer, Star Zeng, 2016, https://github.com/tianocore-docs/Docs/raw/master/White_Papers/A_Tour_Beyond_BIOS_Secure_SMM_Communication.pdf [SecurityEnhancement] A Tour Beyond BIOS Securiy Enhancement to Mitigate Buffer Overflow in UEFI, Jiewen Yao, Vincent Zimmer, 2016, https://github.com/tianocore-docs/Docs/raw/master/White_Papers/A_Tour_Beyond_BIOS_Securiy_Enhancement_to_Mitigate_Buffer_Overflow_in_UEFI.pdf [SecurityDesign] A Tour Beyond BIOS Security Design Guide in EDK II, Jiewen Yao, Vincent Zimmer, 2016, https://github.com/tianocore-docs/Docs/raw/master/White_Papers/A_Tour_Beyond_BIOS_Security_Design_Guide_in_EDK_II.pdf -[UEFI] Unified Extensible Firmware Interface (UEFI) Specification, Version 2.6 -www.uefi.org +[UEFI] Unified Extensible Firmware Interface (UEFI) Specification, Version 2.6 +www.uefi.org -[VTd] Intel® Virtualization Technology for Directed I/O: Spec, http://www.intel.com/content/www/us/en/embedded/technology/virtualization/vt-directed-io-spec.html +[VTd] Intel(R) Virtualization Technology for Directed I/O: Spec, http://www.intel.com/content/www/us/en/embedded/technology/virtualization/vt-directed-io-spec.html [WindowsHeap] Preventing the exploitation of user mode heap corruption vulnerabilities, 2009, https://blogs.technet.microsoft.com/srd/2009/08/04/preventing-the-exploitation-of-user-mode-heap-corruption-vulnerabilities/ [WindowsInternal] Windows Internals, 6th edition, Mark E. Russinovich, David A. Solomon, Alex Ionescu, 2012, Microsoft Press. ISBN-13: 978-0735648739/978-0735665873 [WindowsWSMT] Windows SMM Security Table, https://msdn.microsoft.com/en-us/library/windows/hardware/dn495660(v=vs.85).aspx#wsmt -http://download.microsoft.com/download/1/8/A/18A21244-EB67-4538-BAA2-1A54E0E490B6/WSMT.docx - -[MicrosoftHV] Microsoft Hypervisor Requirements, https://msdn.microsoft.com/en-us/library/windows/hardware/dn614617 - +http://download.microsoft.com/download/1/8/A/18A21244-EB67-4538-BAA2-1A54E0E490B6/WSMT.docx -  +[MicrosoftHV] Microsoft Hypervisor Requirements, https://msdn.microsoft.com/en-us/library/windows/hardware/dn614617 -- 2.29.2.windows.2