summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorPeter Jones <pjones@redhat.com>2024-05-15 16:13:13 -0400
committerPeter Jones <pjones@redhat.com>2025-02-24 15:24:24 -0500
commit848667d0f3a99401d93c93b3af16b55e3fb28cea (patch)
treedea7e69bef8e20ed687b38c99b7f7e06d3f7abbd /include
parent589c3f289e05454be23507767439cb9769a2264a (diff)
downloadefi-boot-shim-848667d0f3a99401d93c93b3af16b55e3fb28cea.tar.gz
efi-boot-shim-848667d0f3a99401d93c93b3af16b55e3fb28cea.zip
shim: add HSIStatus feature
hughsie asked me if I can make shim tell userland what kinds of accesses are allowed to the heap, stack, and allocations on the running platform, so that these could be reported up through fwupd's Host Security ID program (see https://fwupd.github.io/libfwupdplugin/hsi.html ). This adds a new config-only (i.e. not a UEFI variable) variable generated during boot, "/sys/firmware/efi/mok-variables/HSIStatus", which tells us those properties as well as if the EFI Memory Attribute Protocol is present. Signed-off-by: Peter Jones <pjones@redhat.com>
Diffstat (limited to 'include')
-rw-r--r--include/memattrs.h2
-rw-r--r--include/mok.h10
-rw-r--r--include/test-data-efivars-1.h6
3 files changed, 18 insertions, 0 deletions
diff --git a/include/memattrs.h b/include/memattrs.h
index 8fefef22..5c40b4cc 100644
--- a/include/memattrs.h
+++ b/include/memattrs.h
@@ -11,5 +11,7 @@ extern EFI_STATUS get_mem_attrs (uintptr_t addr, size_t size, uint64_t *attrs);
extern EFI_STATUS update_mem_attrs(uintptr_t addr, uint64_t size,
uint64_t set_attrs, uint64_t clear_attrs);
+extern void get_hsi_mem_info(void);
+
#endif /* !SHIM_MEMATTRS_H_ */
// vim:fenc=utf-8:tw=75:noet
diff --git a/include/mok.h b/include/mok.h
index c37ccba5..e6921e09 100644
--- a/include/mok.h
+++ b/include/mok.h
@@ -125,5 +125,15 @@ struct mok_variable_config_entry {
*/
#define MOK_POLICY_REQUIRE_NX 1
+extern UINTN hsi_status;
+/* heap is executable */
+#define SHIM_HSI_STATUS_HEAPX 0x00000001ULL
+/* stack is executable */
+#define SHIM_HSI_STATUS_STACKX 0x00000002ULL
+/* read-only sections are writable */
+#define SHIM_HSI_STATUS_ROW 0x00000004ULL
+/* platform provides the EFI Memory Attribute Protocol */
+#define SHIM_HSI_STATUS_HASMAP 0x00000008ULL
+
#endif /* !SHIM_MOK_H_ */
// vim:fenc=utf-8:tw=75:noet
diff --git a/include/test-data-efivars-1.h b/include/test-data-efivars-1.h
index 2831bd23..d97a4d6d 100644
--- a/include/test-data-efivars-1.h
+++ b/include/test-data-efivars-1.h
@@ -106,5 +106,11 @@ static const unsigned char test_data_efivars_1_MokListTrustedRT[] ={
0x01
};
+static const unsigned char test_data_efivars_1_HSIStatus[] =
+ "heap-is-executable: 0\n"
+ "stack-is-executable: 0\n"
+ "ro-sections-are-writable: 0\n"
+ "has-memory-attribute-protocol: 0\n";
+
#endif /* !TEST_DATA_EFIVARS_1_H_ */
// vim:fenc=utf-8:tw=75:noet