acpi: Add IORT helper functions
[coreboot2.git] / src / lib / Kconfig.cbfs_verification
blob6482e06b200fc436ea55374eeafd7b5415486cdb
1 # SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0-or-later
3 # This file is sourced from src/security/Kconfig for menuconfig convenience.
5 menu "CBFS verification"
7 config CBFS_VERIFICATION
8         bool "Enable CBFS verification"
9         select VBOOT_LIB
10         help
11           Say yes here to enable code that cryptographically verifies each CBFS
12           file as it gets loaded by chaining it to a trust anchor that is
13           embedded in the bootblock. This only makes sense if you use some
14           out-of-band mechanism to guarantee the integrity of the bootblock
15           itself, such as Intel Boot Guard or flash write-protection.
17           If a CBFS image was created with this option enabled, cbfstool will
18           automatically update the hash embedded in the bootblock whenever it
19           modifies the CBFS.
21 if CBFS_VERIFICATION
23 config TOCTOU_SAFETY
24         bool "Protect against time-of-check vs. time-of-use vulnerabilities"
25         depends on !NO_FMAP_CACHE
26         depends on !NO_CBFS_MCACHE
27         depends on !USE_OPTION_TABLE && !FSP_CAR  # Known to access CBFS before CBMEM init
28         depends on !VBOOT || VBOOT_CBFS_INTEGRATION
29         depends on NO_XIP_EARLY_STAGES
30         help
31           Say yes here to eliminate time-of-check vs. time-of-use vulnerabilities
32           for CBFS verification. This means that data from flash must be verified
33           every time it is loaded (not just the first time), which requires a bit
34           more overhead and is incompatible with certain configurations.
36           Using this option only makes sense when the mechanism securing the
37           bootblock is also safe against these vulnerabilities (i.e. there's no
38           point in enabling this when you just rely on flash write-protection).
40 config CBFS_ALLOW_UNVERIFIED_DECOMPRESSION
41         bool "Run decompression algorithms on potentially untrusted code"
42         default n
43         help
44           This controls whether cbfs_unverified_area_...() access functions may
45           decompress files. This exposes the attack surface of all supported
46           decompression algorithms. Even if you don't compress the files you are
47           planning to load with these functions, since file metadata is also
48           unverified, an attacker can potentially replace them with compressed
49           files to access a vulnerability in the decompression code.
51           If you don't need to load compressed files from unverified areas, say
52           no here for tighter security.
54 config CBFS_HASH_ALGO
55         int
56         default 1 if CBFS_HASH_SHA1
57         default 2 if CBFS_HASH_SHA256
58         default 3 if CBFS_HASH_SHA512
60 choice
61         prompt "Hash algorithm"
62         default CBFS_HASH_SHA256
63         help
64           Select the hash algorithm used in CBFS verification. Note that SHA-1 is
65           generally considered insecure today and should not be used without good
66           reason. When using CBFS verification together with measured boot, using
67           the same hash algorithm (usually SHA-256) for both is more efficient.
69 config CBFS_HASH_SHA1
70         bool "SHA-1"
72 config CBFS_HASH_SHA256
73         bool "SHA-256"
75 config CBFS_HASH_SHA512
76         bool "SHA-512"
78 endchoice
80 endif
82 endmenu