2015-08-03 07:26:01 +02:00
|
|
|
## @file
|
|
|
|
# Platform BDS customizations library.
|
|
|
|
#
|
2018-06-29 05:30:22 +02:00
|
|
|
# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
|
2015-08-03 07:26:01 +02:00
|
|
|
# This program and the accompanying materials
|
|
|
|
# are licensed and made available under the terms and conditions of the BSD License
|
|
|
|
# which accompanies this distribution. The full text of the license may be found at
|
|
|
|
# http://opensource.org/licenses/bsd-license.php
|
|
|
|
#
|
|
|
|
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
|
|
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
|
|
#
|
|
|
|
##
|
|
|
|
|
|
|
|
[Defines]
|
|
|
|
INF_VERSION = 0x00010005
|
2016-04-20 09:46:46 +02:00
|
|
|
BASE_NAME = PlatformBootManagerLib
|
2015-08-03 07:26:01 +02:00
|
|
|
FILE_GUID = FB65006C-AC9F-4992-AD80-184B2BDBBD83
|
|
|
|
MODULE_TYPE = DXE_DRIVER
|
|
|
|
VERSION_STRING = 1.0
|
2016-04-20 09:46:46 +02:00
|
|
|
LIBRARY_CLASS = PlatformBootManagerLib|DXE_DRIVER
|
2015-08-03 07:26:01 +02:00
|
|
|
|
|
|
|
#
|
|
|
|
# The following information is for reference only and not required by the build tools.
|
|
|
|
#
|
2018-06-29 05:30:22 +02:00
|
|
|
# VALID_ARCHITECTURES = IA32 X64 EBC
|
2015-08-03 07:26:01 +02:00
|
|
|
#
|
|
|
|
|
|
|
|
[Sources]
|
|
|
|
BdsPlatform.c
|
|
|
|
PlatformData.c
|
|
|
|
QemuKernel.c
|
|
|
|
BdsPlatform.h
|
|
|
|
|
|
|
|
[Packages]
|
|
|
|
MdePkg/MdePkg.dec
|
|
|
|
MdeModulePkg/MdeModulePkg.dec
|
|
|
|
IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec
|
2016-12-23 01:49:05 +01:00
|
|
|
SourceLevelDebugPkg/SourceLevelDebugPkg.dec
|
2015-08-03 07:26:01 +02:00
|
|
|
OvmfPkg/OvmfPkg.dec
|
OvmfPkg/PlatformBootManagerLib: process TPM PPI request
Call Tcg2PhysicalPresenceLibProcessRequest() to process pending PPI
requests from PlatformBootManagerAfterConsole().
Laszlo understanding of edk2 is that the PPI operation processing was
meant to occur *entirely* before End-Of-Dxe, so that 3rd party UEFI
drivers couldn't interfere with PPI opcode processing *at all*.
He suggested that we should *not* call
Tcg2PhysicalPresenceLibProcessRequest() from BeforeConsole(). Because,
an "auth" console, i.e. one that does not depend on a 3rd party
driver, is *in general* impossible to guarantee. Instead we could opt
to trust 3rd party drivers, and use the "normal" console(s) in
AfterConsole(), in order to let the user confirm the PPI requests. It
will depend on the user to enable Secure Boot, so that the
trustworthiness of those 3rd party drivers is ensured. If an attacker
roots the guest OS from within, queues some TPM2 PPI requests, and
also modifies drivers on the EFI system partition and/or in GPU option
ROMs (?), then those drivers will not load after guest reboot, and
thus the dependent console(s) won't be used for confirming the PPI
requests.
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2018-05-18 14:23:04 +02:00
|
|
|
SecurityPkg/SecurityPkg.dec
|
2015-08-03 07:26:01 +02:00
|
|
|
|
|
|
|
[LibraryClasses]
|
|
|
|
BaseLib
|
|
|
|
MemoryAllocationLib
|
|
|
|
UefiBootServicesTableLib
|
|
|
|
BaseMemoryLib
|
|
|
|
DebugLib
|
|
|
|
PcdLib
|
2016-04-20 11:20:31 +02:00
|
|
|
UefiBootManagerLib
|
2016-05-25 13:08:15 +02:00
|
|
|
BootLogoLib
|
2016-04-20 11:24:38 +02:00
|
|
|
DevicePathLib
|
2015-08-03 07:26:01 +02:00
|
|
|
PciLib
|
|
|
|
NvVarsFileLib
|
|
|
|
QemuFwCfgLib
|
2017-02-22 03:47:18 +01:00
|
|
|
QemuFwCfgS3Lib
|
2015-08-03 07:26:01 +02:00
|
|
|
LoadLinuxLib
|
|
|
|
QemuBootOrderLib
|
2018-05-22 15:46:51 +02:00
|
|
|
ReportStatusCodeLib
|
2015-08-03 07:26:01 +02:00
|
|
|
UefiLib
|
2019-02-20 01:08:58 +01:00
|
|
|
PlatformBmPrintScLib
|
OvmfPkg/PlatformBootManagerLib: process TPM PPI request
Call Tcg2PhysicalPresenceLibProcessRequest() to process pending PPI
requests from PlatformBootManagerAfterConsole().
Laszlo understanding of edk2 is that the PPI operation processing was
meant to occur *entirely* before End-Of-Dxe, so that 3rd party UEFI
drivers couldn't interfere with PPI opcode processing *at all*.
He suggested that we should *not* call
Tcg2PhysicalPresenceLibProcessRequest() from BeforeConsole(). Because,
an "auth" console, i.e. one that does not depend on a 3rd party
driver, is *in general* impossible to guarantee. Instead we could opt
to trust 3rd party drivers, and use the "normal" console(s) in
AfterConsole(), in order to let the user confirm the PPI requests. It
will depend on the user to enable Secure Boot, so that the
trustworthiness of those 3rd party drivers is ensured. If an attacker
roots the guest OS from within, queues some TPM2 PPI requests, and
also modifies drivers on the EFI system partition and/or in GPU option
ROMs (?), then those drivers will not load after guest reboot, and
thus the dependent console(s) won't be used for confirming the PPI
requests.
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2018-05-18 14:23:04 +02:00
|
|
|
Tcg2PhysicalPresenceLib
|
2015-08-03 07:26:01 +02:00
|
|
|
|
|
|
|
[Pcd]
|
|
|
|
gUefiOvmfPkgTokenSpaceGuid.PcdEmuVariableEvent
|
|
|
|
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashVariablesEnable
|
|
|
|
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId
|
2016-04-20 11:44:26 +02:00
|
|
|
gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut
|
2016-04-20 11:49:15 +02:00
|
|
|
gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdShellFile
|
2015-08-03 07:26:01 +02:00
|
|
|
|
|
|
|
[Pcd.IA32, Pcd.X64]
|
|
|
|
gEfiMdePkgTokenSpaceGuid.PcdFSBClock
|
|
|
|
|
|
|
|
[Protocols]
|
|
|
|
gEfiDecompressProtocolGuid
|
|
|
|
gEfiPciRootBridgeIoProtocolGuid
|
|
|
|
gEfiS3SaveStateProtocolGuid # PROTOCOL SOMETIMES_CONSUMED
|
|
|
|
gEfiDxeSmmReadyToLockProtocolGuid # PROTOCOL SOMETIMES_PRODUCED
|
2016-04-20 11:49:15 +02:00
|
|
|
gEfiLoadedImageProtocolGuid # PROTOCOL SOMETIMES_PRODUCED
|
2016-07-08 02:49:45 +02:00
|
|
|
gEfiFirmwareVolume2ProtocolGuid # PROTOCOL SOMETIMES_CONSUMED
|
2015-08-03 07:26:01 +02:00
|
|
|
|
|
|
|
[Guids]
|
2016-06-01 12:26:20 +02:00
|
|
|
gEfiXenInfoGuid
|
2015-08-03 07:26:01 +02:00
|
|
|
gEfiEndOfDxeEventGroupGuid
|
|
|
|
gRootBridgesConnectedEventGroupGuid
|