mirror of
https://github.com/ipxe/ipxe
synced 2026-04-16 03:00:10 +03:00
[efi] Include Secure Boot Advanced Targeting (SBAT) metadata
SBAT defines an encoding for security generation numbers stored as a CSV file within a special ".sbat" section in the signed binary. If a Secure Boot exploit is discovered then the generation number will be incremented alongside the corresponding fix. Platforms may then record the minimum generation number required for any given product. This allows for an efficient revocation mechanism that consumes minimal flash storage space (in contrast to the DBX mechanism, which allows for only a single-digit number of revocation events to ever take place across all possible signed binaries). Add SBAT metadata to iPXE EFI binaries to support this mechanism. Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -32,6 +32,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
||||
#include <wchar.h>
|
||||
#include <ipxe/features.h>
|
||||
#include <ipxe/version.h>
|
||||
#include <ipxe/sbat.h>
|
||||
#include <config/general.h>
|
||||
#include <config/branding.h>
|
||||
|
||||
@@ -92,3 +93,32 @@ const wchar_t build_wname[] = WSTRING ( BUILD_NAME );
|
||||
/** Copy of build name string within ".prefix" */
|
||||
const char build_name_prefix[] __attribute__ (( section ( ".prefix.name" ) ))
|
||||
= BUILD_NAME;
|
||||
|
||||
/** SBAT upstream iPXE line
|
||||
*
|
||||
* This line represents the security generation of the upstream
|
||||
* codebase from which this build is derived.
|
||||
*/
|
||||
#define SBAT_IPXE \
|
||||
SBAT_LINE ( "ipxe", IPXE_SBAT_GENERATION, \
|
||||
"iPXE", BUILD_NAME, VERSION, "https://ipxe.org" )
|
||||
|
||||
/** SBAT local build line
|
||||
*
|
||||
* This line states the security generation of the local build, which
|
||||
* may include non-default features or non-upstreamed modifications.
|
||||
*/
|
||||
#if PRODUCT_SBAT_GENERATION
|
||||
#define SBAT_PRODUCT \
|
||||
SBAT_LINE ( "ipxe." PRODUCT_SBAT_NAME, PRODUCT_SBAT_GENERATION, \
|
||||
PRODUCT_SHORT_NAME, BUILD_NAME, VERSION, \
|
||||
PRODUCT_URI )
|
||||
#else
|
||||
#define SBAT_PRODUCT ""
|
||||
#endif
|
||||
|
||||
/** SBAT data */
|
||||
#define SBAT_DATA SBAT_HEADER "" SBAT_IPXE "" SBAT_PRODUCT
|
||||
|
||||
/** SBAT data (without any NUL terminator) */
|
||||
const char sbat[ sizeof ( SBAT_DATA ) - 1 ] __sbat = SBAT_DATA;
|
||||
|
||||
Reference in New Issue
Block a user