Skip to content

Memory Protection

For in-depth technical details on Memory Protection in Project Mu, see feature_memory_protection.md

Memory protections are important because Unified Extensible Firmware Interface (UEFI) standard accounts for the firmware design implemented in 80 to 90 percent of the of PCs and servers sold worldwide. Developed and supported by more than 250 industry-leading companies, UEFI firmware is responsible for booting and securing billions of devices spanning device classes from embedded applications to multi-role server systems.

While considerable attention has been devoted to hardware trust anchors and operating system security, attackers have discovered that UEFI firmware is lacking basic memory protections that have been present in other system software for over a decade. Coupled with the inconsistency of security capabilities inherit to vendor firmware implementations, UEFI firmware has become an increasingly attractive system attack vector.

QemuQ35Pkg and QemuSbsaPkg allow experimentation with the memory protections being offered in physical platforms.

Memory protections are ON by default on Q35 and SBSA. To disable memory protection add BLD_*_MEMORY_PROTECTION=FALSE to your stuart_build command. Example:

stuart_build -c .\Platforms\<Platform>\PlatformBuild.py BLD_*_MEMORY_PROTECTION=FALSE --FlashRom

Because MEMORY_PROTECTION is a build flag, the platform will need to be rebuilt for a change to the value to take effect (meaning --FlashOnly will not work).