Plugin: UEFI MOK

Introduction

Shim 16.0 and newer export a /sys/firmware/efi/mok-variables/HSIStatus file that contains some BootService-only attributes in an easy-to-digest format.

We can use these attributes to populate the org.fwupd.hsi.UefiMemoryProtections Host Security ID attribute. The attributes are x64, aarch64 and riscv specific:

shim-has-nx-compat-set

This attribute will be 1 if shim has the NX-compatible bit set in the COFF header, and 0 otherwise.

heap-is-executable

This attribute will be 1 if heap is executable, and 0 otherwise.

stack-is-executable

This attribute will be 1 if the stack is executable, and 0 otherwise.

ro-sections-are-writable

This attribute will be 1 if read-only sections are actually writable, and0 otherwise.

has-memory-attribute-protocol

This attribute will be 1 if the memory attribute protocol is supported by the firmware, and 0 otherwise.

has-dxe-services-table

This attribute will be 1 if the firmware provides a DXE services table, and 0 otherwise.

has-get-memory-space-descriptor

This attribute will be 1 if DxeServicesTable has GetMemorySpaceDescriptor() populated, and 0 otherwise.

has-set-memory-space-attributes

This attribute will be 1 if DxeServicesTable has SetMemorySpaceAttributes() populated, and 0 otherwise.

External Interface Access

This plugin requires read access to /sys/firmware/efi/mok-variables.

Version Considerations

This plugin has been available since fwupd version 2.0.7.

Owners

Anyone can submit a pull request to modify this plugin, but the following people should be consulted before making major or functional changes:

  • Richard Hughes: hughsie