Acidanthera UEFI Development Kit based on EDK II edk2-stable202311
Go to file
Laszlo Ersek 1fea9ddb4e OvmfPkg: execute option ROM images regardless of Secure Boot
Change the image verification policy for option ROM images to 0x00
(ALWAYS_EXECUTE).

While this may not be a good idea for physical platforms (see e.g.
<https://trmm.net/Thunderstrike>), on the QEMU platform the benefits seem
to outweigh the drawbacks:

- For QEMU's virtual PCI devices, and for some assigned PCI devices, the
  option ROMs come from host-side files, which can never be rewritten from
  within the guest. Since the host admin has full control over a guest
  anyway, executing option ROMs that originate from host-side files
  presents no additional threat to the guest.

- For assigned physical PCI devices with option ROMs, the argument is not
  so clear-cut. In theory a setup could exist where:

  - the host-side UEFI firmware (with DENY_EXECUTE_ON_SECURITY_VIOLATION)
    rejects the option ROM of a malicious physical PCI device, but

  - when the device is assigned to the guest, OVMF executes the option ROM
    in the guest,

  - the option ROM breaks out of the guest (using an assumed QEMU
    vulnerability) and gains QEMU user privileges on the host.

  However, in order to escalate as far as it would happen on the bare
  metal with ALWAYS_EXECUTE (i.e., in order to gain firmware-level access
  on the host), the malicious option ROM would have to break through (1)
  QEMU, (2) traditional UID and GID based privilege separation on the
  host, (3) sVirt (SELinux) on the host, (4) the host OS - host firmware
  boundary. This is not impossible, but not likely enough to discourage
  the use cases below.

- This patch makes it possible to use unsigned iPXE network drivers that
  QEMU presents in the option ROMs of virtual NICs and assigned SR-IOV
  VFs, even if Secure Boot is in User Mode or Deployed Mode.

- The change also makes it possible to execute unsigned, outdated
  (revoked), or downright malicious option ROMs of assigned physical
  devices in guests, for corporate, entertainment, academia, or security
  research purposes.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Chao Zhang <chao.b.zhang@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Chao Zhang <chao.b.zhang@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19614 6f19259b-4bc3-4df7-8a09-765794883524
2016-01-07 18:48:17 +00:00
AppPkg AppPkg/.../Python: Clean up and document how to escape the -# option. 2016-01-06 01:00:19 +00:00
ArmPkg ArmPkg/ArmSoftfloatLib: add missing entry points for RVCT 2015-12-17 16:29:23 +00:00
ArmPlatformPkg ArmVExpressPkg/ArmVExpress-FVP-AArch64: run GICv3 in v3 mode 2015-12-15 13:08:56 +00:00
ArmVirtPkg ArmVirtPkg/ArmVirtXen: add ARM support 2015-12-17 17:11:33 +00:00
BaseTools BaseTools: Fix 'caculate' typos 2016-01-06 01:13:35 +00:00
BeagleBoardPkg BeagleBoardPkg: remove ArmPlatformGlobalVariableLib resolution 2015-11-27 17:05:24 +00:00
Conf
CorebootModulePkg CorebootModulePkg:Removing EFI_RESOURCE_ATTRIBUTE_TESTED 2015-08-18 16:08:22 +00:00
CorebootPayloadPkg CorebootPayloadPkg PlatformHookLib: Fix GCC build failure 2015-11-30 21:11:29 +00:00
CryptoPkg CryptoPkg: fix build support under RVCT 2015-12-17 17:02:06 +00:00
DuetPkg DuetPkg: Fix GCC error to avoid the duplicated global variable in SmbiosGenDxe 2015-12-18 02:29:12 +00:00
EdkCompatibilityPkg EdkCompatibilityPkg: Fix GCC error to avoid the duplicated global variables 2015-12-18 02:28:18 +00:00
EdkShellBinPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
EdkShellPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
EmbeddedPkg EmbeddedPkg: Convert all .uni files to utf-8 2015-12-15 04:51:40 +00:00
EmulatorPkg EmulatorPkg: Convert all .uni files to utf-8 2015-12-15 04:51:49 +00:00
FatBinPkg FatBinPkg: Update EBC/IA32/X64/IPF binaries 2015-08-28 03:14:25 +00:00
IntelFrameworkModulePkg IntelFrameworkModulePkg: Remove the undefined PCD help and prompt strings 2015-12-24 02:31:25 +00:00
IntelFrameworkPkg IntelFrameworkPkg: Convert all .uni files to utf-8 2015-12-15 04:52:47 +00:00
IntelFspPkg Handle extra module patchable PCD variable in Linux map. 2015-09-06 22:36:43 +00:00
IntelFspWrapperPkg Fix >4G issue on IDT not restored correctly. 2015-12-15 04:27:00 +00:00
MdeModulePkg MdeModulePkg/ScsiDisk: Increase the value of SCSI_DISK_TIMEOUT to 30s 2016-01-07 07:03:54 +00:00
MdePkg MdePkg/BaseLib: do not rely on undefined behavior in arithmetic shift 2015-12-31 10:47:22 +00:00
NetworkPkg NetworkPkg: DnsDxe: fix return type of DnsFillinQNameForQueryIp() 2016-01-06 12:34:46 +00:00
Nt32Pkg Nt32Pkg/WinNtSimpleFileSystemDxe: Fix memory leak 2015-12-24 06:30:55 +00:00
Omap35xxPkg Omap35xxPkg SerialPortLib: Implement Get(Set)Control/SetAttributes 2015-11-26 08:49:53 +00:00
OptionRomPkg OptionRomPkg: Remove redundant included header file defintion in Ax88772.h and Ax88772b.h files 2015-07-08 02:56:54 +00:00
OvmfPkg OvmfPkg: execute option ROM images regardless of Secure Boot 2016-01-07 18:48:17 +00:00
PcAtChipsetPkg PcAtChipsetPkg/PcRtc: Modify INF file content to follow INF spec 2015-12-24 06:36:57 +00:00
PerformancePkg PerformancePkg: Convert all .uni files to utf-8 2015-12-15 04:57:45 +00:00
QuarkPlatformPkg QuarkPlatformPkg/PlatformSecLib: Sync Flat32.S with Flat32.asm 2015-12-16 17:34:23 +00:00
QuarkSocPkg QuarkSocPkg: Add new package for Quark SoC X1000 2015-12-15 19:22:23 +00:00
SecurityPkg SecurityPkg Tcg2Pei: Fix a typo in function description 2016-01-06 01:12:48 +00:00
ShellBinPkg ShellBinPkg: Ia32/X64 Shell binary update. 2015-12-25 04:20:28 +00:00
ShellPkg Revert "ShellPkg : Add UEFI_APPLICATION module type to UefiShellInstall1CommandsLib.inf" 2016-01-06 16:23:20 +00:00
SourceLevelDebugPkg SourceLevelDebugPkg: Correct gEfiDebugAgentGuid usage in DxeDebugAgentLib 2015-12-17 08:29:58 +00:00
StdLib StdLib: Fix IIO_Write() to return the number of bytes consumed, not characters output. 2016-01-06 00:44:24 +00:00
StdLibPrivateInternalFiles StdLib: Clarify and improve comments. 2016-01-06 00:31:42 +00:00
UefiCpuPkg UefiCpuPkg: Add the missing module uni for CpuS3DataDxe 2015-12-24 02:30:43 +00:00
UnixPkg
Vlv2DeviceRefCodePkg Vlv2TbltDevicePkg/Vlv2DeviceRefCodePkg: 2015-11-10 07:47:29 +00:00
Vlv2TbltDevicePkg Vlv2TbltDevicePkg: Convert all .uni files to utf-8 2015-12-15 04:59:37 +00:00
.gitignore
BuildNotes2.txt
Edk2Setup.bat BaseTools: Update Edk2Setup.bat to support multiple workspaces 2015-10-08 09:29:36 +00:00
Maintainers.txt Maintainers.txt: Update maintainers for Quark*Pkg 2015-12-17 07:33:33 +00:00
edksetup.bat BaseTools: Add VS2015 tool chain in tools_def.template 2015-12-03 03:19:01 +00:00
edksetup.sh BaseTools: Update edksetup.sh to support multiple workspaces 2015-10-08 09:29:56 +00:00