Acidanthera UEFI Development Kit based on EDK II edk2-stable202311
Go to file
Hao Wu 02f7fd158e UefiCpuPkg/PiSmmCpuDxeSmm: [CVE-2017-5715] Stuff RSB before RSM
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1093

Return Stack Buffer (RSB) is used to predict the target of RET
instructions. When the RSB underflows, some processors may fall back to
using branch predictors. This might impact software using the retpoline
mitigation strategy on those processors.

This commit will add RSB stuffing logic before returning from SMM (the RSM
instruction) to avoid interfering with non-SMM usage of the retpoline
technique.

After the stuffing, RSB entries will contain a trap like:

@SpecTrap:
    pause
    lfence
    jmp     @SpecTrap

A more detailed explanation of the purpose of commit is under the
'Branch target injection mitigation' section of the below link:
https://software.intel.com/security-software-guidance/insights/host-firmware-speculative-execution-side-channel-mitigation

Please note that this commit requires further actions (BZ 1091) to remove
the duplicated 'StuffRsb.inc' files and merge them into one under a
UefiCpuPkg package-level directory (such as UefiCpuPkg/Include/).

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1091

Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Acked-by: Laszlo Ersek <lersek@redhat.com>
Regression-tested-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Eric Dong <eric.dong@intel.com>
2018-08-21 16:10:42 +08:00
AppPkg AppPkg: Removing ipf which is no longer supported from edk2. 2018-06-29 16:19:35 +08:00
ArmPkg ArmPkg/GenericWatchdogDxe: Split 64bit register write to 2x32bit 2018-08-03 09:29:14 +02:00
ArmPlatformPkg ArmPlatformPkg: Removing ipf which is no longer supported from edk2. 2018-06-29 16:19:36 +08:00
ArmVirtPkg ArmVirtPkg/PlatformBDS: Implement PlatformBootManagerUnableToBoot 2018-07-27 15:47:55 +08:00
BaseTools BaseTools: Fix regression issue by b23414f654 2018-08-21 14:08:24 +08:00
BeagleBoardPkg BeagleBoardPkg: Removing ipf which is no longer supported from edk2. 2018-06-29 16:19:37 +08:00
Conf
CorebootModulePkg CorebootModulePkg: Removing ipf from edk2. 2018-08-14 08:58:28 +08:00
CorebootPayloadPkg CorebootPayloadPkg: Removing ipf from edk2. 2018-08-14 08:58:29 +08:00
CryptoPkg CryptoPkg: Clean up source files 2018-06-28 11:19:40 +08:00
DuetPkg DuetPkg: Removing ipf which is no longer supported from edk2. 2018-06-29 16:19:38 +08:00
EdkCompatibilityPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
EdkShellBinPkg EdkShellBinPkg: Removing ipf which is no longer supported from edk2. 2018-06-29 16:19:38 +08:00
EdkShellPkg EdkShellPkg: Removing ipf which is no longer supported from edk2. 2018-06-29 16:19:42 +08:00
EmbeddedPkg EmbeddedPkg: Removing ipf which is no longer supported from edk2. 2018-06-29 16:19:43 +08:00
EmulatorPkg EmulatorPkg/SmbiosLib: Declare the correct library class. 2018-05-24 13:33:56 -07:00
FatBinPkg FatBinPkg: Clean up source files 2018-06-28 11:19:41 +08:00
FatPkg FatPkg: Clean up source files 2018-06-28 11:19:41 +08:00
FmpDevicePkg FmpDevicePkg FmpDxe: Lock variables in entrypoint instead of callback 2018-08-08 19:18:29 +08:00
IntelFrameworkModulePkg IntelFrameworkModulePkg/Csm: Set CSM memory executable 2018-08-16 11:38:29 +08:00
IntelFrameworkPkg IntelFrameworkPkg/FrameworkUefiLib: introduce EfiOpenFileByDevicePath() 2018-08-16 20:02:46 +02:00
IntelFsp2Pkg IntelFsp2Pkg: Clean up source files 2018-06-28 11:19:43 +08:00
IntelFsp2WrapperPkg IntelFsp2WrapperPkg: Clean up source files 2018-06-28 11:19:44 +08:00
IntelFspPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
IntelFspWrapperPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
IntelSiliconPkg IntelSiliconPkg: Clean up source files 2018-06-28 11:19:44 +08:00
MdeModulePkg MdeModulePkg: Remove redundant library classes and GUIDs 2018-08-20 14:53:45 +08:00
MdePkg MdePkg/UefiLib: introduce EfiOpenFileByDevicePath() 2018-08-16 20:02:39 +02:00
NetworkPkg NetworkPkg/TlsAuthConfigDxe: replace OpenFileByDevicePath() with UefiLib API 2018-08-16 20:02:50 +02:00
Nt32Pkg Nt32Pkg/PlatformBDS: Implement PlatformBootManagerUnableToBoot 2018-07-27 15:47:53 +08:00
Omap35xxPkg Omap35xxPkg: Removing ipf which is no longer supported from edk2. 2018-06-29 16:19:46 +08:00
OptionRomPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
OvmfPkg OvmfPkg: link Sha384 and Sha512 support into Tcg2Pei and Tcg2Dxe 2018-08-16 20:32:52 +02:00
PcAtChipsetPkg PcAtChipsetPkg: Clean up source files 2018-06-28 11:19:49 +08:00
QuarkPlatformPkg QuarkPlatformPkg: Removing ipf which is no longer supported from edk2. 2018-08-14 08:58:30 +08:00
QuarkSocPkg QuarkSocPkg: Removing ipf which is no longer supported from edk2. 2018-08-14 08:58:32 +08:00
SecurityPkg SecurityPkg/SecureBootConfigDxe: replace OpenFileByDevicePath() with UefiLib API 2018-08-16 20:02:50 +02:00
ShellBinPkg ShellBinPkg: Clean up source files 2018-06-28 11:19:51 +08:00
ShellPkg ShellPkg/edit: Fix heap access out-of-bounds 2018-08-20 14:41:01 +08:00
SignedCapsulePkg SignedCapsulePkg: Remove redundant things in inf,.h and .c files 2018-08-20 14:27:14 +08:00
SourceLevelDebugPkg SourceLevelDebugPkg: Removing ipf from edk2. 2018-06-29 16:19:50 +08:00
StandaloneMmPkg StandaloneMmPkg: Describe the declaration and definition files. 2018-07-20 10:59:56 +08:00
StdLib StdLib: Removing ipf which is no longer supported from edk2. 2018-06-29 16:19:51 +08:00
StdLibPrivateInternalFiles StdLibPrivateInternalFiles: Removing ipf from edk2. 2018-06-29 16:19:51 +08:00
UefiCpuPkg UefiCpuPkg/PiSmmCpuDxeSmm: [CVE-2017-5715] Stuff RSB before RSM 2018-08-21 16:10:42 +08:00
UnixPkg
Vlv2DeviceRefCodePkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
Vlv2TbltDevicePkg Vlv2TbltDevicePkg: Removing ipf which from edk2. 2018-08-14 08:58:33 +08:00
.gitignore edk2: Add .DS_Store to .gitignore for macOS 2017-05-19 15:14:34 -07:00
.gitmodules CryptoPkg: Adding OpenSSL as one submodule of EDKII repo 2018-01-18 14:06:15 +08:00
BuildNotes2.txt BaseTools: Updated BuildNotes URLs 2016-03-25 09:46:44 +08:00
Contributions.txt edk2: Fix typo in Contributions.txt 2017-08-16 17:50:44 +08:00
License.txt edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
Maintainers.txt Maintainers.txt: Add FmpDevicePkg maintainers 2018-08-09 23:07:59 -07:00
Readme.md edk2: Add Readme.md to root of edk2 repository 2017-08-03 11:02:25 -07:00
edksetup.bat BaseTools: Fix incorrect %EDK_TOOLS_PATH% 2018-08-08 08:44:22 +08:00
edksetup.sh BaseTools/edksetup.sh: fix invalid test for current working directory 2017-08-10 12:54:58 +08:00

Readme.md

EDK II Project

A modern, feature-rich, cross-platform firmware development environment for the UEFI and PI specifications from www.uefi.org.

Contributions to the EDK II open source project are covered by the TianoCore Contribution Agreement 1.1

The majority of the content in the EDK II open source project uses a BSD 2-Clause License. The EDK II open source project contains the following components that are covered by additional licenses:

The EDK II Project is composed of packages. The maintainers for each package are listed in Maintainers.txt.

Resources