From 9c0ba63a3dacd7df624be3e8610db9f2435cac18 Mon Sep 17 00:00:00 2001 From: Nick Anderson Date: Mon, 25 May 2026 18:02:36 -0500 Subject: [PATCH 1/3] Added inventory-fwupd module for firmware inventory, HSI security posture, and monitoring measurements --- cfbs.json | 64 +++ inventory/inventory-fwupd/README.org | 110 ++++ .../inventory-fwupd/fwupd-inventory.mustache | 3 + .../mp-inventory-fwupd-columns.png | Bin 0 -> 79973 bytes .../mp-monitoring-firmware-devices.png | Bin 0 -> 61220 bytes inventory/inventory-fwupd/policy.cf | 491 ++++++++++++++++++ 6 files changed, 668 insertions(+) create mode 100644 inventory/inventory-fwupd/README.org create mode 100644 inventory/inventory-fwupd/fwupd-inventory.mustache create mode 100644 inventory/inventory-fwupd/mp-inventory-fwupd-columns.png create mode 100644 inventory/inventory-fwupd/mp-monitoring-firmware-devices.png create mode 100644 inventory/inventory-fwupd/policy.cf diff --git a/cfbs.json b/cfbs.json index 3064b4d..2892337 100644 --- a/cfbs.json +++ b/cfbs.json @@ -33,6 +33,15 @@ "subdirectory": "reporting/client-initiated-reporting", "steps": ["json def.json def.json"] }, + "compliance-report-fwupd": { + "description": "Compliance report for firmware security posture via fwupd HSI and update status.", + "tags": ["reporting", "compliance", "security", "hardware"], + "subdirectory": "reporting/compliance-report-fwupd", + "dependencies": ["inventory-fwupd"], + "steps": [ + "copy fwupd-compliance-report.json .no-distrib/compliance-report-definitions/fwupd-compliance-report.json" + ] + }, "command-dispatcher": { "description": "Command dispatcher for running shell commands on schedule", "subdirectory": "management/command-dispatcher", @@ -246,6 +255,17 @@ "bundles inventory_fde:main" ] }, + "inventory-fwupd": { + "description": "Inventory hardware firmware versions, pending firmware updates, and host security attributes via fwupd.", + "tags": ["inventory", "monitoring", "hardware", "security"], + "subdirectory": "inventory/inventory-fwupd", + "steps": [ + "copy policy.cf services/cfbs/modules/inventory-fwupd/policy.cf", + "copy fwupd-inventory.mustache services/cfbs/modules/inventory-fwupd/fwupd-inventory.mustache", + "policy_files services/cfbs/modules/inventory-fwupd/policy.cf", + "bundles inventory_fwupd_main" + ] + }, "inventory-smartctl": { "description": "Inventory SMART drive health, temperature, and wear data.", "tags": ["inventory", "monitoring", "hardware", "storage"], @@ -278,6 +298,50 @@ "bundles maintainers_in_motd" ] }, + "manage-fwupd": { + "description": "Ensure fwupd is installed and its refresh timer is enabled. Optionally apply firmware updates for devices matching an allow-list.", + "subdirectory": "management/manage-fwupd", + "dependencies": ["inventory-fwupd"], + "steps": [ + "copy main.cf services/cfbs/modules/manage-fwupd/main.cf", + "policy_files services/cfbs/modules/manage-fwupd/main.cf", + "bundles manage_fwupd:allowed manage_fwupd:main", + "input ./input.json def.json" + ], + "input": [ + { + "type": "string", + "variable": "apply_updates", + "namespace": "manage_fwupd", + "bundle": "allowed", + "label": "Apply firmware updates", + "question": "Class expression for when firmware updates should be applied (e.g. 'any', 'linux', '(env_dev|env_qa).Night.(cohort_A|cohort_C)'). Default '!any' means disabled.", + "default": "!any" + }, + { + "type": "list", + "variable": "device_name_reglist", + "namespace": "manage_fwupd", + "bundle": "allowed", + "label": "Allowed devices", + "subtype": { + "type": "string", + "label": "Device name pattern", + "question": "Device name (regex) to allow firmware updates for" + }, + "while": "Do you want to allow firmware updates for more devices?" + }, + { + "type": "string", + "variable": "reboot_after_update", + "namespace": "manage_fwupd", + "bundle": "allowed", + "label": "Reboot after firmware update", + "question": "Class expression for when to reboot after a firmware update is applied (e.g. 'any', 'Night', 'Hr04.Min00_05'). Default '!any' means disabled (no automatic reboot).", + "default": "!any" + } + ] + }, "powershell-execution-policy": { "description": "Inventory and bundle for PowerShell Execution Policy", "subdirectory": "management/powershell-execution-policy", diff --git a/inventory/inventory-fwupd/README.org b/inventory/inventory-fwupd/README.org new file mode 100644 index 0000000..41c4142 --- /dev/null +++ b/inventory/inventory-fwupd/README.org @@ -0,0 +1,110 @@ +Surface fwupd state as inventory attributes: current firmware versions +and vendors, pending updates from LVFS, and Host Security Identifier +(HSI) security posture. + +Pair with *manage-fwupd* to optionally apply firmware updates for +devices matching an allow-list. + +* Requirements + +- Linux (silently no-ops on other platforms) +- =fwupd= package for full functionality (manage-fwupd installs it + automatically). Without fwupd, the module still runs but reports + =Firmware update status= as =FWUPD_MISSING=. +- =fwupd-refresh.timer= enabled so the LVFS firmware catalog stays + current (manage-fwupd handles this automatically) + +* Mission Portal + +The inventory attributes appear in Mission Portal's column selector +under "fwupd": + +[[file:mp-inventory-fwupd-columns.png]] + +* Inventory Attributes + +** Rolled-up status + +| Attribute | Values | +|----------------------------+-----------------------------------------------------------------| +| *Firmware update status* | =OK= -- no pending updates | +| | =UPDATES_AVAILABLE= -- one or more devices have pending updates | +| | =NO_DEVICES= -- fwupd present but no updatable devices | +| | =FWUPD_MISSING= -- fwupd is not installed | + +** Per-device attributes + +For every device fwupd reports (keyed by DeviceId): + +| Attribute | Format | +|------------------------------------+---------------------------------------------------------| +| *Firmware devices* | =Name | Vendor | vX.Y.Z | [plugin]= | +| *Firmware device pending update* | =Name: current -> new= (only when an update is pending) | + +** HSI attributes + +| Attribute | Format | +|---------------------------------+------------------------------------------------------------| +| *Firmware HSI level* | =HSI:0= through =HSI:4= | +| *Firmware HSI L: * | =PASS= or =FAIL= (one per security check) | +| *Firmware HSI attributes* | =Name (HSI L): [PASS|FAIL]= (slist) | + +*Firmware HSI level* is the rolled-up Host Security Identifier level. +fwupd walks levels 1--4 sequentially; the result is the highest level +where all attributes pass, stopping at the first level with any failure. + +*Firmware HSI L: * variables (e.g. =Firmware HSI L1: TPM v2.0=) +are individual string attributes with value =PASS= or =FAIL=. These are +consumed by *compliance-report-fwupd* for per-check compliance conditions. +Two normalizations are applied to keep inventory attribute names stable +and aligned with the HSI specification: + +- *Name normalization:* The CSME version attribute is emitted as + =Firmware HSI L1: CSME version= regardless of the firmware version + string fwupd reports (which varies per host). +- *Level normalization:* fwupd marks some runtime checks at HsiLevel 0 + even though they contribute to scored HSI levels. The module maps + these to their specification levels: =UEFI secure boot= is emitted + at L1 (not L0) and =CET OS Support= at L3 (not L0). + +*Firmware HSI attributes* is an slist with one detailed entry per +security check, useful for drill-down in Mission Portal inventory views. + +* Measurements + +The following values are emitted as =cf-monitord= measurements for +time-series tracking in Mission Portal: + +| Measurement | Units | Description | +|----------------------------------+---------+-----------------------------------------| +| =firmware_devices_total= | devices | Number of devices fwupd is tracking | +| =firmware_updates_available= | devices | Number of devices with a pending update | +| =firmware_hsi_failing= | checks | Number of failing HSI security checks | + +These appear in Mission Portal monitoring graphs as +=firmware_devices_total=, =firmware_updates_available=, and +=firmware_hsi_failing=. + +[[file:mp-monitoring-firmware-devices.png]] + +* Classes + +The module defines namespace-scoped classes for platform-specific +compliance report targeting: + +| Class | Source | Matches | +|--------------------------+--------------------------------+--------------------------------| +| =fwupd_cpu_vendor_intel= | =/proc/cpuinfo= vendor_id | =GenuineIntel= | +| =fwupd_cpu_vendor_amd= | =/proc/cpuinfo= vendor_id | =AuthenticAMD= | +| =fwupd_oem_vendor_hp= | =/sys/class/dmi/id/sys_vendor= | =HP Inc.= or =Hewlett-Packard= | + +These classes are used by *compliance-report-fwupd* =host_filter= +fields to restrict Intel-only, AMD-only, and HP-only conditions to +the relevant hardware. + +* Limitations + +The module is /read-only/ -- it never applies firmware updates. +Use *manage-fwupd* for that. + + diff --git a/inventory/inventory-fwupd/fwupd-inventory.mustache b/inventory/inventory-fwupd/fwupd-inventory.mustache new file mode 100644 index 0000000..c5f8e83 --- /dev/null +++ b/inventory/inventory-fwupd/fwupd-inventory.mustache @@ -0,0 +1,3 @@ +^context=inventory_fwupd_cache +^meta=inventory,attribute_name=Firmware update status +=fwupd_status={{{status}}} diff --git a/inventory/inventory-fwupd/mp-inventory-fwupd-columns.png b/inventory/inventory-fwupd/mp-inventory-fwupd-columns.png new file mode 100644 index 0000000000000000000000000000000000000000..194d80c9298a2d6a9737b5e6b81c75780a2b6b77 GIT binary patch literal 79973 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 F{{uj#A5{PV literal 0 HcmV?d00001 diff --git a/inventory/inventory-fwupd/policy.cf b/inventory/inventory-fwupd/policy.cf new file mode 100644 index 0000000..d77249e --- /dev/null +++ b/inventory/inventory-fwupd/policy.cf @@ -0,0 +1,491 @@ +# inventory-fwupd policy +# +# Inventories hardware firmware versions, pending firmware updates, and the +# Host Security ID (HSI) attribute scores reported by fwupd. +# +# Implementation notes: +# - Device list is read directly from /var/cache/fwupd/devices.json, which +# fwupd's own systemd timer (fwupd-refresh.timer) keeps up to date. No +# fwupdmgr call is needed for the common steady-state inventory. +# - Pending updates and HSI attributes are not cached as files by fwupd, so +# they are sourced via fwupdmgr and re-fetched only when their respective +# JSON caches age past their TTL. +# - All inventory variables are emitted via a single module-protocol cache +# rendered from JSON with an inline_mustache template. The cache is +# consumed in one call to read_module_protocol(), which loads dozens of +# inventory-tagged variables at far lower runtime cost than iterating the +# raw JSON with classic arrays. +# +# Rolled-up status (Mission Portal attribute "Firmware update status"): +# OK - fwupd present, no pending updates +# UPDATES_AVAILABLE - one or more devices have firmware updates pending +# NO_DEVICES - fwupd present but reports no updatable devices +# FWUPD_MISSING - fwupd not installed on the host + +bundle agent inventory_fwupd_main +{ + vars: + linux:: + # Public API: referenced by manage-fwupd and other consumers. + "fwupdmgr" + string => ifelse( + fileexists("/usr/bin/fwupdmgr"), "/usr/bin/fwupdmgr", + fileexists("/usr/local/bin/fwupdmgr"), "/usr/local/bin/fwupdmgr", + "/usr/bin/fwupdmgr"); + + "_devices_src" string => "/var/cache/fwupd/devices.json"; + "_updates_src" string => "$(sys.statedir)/fwupd_inventory_updates.json"; + "_security_src" string => "$(sys.statedir)/fwupd_inventory_security.json"; + "_cache" string => "$(sys.statedir)/fwupd_inventory_cache"; + "_template" string => "$(this.promise_dirname)/fwupd-inventory.mustache"; + + # TTLs in seconds for the fwupdmgr-derived JSON caches. + "_updates_ttl" string => "43200"; # 12 h + "_security_ttl" string => "86400"; # 24 h + + # Pre-compute file mtimes here rather than calling filestat() inline + # inside class expressions: nested $(filestat($(path), mtime)) does not + # expand reliably inside isgreaterthan(), so the staleness comparisons + # silently never match. Defaulting to "0" when a file is missing lets + # the class expressions below stay simple and total. + "_cache_mtime" + string => ifelse(fileexists("$(_cache)"), + filestat("$(_cache)", "mtime"), "0"); + "_devices_mtime" + string => ifelse(fileexists("$(_devices_src)"), + filestat("$(_devices_src)", "mtime"), "0"); + "_updates_mtime" + string => ifelse(fileexists("$(_updates_src)"), + filestat("$(_updates_src)", "mtime"), "0"); + "_security_mtime" + string => ifelse(fileexists("$(_security_src)"), + filestat("$(_security_src)", "mtime"), "0"); + + "_updates_age" string => eval("$(sys.systime) - $(_updates_mtime)", "math", "infix"); + "_security_age" string => eval("$(sys.systime) - $(_security_mtime)", "math", "infix"); + + # /proc/1 mtime is when PID 1 (init) was exec'd, i.e., boot time on + # Linux. Used below to force a refresh of the updates cache after a + # reboot, so consumers like manage-fwupd don't act on a pre-boot + # snapshot that still lists devices whose updates have already been + # activated. + "_boot_mtime" + string => ifelse(fileexists("/proc/1"), + filestat("/proc/1", "mtime"), "0"); + + classes: + linux:: + "have_fwupdmgr" + scope => "namespace", + expression => isexecutable("$(fwupdmgr)"); + "_have_devices" expression => fileexists("$(_devices_src)"); + + # CPU vendor classes for platform-specific compliance conditions. + # /proc/cpuinfo vendor_id: "GenuineIntel" or "AuthenticAMD". + "fwupd_cpu_vendor_intel" + scope => "namespace", + meta => { "report" }, + expression => regline("vendor_id.*GenuineIntel", "/proc/cpuinfo"); + "fwupd_cpu_vendor_amd" + scope => "namespace", + meta => { "report" }, + expression => regline("vendor_id.*AuthenticAMD", "/proc/cpuinfo"); + + # OEM vendor class for HP-specific compliance conditions. + # /sys/class/dmi/id/sys_vendor: "HP Inc." (post-2015) or + # "Hewlett-Packard" (pre-2015). + "fwupd_oem_vendor_hp" + scope => "namespace", + meta => { "report" }, + expression => regline("(HP Inc\.|Hewlett-Packard)", + "/sys/class/dmi/id/sys_vendor"); + + linux.have_fwupdmgr:: + "_updates_stale" + not => fileexists("$(_updates_src)"); + "_updates_stale" + expression => isgreaterthan("$(_updates_age)", "$(_updates_ttl)"), + if => fileexists("$(_updates_src)"); + # Force refresh after a reboot: a pre-boot cache may still list + # devices whose updates have been activated by the boot, and + # consumers (manage-fwupd) would otherwise repeatedly re-apply + # them and re-trigger reboots. + "_updates_stale" + expression => islessthan("$(_updates_mtime)", "$(_boot_mtime)"), + if => fileexists("$(_updates_src)"); + + "_security_stale" + not => fileexists("$(_security_src)"); + "_security_stale" + expression => isgreaterthan("$(_security_age)", "$(_security_ttl)"), + if => fileexists("$(_security_src)"); + + linux._have_devices:: + # Module-protocol cache must be rebuilt when any of the source JSON + # files is newer than the cache itself, or when the cache is missing. + "_cache_missing" not => fileexists("$(_cache)"); + "_cache_stale_devices" + expression => isgreaterthan("$(_devices_mtime)", "$(_cache_mtime)"); + "_cache_stale_updates" + expression => isgreaterthan("$(_updates_mtime)", "$(_cache_mtime)"), + if => "have_fwupdmgr"; + "_cache_stale_security" + expression => isgreaterthan("$(_security_mtime)", "$(_cache_mtime)"), + if => "have_fwupdmgr"; + "_rebuild_cache" + or => { "_cache_missing", "_cache_stale_devices", + "_cache_stale_updates", "_cache_stale_security" }; + + vars: + linux.have_fwupdmgr._updates_stale:: + "_updates_raw" + string => execresult("$(fwupdmgr) get-updates --json", "noshell"); + "_updates_payload" + string => ifelse(regcmp("\s*\{.*", "$(_updates_raw)"), + "$(_updates_raw)", + '{"Devices":[]}'); + + linux.have_fwupdmgr._security_stale:: + "_security_raw" + string => execresult("$(fwupdmgr) security --json", "noshell"); + "_security_payload" + string => ifelse(regcmp("\s*\{.*", "$(_security_raw)"), + "$(_security_raw)", + '{"SecurityAttributes":[]}'); + + files: + linux.have_fwupdmgr._updates_stale:: + "$(_updates_src)" + create => "true", + content => "$(_updates_payload)"; + + linux.have_fwupdmgr._security_stale:: + "$(_security_src)" + create => "true", + content => "$(_security_payload)"; + + methods: + linux._have_devices._rebuild_cache:: + "render" usebundle => inventory_fwupd_render( + "$(_devices_src)", "$(_updates_src)", "$(_security_src)", + "$(_template)", "$(_cache)"); + + linux.have_fwupdmgr:: + # HSI rollup is small (typically <40 attributes) and computed inline. + # Emitted as direct policy variables rather than via the module-protocol + # cache because filtering objects out of a data container and reshaping + # them into a mustache-iterable list is more code than just iterating + # and tagging the few results with inventory meta. + "hsi" usebundle => inventory_fwupd_hsi("$(_security_src)"), + if => fileexists("$(_security_src)"); + + # Per-device pending firmware update inventory, emitted natively + # from the updates JSON cache. Mirrors the HSI bundle idiom. + "updates" usebundle => inventory_fwupd_updates("$(_updates_src)"), + if => fileexists("$(_updates_src)"); + + # Per-device firmware inventory, emitted natively from the devices + # JSON cache. Mirrors the HSI bundle idiom. + "devices" usebundle => inventory_fwupd_devices("$(_devices_src)"), + if => fileexists("$(_devices_src)"); + + classes: + linux._have_devices:: + "_cache_was_read" if => read_module_protocol("$(_cache)"); + + linux.!_have_devices:: + # No source file from fwupd - emit a single status attribute. + "_emit_missing_status"; + + vars: + linux.!_have_devices._emit_missing_status:: + "fwupd_status" + string => "FWUPD_MISSING", + meta => { "inventory", "attribute_name=Firmware update status" }; + + reports: + linux._cache_was_read.verbose_mode:: + "inventory_fwupd: loaded $(inventory_fwupd_cache.fwupd_device_count) devices, status=$(inventory_fwupd_cache.fwupd_status)"; + + !linux.verbose_mode:: + "$(this.promise_filename): inventory-fwupd is Linux-only."; +} + +bundle agent inventory_fwupd_render(devices_src, updates_src, security_src, template, cache) +# @brief Render the module-protocol cache file from the JSON sources. +# +# The cache must be a single mustache render: read_module_protocol() in the +# caller then loads every inventory variable in one shot. +{ + vars: + "_template_body" string => readfile("$(template)", "inf"); + + "_devices_json" data => readjson("$(devices_src)"); + "_dev_count" int => length("_devices_json[Devices]"); + + "_updates_json" + data => readjson("$(updates_src)"), + if => fileexists("$(updates_src)"); + "_updates_count" + int => length("_updates_json[Devices]"), + if => isvariable("_updates_json[Devices]"); + + "_security_json" + data => readjson("$(security_src)"), + if => fileexists("$(security_src)"); + + # Default counters when fwupdmgr-derived data is not present. + "_updates_count" + int => "0", + if => not(isvariable("_updates_count")); + + # Status rollup + "_status" + string => ifelse( + isgreaterthan("$(_updates_count)", "0"), "UPDATES_AVAILABLE", + isgreaterthan("$(_dev_count)", "0"), "OK", + "NO_DEVICES"); + + # HSI inventory is emitted directly by inventory_fwupd_hsi rather than + # threaded through this cache, since reshaping filtered objects into a + # mustache-iterable list is more code than just tagging them in policy. + "_extra_json" string => format( + '{ "status": "%s" }', + "$(_status)"); + "_extra" data => parsejson("$(_extra_json)"); + + # Measurements file: one key=value per line, read by + # inventory_fwupd_monitor for time-series tracking. + "_measurements_path" string => "$(sys.statedir)/fwupd_inventory_measurements"; + "_measurements_body" string => format( + "firmware_devices_total=%d$(const.n)firmware_updates_available=%d", + "$(_dev_count)", "$(_updates_count)"); + + # Mergedata combines device data, status counters, and optional + # extra top-level keys into a single data structure for mustache rendering. + # Note: pending-update inventory is emitted natively via + # inventory_fwupd_updates() rather than threaded through this cache, + # because Releases[0].Version cannot be accessed from mustache templates. + "_merged" data => mergedata("_devices_json", "_extra"); + + files: + "$(cache)" + create => "true", + template_method => "inline_mustache", + edit_template_string => "$(_template_body)", + template_data => @(_merged); + + "$(_measurements_path)" + create => "true", + content => "$(_measurements_body)"; +} + +bundle agent inventory_fwupd_hsi(security_src) +# @brief Surface fwupd Host Security Identifier (HSI) attributes and +# compute the rolled-up HSI level. +# +# Emits: +# - Per-attribute PASS/FAIL strings named "Firmware HSI L: " +# for use in compliance report conditions. +# - An slist of detailed results formatted "Name (HSI L): +# [PASS|FAIL]" for inventory drill-down. +# - A count of failing attributes. +# - The rolled-up HSI level (e.g. "HSI:3"). +# +# The rollup mirrors fwupd's own algorithm: walk levels 1-4 sequentially; +# at each level, if any non-obsoleted attribute fails, stop — the result +# is the highest level that had at least one success before the walk +# stopped. Empty levels (no attributes) are skipped without advancing +# or stopping. +# +# An attribute is failing when its HsiResult differs from HsiResultSuccess. +{ + classes: + "inventory_fwupd_hsi_failing_$(_idxes)" + not => strcmp("$(_result[$(_idxes)])", "$(_success[$(_idxes)])"); + + # Per-level failure/success classes for the HSI rollup. + # If ANY attribute at level N fails, _hsi_LN_fail is defined. + # If ANY attribute at level N passes, _hsi_LN_pass is defined. + "_hsi_L$(_level[$(_idxes)])_fail" + expression => "inventory_fwupd_hsi_failing_$(_idxes)"; + "_hsi_L$(_level[$(_idxes)])_pass" + not => "inventory_fwupd_hsi_failing_$(_idxes)"; + + vars: + "_sec" data => readjson("$(security_src)"); + "_idxes" slist => getindices("_sec[SecurityAttributes]"); + + "_name[$(_idxes)]" + string => "$(_sec[SecurityAttributes][$(_idxes)][Name])"; + "_level[$(_idxes)]" + string => "$(_sec[SecurityAttributes][$(_idxes)][HsiLevel])"; + "_result[$(_idxes)]" + string => "$(_sec[SecurityAttributes][$(_idxes)][HsiResult])"; + "_success[$(_idxes)]" + string => "$(_sec[SecurityAttributes][$(_idxes)][HsiResultSuccess])"; + + "_status[$(_idxes)]" + string => ifelse(strcmp("$(_result[$(_idxes)])", "$(_success[$(_idxes)])"), + "PASS", "FAIL"); + + # Normalized name for per-attribute inventory: the CSME version + # attribute has a dynamic Name containing the firmware version + # (e.g. "csme v0:16.1.40.2765") which would create a different + # inventory attribute on every host. Normalize it to a fixed name + # so compliance conditions can reference it statically. + "_inv_name[$(_idxes)]" + string => ifelse(regcmp("csme v.*", "$(_name[$(_idxes)])"), + "CSME version", + "$(_name[$(_idxes)])"); + + # Normalized level for per-attribute inventory: fwupd marks some + # attributes as HsiLevel 0 with a "runtime-issue" flag even though + # they contribute to scored HSI levels. Map them to their HSI spec + # level so inventory attribute names match compliance conditions. + # UEFI secure boot (org.fwupd.hsi.Uefi.SecureBoot) → HSI:1 + # CET OS Support (org.fwupd.hsi.IntelCet.Active) → HSI:3 + "_inv_level[$(_idxes)]" + string => ifelse(strcmp("$(_name[$(_idxes)])", "UEFI secure boot"), + "1", + strcmp("$(_name[$(_idxes)])", "CET OS Support"), + "3", + "$(_level[$(_idxes)])"); + + # Per-attribute inventory: one string variable per HSI check, + # named "Firmware HSI L: " with value PASS or FAIL. + # This enables per-check compliance report conditions. + "fwupd_hsi_check[$(_idxes)]" + string => "$(_status[$(_idxes)])", + meta => { "inventory", + "attribute_name=Firmware HSI L$(_inv_level[$(_idxes)]): $(_inv_name[$(_idxes)])" }; + + "fwupd_hsi_attr[$(_idxes)]" + string => "$(_name[$(_idxes)]) (HSI L$(_level[$(_idxes)])): $(_result[$(_idxes)]) [$(_status[$(_idxes)])]", + meta => { "inventory", "attribute_name=Firmware HSI attributes" }; + + "fwupd_hsi_failing_count" + int => countclassesmatching("inventory_fwupd_hsi_failing_[0-9]+"); + + # Rolled-up HSI level: highest level with a pass where no level + # at or below it has a failure. Checks highest first so the + # first match wins. Mirrors fwupd's fu_security_attrs_calculate_hsi(). + "fwupd_hsi_level" + string => ifelse( + and("_hsi_L4_pass", not("_hsi_L1_fail"), not("_hsi_L2_fail"), not("_hsi_L3_fail"), not("_hsi_L4_fail")), "HSI:4", + and("_hsi_L3_pass", not("_hsi_L1_fail"), not("_hsi_L2_fail"), not("_hsi_L3_fail")), "HSI:3", + and("_hsi_L2_pass", not("_hsi_L1_fail"), not("_hsi_L2_fail")), "HSI:2", + and("_hsi_L1_pass", not("_hsi_L1_fail")), "HSI:1", + "HSI:0"), + meta => { "inventory", "attribute_name=Firmware HSI level" }; + + files: + # Write HSI failing count to its own measurements file so + # cf-monitord can track it as a time-series metric. + "$(sys.statedir)/fwupd_measurements_hsi" + create => "true", + content => "firmware_hsi_failing_attributes=$(fwupd_hsi_failing_count)", + if => isvariable("fwupd_hsi_failing_count"); +} + +bundle agent inventory_fwupd_updates(updates_src) +# @brief Surface per-device pending firmware update inventory. +# +# Reads the updates JSON cache and emits one inventory entry per device +# that has a pending update. Format: +# "Device Name: current_version -> new_version" +# +# Unlike the HSI bundle, devices here are iterated from the Devices array +# in fwupd_inventory_updates.json rather than SecurityAttributes. +# Releases[0].Version is the new version (mustache templates can't index +# into JSON arrays, so we flatten it natively in CFEngine). +{ + vars: + "_upd" data => readjson("$(updates_src)"); + "_idxes" slist => getindices("_upd[Devices]"); + + "_did[$(_idxes)]" string => "$(_upd[Devices][$(_idxes)][DeviceId])"; + "_name[$(_idxes)]" string => "$(_upd[Devices][$(_idxes)][Name])"; + "_oldv[$(_idxes)]" string => "$(_upd[Devices][$(_idxes)][Version])"; + "_newv[$(_idxes)]" string => "$(_upd[Devices][$(_idxes)][Releases][0][Version])"; + + "fwupd_dev_pending[$(_did[$(_idxes)])]" + string => "$(_name[$(_idxes)]): $(_oldv[$(_idxes)]) -> $(_newv[$(_idxes)])", + meta => { "inventory", "attribute_name=Firmware device pending update" }; +} + +bundle agent inventory_fwupd_devices(devices_src) +# @brief Surface per-device firmware inventory, one entry per non-empty +# device. Format: "Name | Vendor | vVersion | [Plugin]" +# +# Reads the devices JSON cache and emits one inventory entry per device +# that has a non-empty Name. Emits via indexed arrays (same idiom as +# inventory_fwupd_hsi / inventory_fwupd_updates). Devices with empty +# Name silently skip via the if => not(strcmp(...)) guard. +{ + vars: + "_dev" data => readjson("$(devices_src)"); + "_idxes" slist => getindices("_dev[Devices]"); + + "_did[$(_idxes)]" string => "$(_dev[Devices][$(_idxes)][DeviceId])"; + "_name[$(_idxes)]" string => "$(_dev[Devices][$(_idxes)][Name])"; + "_vend[$(_idxes)]" string => "$(_dev[Devices][$(_idxes)][Vendor])"; + "_ver[$(_idxes)]" string => "$(_dev[Devices][$(_idxes)][Version])"; + "_plug[$(_idxes)]" string => "$(_dev[Devices][$(_idxes)][Plugin])"; + + "fwupd_dev[$(_did[$(_idxes)])]" + string => "$(_name[$(_idxes)]) | $(_vend[$(_idxes)]) | v$(_ver[$(_idxes)]) | [$(_plug[$(_idxes)])]", + meta => { "inventory", "attribute_name=Firmware devices" }, + if => not(strcmp("$(_name[$(_idxes)])", "")); +} + +bundle monitor inventory_fwupd_monitor +# @brief Track firmware metrics as time-series measurements. +# +# Reads key=value files written by inventory_fwupd_render and +# inventory_fwupd_hsi and emits three measurements: +# - firmware_devices_total (devices fwupd is tracking) +# - firmware_updates_available (devices with a pending update) +# - firmware_hsi_failing (HSI security checks failing) +{ + measurements: + linux:: + "$(sys.statedir)/fwupd_inventory_measurements" + handle => "firmware_devices_total", + stream_type => "file", + data_type => "int", + history_type => "weekly", + units => "devices", + match_value => inventory_fwupd_kv("firmware_devices_total"), + if => fileexists("$(sys.statedir)/fwupd_inventory_measurements"); + + "$(sys.statedir)/fwupd_inventory_measurements" + handle => "firmware_updates_available", + stream_type => "file", + data_type => "int", + history_type => "weekly", + units => "devices", + match_value => inventory_fwupd_kv("firmware_updates_available"), + if => fileexists("$(sys.statedir)/fwupd_inventory_measurements"); + + "$(sys.statedir)/fwupd_measurements_hsi" + handle => "firmware_hsi_failing", + stream_type => "file", + data_type => "int", + history_type => "weekly", + units => "checks", + match_value => inventory_fwupd_kv("firmware_hsi_failing_attributes"), + if => fileexists("$(sys.statedir)/fwupd_measurements_hsi"); +} + +body match_value inventory_fwupd_kv(key) +{ + select_line_matching => "$(key)=.*"; + extraction_regex => "$(key)=(\d+)"; +} + +bundle agent __main__ +{ + methods: + "main" usebundle => inventory_fwupd_main; +} From 950573f7dfcecae4d0a7df8dd1241f625e3aa917 Mon Sep 17 00:00:00 2001 From: Nick Anderson Date: Mon, 25 May 2026 18:02:43 -0500 Subject: [PATCH 2/3] Added manage-fwupd module for firmware updates with allow-list and deferred reboot --- management/manage-fwupd/README.org | 111 ++++++++++ management/manage-fwupd/input.json | 33 +++ management/manage-fwupd/main.cf | 196 ++++++++++++++++++ .../mp-inventory-fwupd-status.png | Bin 0 -> 52939 bytes 4 files changed, 340 insertions(+) create mode 100644 management/manage-fwupd/README.org create mode 100644 management/manage-fwupd/input.json create mode 100644 management/manage-fwupd/main.cf create mode 100644 management/manage-fwupd/mp-inventory-fwupd-status.png diff --git a/management/manage-fwupd/README.org b/management/manage-fwupd/README.org new file mode 100644 index 0000000..3bbd59b --- /dev/null +++ b/management/manage-fwupd/README.org @@ -0,0 +1,111 @@ +Ensure fwupd is installed and its metadata refresh timer is enabled. +Optionally apply firmware updates for devices matching an allow-list. + +Depends on *inventory-fwupd*, which surfaces firmware versions, +pending updates, and HSI security attributes as inventory. This module +reads the updates cache that inventory-fwupd maintains rather than +calling fwupdmgr itself, avoiding duplicate work. + +* Inputs + +All three inputs live in the =manage_fwupd:allowed= bundle and can be +set via ~cfbs input~ (interactive), augments (=def.json=), CMDB, or +host-specific data. The variable names are: + +| Variable | Type | Default | +|--------------------------------------------+--------------------------+---------------| +| =manage_fwupd:allowed.apply_updates= | string (class expression) | =!any= | +| =manage_fwupd:allowed.device_name_reglist= | list (pcre patterns) | ={}= (empty) | +| =manage_fwupd:allowed.reboot_after_update= | string (class expression) | =!any= | + +*Augments example* (=def.json=): + +#+begin_src json +{ + "variables": { + "manage_fwupd:allowed.apply_updates": { + "value": "any" + }, + "manage_fwupd:allowed.device_name_reglist": { + "value": ["UEFI dbx", "System Firmware"] + }, + "manage_fwupd:allowed.reboot_after_update": { + "value": "Night" + } + } +} +#+end_src + +** Apply firmware updates + +A CFEngine class expression controlling when firmware updates are applied. +The default is =!any=, which means updates are never applied until you +explicitly opt in by changing this value. + +Examples: + +| Expression | Meaning | +|-------------------------------------------------+-----------------------------------------------------| +| =!any= | Disabled (default) -- never apply firmware updates | +| =any= | Apply on all hosts, always | +| =linux= | Apply on all Linux hosts | +| =(env_dev\vert{}env_qa).Night.(cohort_A\vert{}cohort_C)= | Dev/QA environments, at night, for cohorts A and C | +| =Hr04.Min00_05= | All hosts, but only during a 4:00--4:05 AM window | +| =laptop_updates_enabled= | Only hosts where you've defined this custom class | + +Use =.= for AND, =|= for OR, =!= for NOT, and parentheses for grouping. +These are CFEngine class expressions, not regular expressions. + +** Allowed devices + +A list of device name patterns (regular expressions) controlling which +devices are eligible for firmware updates. Even when =apply_updates= is +enabled, only devices whose name matches an entry in this list will be +updated. + +Use =.*= to match all devices. Use specific patterns to target individual +hardware, e.g. =UEFI dbx=, =System Firmware=, =TPM=. + +** Reboot after update + +A CFEngine class expression controlling when the host reboots after a +firmware update is applied. The default is =!any= (disabled). Some firmware +updates (e.g. UEFI capsule) only activate after a reboot. + +When enabled, the module waits for cf-agent to finish before rebooting. +On systemd systems this uses a transient service that polls for cf-agent's +PID to exit, then reboots immediately. On non-systemd systems it falls +back to ~shutdown -r +1~. + +* Mission Portal + +The module reports =fwupd management status= as an inventory attribute +visible in Mission Portal's inventory reports: + +[[file:mp-inventory-fwupd-status.png]] + +* Behavior + +1. *Always:* Ensures the =fwupd= package is installed +2. *Always:* Ensures =fwupd-refresh.timer= is enabled (keeps the LVFS firmware catalog current) +3. *When =apply_updates= class resolves true AND a device matches the allow-list:* + Runs ~fwupdmgr update --no-reboot-check ~ for each matching device. + A marker file prevents the same update from re-executing within the + same boot cycle. +4. *When =reboot_after_update= resolves true AND a firmware update was applied:* + Schedules a deferred reboot after cf-agent exits. + +The =--no-reboot-check= flag suppresses the interactive reboot prompt. +It does not skip or defer the update itself. + +* Requirements + +Linux only. The =fwupd= package must be available in the system's +package repositories. + +* Warnings + +Firmware updates carry inherent risk (bricking, required reboots, AC +power requirements). Use the allow-list to limit updates to +well-understood device classes. Test in a non-production environment +first. diff --git a/management/manage-fwupd/input.json b/management/manage-fwupd/input.json new file mode 100644 index 0000000..5a4d05c --- /dev/null +++ b/management/manage-fwupd/input.json @@ -0,0 +1,33 @@ +[ + { + "type": "string", + "variable": "apply_updates", + "namespace": "manage_fwupd", + "bundle": "allowed", + "label": "Apply firmware updates", + "question": "Class expression for when firmware updates should be applied (e.g. 'any', 'linux', '(env_dev|env_qa).Night.(cohort_A|cohort_C)'). Default '!any' means disabled.", + "default": "!any" + }, + { + "type": "list", + "variable": "device_name_reglist", + "namespace": "manage_fwupd", + "bundle": "allowed", + "label": "Allowed devices", + "subtype": { + "type": "string", + "label": "Device name pattern", + "question": "Device name (regex) to allow firmware updates for" + }, + "while": "Do you want to allow firmware updates for more devices?" + }, + { + "type": "string", + "variable": "reboot_after_update", + "namespace": "manage_fwupd", + "bundle": "allowed", + "label": "Reboot after firmware update", + "question": "Class expression for when to reboot after a firmware update is applied (e.g. 'any', 'Night', 'Hr04.Min00_05'). Default '!any' means disabled (no automatic reboot).", + "default": "!any" + } +] diff --git a/management/manage-fwupd/main.cf b/management/manage-fwupd/main.cf new file mode 100644 index 0000000..a164ba2 --- /dev/null +++ b/management/manage-fwupd/main.cf @@ -0,0 +1,196 @@ +body file control +{ + namespace => "manage_fwupd"; +@if minimum_version(3.27) + evaluation_order => "top_down"; +@endif +} + +bundle agent allowed +# @brief Default values for firmware update configuration. +# Override apply_updates, device_name_reglist, and reboot_after_update +# via CMDB or augments to control firmware update behavior. +{ + vars: + "apply_updates" + string => "!any", + if => not(isvariable("apply_updates")), + comment => "Default disabled; set to a class expression to enable firmware updates"; + + "device_name_reglist" + slist => {}, + if => not(isvariable("device_name_reglist")), + comment => "Default empty allow-list; override via CMDB or augments"; + + "reboot_after_update" + string => "!any", + if => not(isvariable("reboot_after_update")), + comment => "Default disabled; set to a class expression to reboot after firmware update"; +} + +bundle agent main +# @brief Ensure fwupd is installed, its refresh timer is enabled, and +# optionally apply firmware updates for devices matching an allow-list. +# +# Depends on inventory-fwupd, which provides: +# - inventory_fwupd_main.fwupdmgr (path to fwupdmgr binary) +# - default:have_fwupdmgr (class: fwupdmgr is present) +# - updates cache at $(sys.statedir)/fwupd_inventory_updates.json +# +# Firmware updates are applied when the apply_updates class expression resolves +# true AND a device name matches at least one pcre regular expression defined in +# manage_fwupd:allowed.device_name_reglist. +# +# A marker file ($(sys.statedir)/fwupd_update_applied) prevents the +# same update from re-executing on subsequent agent runs within the +# same boot cycle. The marker's mtime is compared against /proc/1 +# (boot time) via isnewerthan(). Any marker remaining from a prior boot +# is deleted so the update can re-evaluate after reboot. +# +# When reboot_after_update resolves true the marker is removed and +# a deferred reboot is scheduled. On systemd systems a transient +# service polls for cf-agent to exit then reboots immediately; on +# non-systemd systems the legacy shutdown -r +1 fallback is used. +# +# --no-reboot-check suppresses the interactive "reboot now?" prompt +# that fwupdmgr emits after certain updates. It does not skip or +# defer the update itself. +# +# @inventory fwupd management status - INSTALLED, NOT_INSTALLED, or NOT_SUPPORTED +{ + vars: + linux:: + "_update_marker" + string => "$(sys.statedir)/fwupd_update_applied"; + + "_systemd_run" + string => ifelse(isexecutable("/bin/systemd-run"), "/bin/systemd-run", + isexecutable("/usr/bin/systemd-run"), "/usr/bin/systemd-run", + ""), + comment => "Path to systemd-run when available (empty string otherwise)"; + + linux.default:have_fwupdmgr.manage_fwupd:apply_updates:: + "_updates_cache" + string => "$(sys.statedir)/fwupd_inventory_updates.json"; + + "_updates" + data => readjson("$(_updates_cache)"), + if => fileexists("$(_updates_cache)"); + + "_dev_idx" + slist => getindices("_updates[Devices]"), + if => isvariable("_updates"); + + "_dev_name[$(_dev_idx)]" + string => "$(_updates[Devices][$(_dev_idx)][Name])"; + + "_dev_id[$(_dev_idx)]" + string => "$(_updates[Devices][$(_dev_idx)][DeviceId])"; + + classes: + linux:: + "apply_updates" + scope => "namespace", + meta => { "report" }, + expression => "$(manage_fwupd:allowed.apply_updates)", + comment => "Opt-in via class expression (default '!any' = disabled)"; + + "reboot_after_update" + scope => "namespace", + meta => { "report" }, + expression => "$(manage_fwupd:allowed.reboot_after_update)", + comment => "Opt-in reboot after firmware update (default '!any' = disabled)"; + + "_have_systemd_run" + expression => isgreaterthan(string_length("$(_systemd_run)"), 0), + comment => "True when systemd-run is available for deferred reboot"; + + "_update_applied" + expression => and( + fileexists("$(_update_marker)"), + isnewerthan("$(_update_marker)", "/proc/1") + ), + comment => "A firmware update was applied during this boot cycle"; + + linux.default:have_fwupdmgr.manage_fwupd:apply_updates:: + "_device_allowed_$(_dev_idx)" + expression => regcmp("$(manage_fwupd:allowed.device_name_reglist)", "$(_dev_name[$(_dev_idx)])"), + comment => "Device $(_dev_name[$(_dev_idx)]) matches allow-list entry"; + + packages: + linux:: + "fwupd" + policy => "present", + comment => "Ensure fwupd is installed for firmware inventory and management"; + + services: + linux.default:have_fwupdmgr:: + "fwupd-refresh.timer" + service_policy => "enabled", + comment => "Ensure the fwupd metadata refresh timer is enabled so the LVFS firmware catalog stays current"; + + # --- Stale marker cleanup ---------------------------------------- + files: + linux:: + "$(_update_marker)" + delete => default:tidy, + if => not("_update_applied"), + comment => "Remove stale marker from a previous boot cycle"; + + # --- Apply firmware updates -------------------------------------- + commands: + linux.default:have_fwupdmgr.manage_fwupd:apply_updates:: + "$(default:inventory_fwupd_main.fwupdmgr)" + arglist => { "update", "--no-reboot-check", "$(_dev_id[$(_dev_idx)])" }, + handle => canonify("manage_fwupd_apply_device_$(_dev_idx)_$(_dev_name[$(_dev_idx)])"), + if => and("_device_allowed_$(_dev_idx)", not("_update_applied")), + classes => default:results("bundle", "manage_fwupd_update_$(_dev_idx)"), + comment => "Apply firmware update to allowed device $(_dev_name[$(_dev_idx)])"; + + # --- Post-update marker and reboot -------------------------------- + files: + linux.default:have_fwupdmgr.manage_fwupd:apply_updates:: + "$(_update_marker)" + create => "true", + if => "manage_fwupd_update_$(_dev_idx)_repaired", + comment => "Record that a firmware update was applied this boot cycle (prevents re-execution)"; + + manage_fwupd:_update_applied.manage_fwupd:reboot_after_update:: + "$(_update_marker)" + delete => default:tidy, + comment => "Clear marker before issuing reboot"; + + commands: + manage_fwupd:_update_applied.manage_fwupd:reboot_after_update.manage_fwupd:_have_systemd_run:: + "$(_systemd_run)" + arglist => { + "--unit=cfengine-fwupd-reboot", + "--description=Reboot after cf-agent exits for firmware update", + "/bin/bash", "-c", + "while kill -0 $(this.promiser_pid) 2>/dev/null; do sleep 1; done; /sbin/shutdown -r now 'Rebooting for firmware update applied by CFEngine'" + }, + handle => "manage_fwupd_reboot_after_update", + comment => "Deferred reboot: polls for cf-agent to exit, then reboots immediately"; + + manage_fwupd:_update_applied.manage_fwupd:reboot_after_update.!manage_fwupd:_have_systemd_run:: + "/sbin/shutdown" + arglist => { "-r", "+1", "Rebooting for firmware update applied by CFEngine" }, + handle => "manage_fwupd_reboot_after_update_fallback", + comment => "Fallback reboot for non-systemd systems (shutdown -r +1)"; + + # --- Inventory -------------------------------------------------- + vars: + linux.default:have_fwupdmgr:: + "_status" string => "INSTALLED"; + + linux.!default:have_fwupdmgr:: + "_status" string => "NOT_INSTALLED"; + + !linux:: + "_status" string => "NOT_SUPPORTED"; + + any:: + "inventory_status" + string => "$(_status)", + meta => { "inventory", "attribute_name=fwupd management status" }; +} diff --git a/management/manage-fwupd/mp-inventory-fwupd-status.png b/management/manage-fwupd/mp-inventory-fwupd-status.png new file mode 100644 index 0000000000000000000000000000000000000000..e2f702d37ffa2687a8c23d1bc27c0352cedefba6 GIT binary patch literal 52939 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

Gi$^Kvt)z)saTzdei$L`=yEj8YDE7WZn#if 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 g*wpQ-v)>IIP$}zEFR->V@C}Z Date: Mon, 25 May 2026 18:02:50 -0500 Subject: [PATCH 3/3] Added compliance-report-fwupd for firmware security posture via fwupd HSI --- reporting/compliance-report-fwupd/README.org | 137 +++ .../fwupd-compliance-report.json | 895 ++++++++++++++++++ .../mp-compliance-report-fwupd.png | Bin 0 -> 75167 bytes 3 files changed, 1032 insertions(+) create mode 100644 reporting/compliance-report-fwupd/README.org create mode 100644 reporting/compliance-report-fwupd/fwupd-compliance-report.json create mode 100644 reporting/compliance-report-fwupd/mp-compliance-report-fwupd.png diff --git a/reporting/compliance-report-fwupd/README.org b/reporting/compliance-report-fwupd/README.org new file mode 100644 index 0000000..6a2e612 --- /dev/null +++ b/reporting/compliance-report-fwupd/README.org @@ -0,0 +1,137 @@ +Compliance report definition for firmware security posture via fwupd. + +Imports a "Firmware Security (fwupd)" report into Mission Portal that +tracks Host Security Identifier (HSI) levels, fwupd installation, and +firmware update status across the fleet. + +The report contains 49 conditions: 7 rolled-up checks (HSI level +thresholds, fwupd installation, update status) and 42 per-attribute +checks covering every individual HSI firmware security test. + +* Mission Portal + +[[file:mp-compliance-report-fwupd.png]] + +* Requirements + +- *inventory-fwupd* module providing the inventory attributes and + platform classes (=fwupd_cpu_vendor_intel=, =fwupd_cpu_vendor_amd=, + =fwupd_oem_vendor_hp=) that the compliance conditions reference +- *compliance-report-imports* autorun bundle on the hub to import + the JSON definition into Mission Portal + +* Rolled-up Conditions + +| Condition | Category | Severity | +|-----------------------------------+--------------------+----------| +| *fwupd installed* | Firmware tooling | high | +| *HSI Level 1+ (Critical)* | HSI Level Overview | high | +| *HSI Level 2+ (Important)* | HSI Level Overview | medium | +| *HSI Level 3+ (Recommended)* | HSI Level Overview | low | +| *HSI Level 4 (Complete)* | HSI Level Overview | low | +| *No pending firmware updates* | Firmware updates | medium | +| *Firmware status healthy* | Firmware updates | medium | + +HSI level checks are cumulative thresholds -- a host at HSI:3 passes +the Level 1+, 2+, and 3+ conditions but fails Level 4. + +* Per-Attribute Conditions + +Each individual HSI firmware security check is a separate compliance +condition. The inventory attribute name follows the pattern +=Firmware HSI L: = with value =PASS= or =FAIL=. + +Per-attribute conditions use ~condition_for: "failing"~ -- a host is +only marked failing when the attribute is explicitly =FAIL=. Hosts +that don't report a given attribute (e.g., Intel-only checks on AMD +hardware, or VMs without HSI data) show as "not evaluated" rather +than failing. The checks are defined by the +[[https://fwupd.github.io/libfwupdplugin/hsi.html][fwupd HSI specification]]. + +** Level 1 -- Critical (19 conditions, severity: high) + +| Condition | Inventory attribute | Platform | +|------------------------------+--------------------------------------------+----------| +| UEFI SecureBoot | =Firmware HSI L1: UEFI secure boot= | All | +| TPM 2.0 Present | =Firmware HSI L1: TPM v2.0= | All | +| Empty PCR in TPM | =Firmware HSI L1: TPM empty PCRs= | All | +| UEFI Platform Key | =Firmware HSI L1: UEFI platform key= | All | +| BIOS Capsule Updates | =Firmware HSI L1: BIOS firmware updates= | All | +| Supported CPU | =Firmware HSI L1: Supported CPU= | All | +| UEFI BootService Variables | =Firmware HSI L1: UEFI bootservice variables= | All | +| BIOS Write Enable (BWE) | =Firmware HSI L1: SPI write= | Intel | +| BIOS Lock Enable (BLE) | =Firmware HSI L1: SPI lock= | Intel | +| SMM BIOS Write Protect | =Firmware HSI L1: SPI BIOS region= | Intel | +| Read-only SPI Descriptor | =Firmware HSI L1: SPI descriptor= | Intel | +| Platform Debug (Intel DCI) | =Firmware HSI L1: Platform debugging= | Intel | +| ME Manufacturing Mode | =Firmware HSI L1: csme manufacturing mode= | Intel | +| ME Flash Descriptor Override | =Firmware HSI L1: csme override= | Intel | +| ME BootGuard Platform Key | =Firmware HSI L1: MEI key manifest= | Intel | +| CSME Version | =Firmware HSI L1: CSME version= | Intel | +| Part is Fused | =Firmware HSI L1: Part is fused= | Intel | +| AMD Microcode Signature | =Firmware HSI L1: AMD microcode signature= | AMD | +| SMM Locked Down | =Firmware HSI L1: SMM locked down= | AMD | + +** Level 2 -- Important (12 conditions, severity: medium) + +| Condition | Inventory attribute | Platform | +|----------------------------+-------------------------------------------------+----------| +| DMA Protection (IOMMU) | =Firmware HSI L2: IOMMU= | All | +| PCR0 TPM Event Log | =Firmware HSI L2: TPM PCR0 reconstruction= | All | +| BIOS Rollback Protection | =Firmware HSI L2: BIOS rollback protection= | All | +| Intel BootGuard Enabled | =Firmware HSI L2: Intel BootGuard= | Intel | +| Intel BootGuard Verified | =Firmware HSI L2: Intel BootGuard verified boot= | Intel | +| Intel BootGuard ACM | =Firmware HSI L2: Intel BootGuard ACM protected= | Intel | +| Intel BootGuard OTP | =Firmware HSI L2: Intel BootGuard OTP fuse= | Intel | +| Part is Debug Locked | =Firmware HSI L2: Platform debugging= | Intel | +| Intel GDS Mitigation | =Firmware HSI L2: Intel GDS mitigation= | Intel | +| AMD Platform Secure Boot | =Firmware HSI L2: AMD platform secure boot= | AMD | +| AMD SPI Write Protections | =Firmware HSI L2: AMD SPI write protections= | AMD | +| HP SureStart | =Firmware HSI L2: HP SureStart= | HP | + +** Level 3 -- Recommended (8 conditions, severity: low) + +| Condition | Inventory attribute | Platform | +|------------------------------------+----------------------------------------------+----------| +| Suspend-to-Idle | =Firmware HSI L3: Suspend-to-idle= | All | +| Suspend to RAM Disabled | =Firmware HSI L3: Suspend-to-ram= | All | +| Pre-boot DMA Protection | =Firmware HSI L3: Pre-boot DMA protection= | All | +| CET Available | =Firmware HSI L3: CET Platform= | All | +| CET Utilized by OS | =Firmware HSI L3: CET OS Support= | All | +| Early-boot UEFI Memory Protections | =Firmware HSI L3: UEFI memory protections= | All | +| Intel BootGuard Policy | =Firmware HSI L3: Intel BootGuard error policy= | Intel | +| AMD SPI Replay Protections | =Firmware HSI L3: AMD SPI replay protections= | AMD | + +** Level 4 -- Complete (3 conditions, severity: low) + +| Condition | Inventory attribute | Platform | +|-------------------------------+--------------------------------------------+----------| +| DRAM Memory Encryption | =Firmware HSI L4: Encrypted RAM= | All | +| SMAP | =Firmware HSI L4: SMAP= | All | +| AMD Secure Processor Rollback | =Firmware HSI L4: AMD rollback protection= | AMD | + +* Categories + +| Category | Conditions | Scope | +|---------------------------+------------+----------------------------| +| HSI Level Overview | 4 | Rolled-up level thresholds | +| HSI Level 1 - Critical | 19 | Per-attribute checks | +| HSI Level 2 - Important | 12 | Per-attribute checks | +| HSI Level 3 - Recommended | 8 | Per-attribute checks | +| HSI Level 4 - Complete | 3 | Per-attribute checks | +| Firmware updates | 2 | Update status | +| Firmware tooling | 1 | fwupd installation | + +* Platform support + +Linux only. Platform-specific conditions use =host_filter= class +expressions so they only activate on relevant hardware: + +| Platform | =host_filter= | Conditions | Detection | +|----------+----------------------------+------------+--------------------------------| +| All | =linux= | 25 | -- | +| Intel | =fwupd_cpu_vendor_intel= | 17 | =/proc/cpuinfo= vendor_id | +| AMD | =fwupd_cpu_vendor_amd= | 6 | =/proc/cpuinfo= vendor_id | +| HP | =fwupd_oem_vendor_hp= | 1 | =/sys/class/dmi/id/sys_vendor= | + +These classes are defined by the *inventory-fwupd* module. diff --git a/reporting/compliance-report-fwupd/fwupd-compliance-report.json b/reporting/compliance-report-fwupd/fwupd-compliance-report.json new file mode 100644 index 0000000..d4dd021 --- /dev/null +++ b/reporting/compliance-report-fwupd/fwupd-compliance-report.json @@ -0,0 +1,895 @@ +{ + "reports": { + "fwupd-firmware-security": { + "id": "fwupd-firmware-security", + "type": "compliance", + "title": "Firmware Security (fwupd)", + "conditions": [ + "fwupd:hsi-installed", + "fwupd:hsi-level-1", + "fwupd:hsi-level-2", + "fwupd:hsi-level-3", + "fwupd:hsi-level-4", + "fwupd:no-pending-updates", + "fwupd:status-ok", + "fwupd:hsi-l1-uefi-secure-boot", + "fwupd:hsi-l1-tpm-v2.0", + "fwupd:hsi-l1-tpm-empty-pcrs", + "fwupd:hsi-l1-uefi-platform-key", + "fwupd:hsi-l1-bios-firmware-updates", + "fwupd:hsi-l1-spi-write", + "fwupd:hsi-l1-spi-lock", + "fwupd:hsi-l1-spi-bios-region", + "fwupd:hsi-l1-spi-descriptor", + "fwupd:hsi-l1-supported-cpu", + "fwupd:hsi-l1-platform-debugging", + "fwupd:hsi-l1-csme-manufacturing-mode", + "fwupd:hsi-l1-csme-override", + "fwupd:hsi-l1-mei-key-manifest", + "fwupd:hsi-l1-csme-version", + "fwupd:hsi-l1-uefi-bootservice-vars", + "fwupd:hsi-l1-amd-microcode-signature", + "fwupd:hsi-l1-platform-fused", + "fwupd:hsi-l1-smm-locked-down", + "fwupd:hsi-l2-iommu", + "fwupd:hsi-l2-intel-bootguard", + "fwupd:hsi-l2-intel-bootguard-verified", + "fwupd:hsi-l2-intel-bootguard-acm", + "fwupd:hsi-l2-intel-bootguard-otp", + "fwupd:hsi-l2-tpm-pcr0-reconstruction", + "fwupd:hsi-l2-bios-rollback-protection", + "fwupd:hsi-l2-platform-debugging", + "fwupd:hsi-l2-intel-gds-mitigation", + "fwupd:hsi-l2-amd-platform-secure-boot", + "fwupd:hsi-l2-amd-spi-write-protections", + "fwupd:hsi-l2-hp-surestart", + "fwupd:hsi-l3-suspend-to-idle", + "fwupd:hsi-l3-suspend-to-ram", + "fwupd:hsi-l3-pre-boot-dma-protection", + "fwupd:hsi-l3-intel-bootguard-policy", + "fwupd:hsi-l3-cet-platform", + "fwupd:hsi-l3-amd-spi-replay-protections", + "fwupd:hsi-l3-uefi-memory-protections", + "fwupd:hsi-l4-encrypted-ram", + "fwupd:hsi-l4-smap", + "fwupd:hsi-l3-cet-os-support", + "fwupd:hsi-l4-amd-rollback-protection" + ] + } + }, + "conditions": { + "fwupd:hsi-installed": { + "id": "fwupd:hsi-installed", + "name": "fwupd installed", + "description": "Checks that fwupd is installed on the host.\n\nHosts without fwupd report a firmware update status of FWUPD_MISSING and cannot provide firmware security inventory. This is a prerequisite for all other firmware security checks.", + "type": "inventory", + "condition_for": "passing", + "rules": [ + { + "attribute": "Firmware update status", + "operator": "not_match", + "value": "FWUPD_MISSING" + } + ], + "category": "Firmware tooling", + "severity": "high", + "host_filter": "linux" + }, + "fwupd:hsi-level-1": { + "id": "fwupd:hsi-level-1", + "name": "HSI Level 1+ - Critical firmware protections", + "description": "Rolled-up check: the host achieves at least HSI Level 1 (Critical). See the individual Level 1 conditions for specific checks.", + "type": "inventory", + "condition_for": "passing", + "rules": [ + { + "attribute": "Firmware HSI level", + "operator": "not_match", + "value": "HSI:0" + } + ], + "category": "HSI Level Overview", + "severity": "high", + "host_filter": "linux" + }, + "fwupd:hsi-level-2": { + "id": "fwupd:hsi-level-2", + "name": "HSI Level 2+ - Important firmware protections", + "description": "Rolled-up check: the host achieves at least HSI Level 2 (Important). See the individual Level 2 conditions for specific checks.", + "type": "inventory", + "condition_for": "passing", + "rules": [ + { + "attribute": "Firmware HSI level", + "operator": "regex_matches", + "value": "HSI:[2-4]" + } + ], + "category": "HSI Level Overview", + "severity": "medium", + "host_filter": "linux" + }, + "fwupd:hsi-level-3": { + "id": "fwupd:hsi-level-3", + "name": "HSI Level 3+ - Recommended firmware protections", + "description": "Rolled-up check: the host achieves at least HSI Level 3 (Recommended). See the individual Level 3 conditions for specific checks.", + "type": "inventory", + "condition_for": "passing", + "rules": [ + { + "attribute": "Firmware HSI level", + "operator": "regex_matches", + "value": "HSI:[3-4]" + } + ], + "category": "HSI Level Overview", + "severity": "low", + "host_filter": "linux" + }, + "fwupd:hsi-level-4": { + "id": "fwupd:hsi-level-4", + "name": "HSI Level 4 - Complete firmware protections", + "description": "Rolled-up check: the host achieves HSI Level 4 (Complete). See the individual Level 4 conditions for specific checks.", + "type": "inventory", + "condition_for": "passing", + "rules": [ + { + "attribute": "Firmware HSI level", + "operator": "matches", + "value": "HSI:4" + } + ], + "category": "HSI Level Overview", + "severity": "low", + "host_filter": "linux" + }, + "fwupd:no-pending-updates": { + "id": "fwupd:no-pending-updates", + "name": "No pending firmware updates", + "description": "Checks that the host has no outstanding firmware updates.\n\nHosts with pending firmware updates have known firmware versions that should be applied. Use the manage-fwupd module to automate firmware update application.", + "type": "inventory", + "condition_for": "passing", + "rules": [ + { + "attribute": "Firmware update status", + "operator": "not_match", + "value": "UPDATES_AVAILABLE" + } + ], + "category": "Firmware updates", + "severity": "medium", + "host_filter": "linux" + }, + "fwupd:status-ok": { + "id": "fwupd:status-ok", + "name": "Firmware status healthy", + "description": "Checks that fwupd is present, has discoverable devices, and no pending updates.\n\nThis is the strictest firmware status check. A host passes only when fwupd is installed, reports at least one updatable device, and has no outstanding firmware updates.", + "type": "inventory", + "condition_for": "passing", + "rules": [ + { + "attribute": "Firmware update status", + "operator": "matches", + "value": "OK" + } + ], + "category": "Firmware updates", + "severity": "medium", + "host_filter": "linux" + }, + "fwupd:hsi-l1-uefi-secure-boot": { + "id": "fwupd:hsi-l1-uefi-secure-boot", + "name": "UEFI SecureBoot", + "description": "Secure Boot is enabled and functional.\n\nUEFI Secure Boot prevents unauthorized code from running during the boot process by verifying digital signatures of boot loaders and drivers.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L1: UEFI secure boot", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 1 - Critical", + "severity": "high", + "host_filter": "linux" + }, + "fwupd:hsi-l1-tpm-v2.0": { + "id": "fwupd:hsi-l1-tpm-v2.0", + "name": "TPM 2.0 Present", + "description": "TPM 2.0 device exists and is enabled.\n\nA Trusted Platform Module provides hardware-backed cryptographic operations and secure measurement storage for verified boot.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L1: TPM v2.0", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 1 - Critical", + "severity": "high", + "host_filter": "linux" + }, + "fwupd:hsi-l1-tpm-empty-pcrs": { + "id": "fwupd:hsi-l1-tpm-empty-pcrs", + "name": "Empty PCR in TPM", + "description": "All TPM PCRs 0-7 have valid measurements.\n\nEmpty Platform Configuration Registers indicate that the firmware boot process is not being measured, weakening the chain of trust.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L1: TPM empty PCRs", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 1 - Critical", + "severity": "high", + "host_filter": "linux" + }, + "fwupd:hsi-l1-uefi-platform-key": { + "id": "fwupd:hsi-l1-uefi-platform-key", + "name": "UEFI Platform Key", + "description": "Valid production platform key is installed (not a test key).\n\nThe UEFI Platform Key (PK) is the root of trust for Secure Boot. A test key allows any code to be signed and run.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L1: UEFI platform key", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 1 - Critical", + "severity": "high", + "host_filter": "linux" + }, + "fwupd:hsi-l1-bios-firmware-updates": { + "id": "fwupd:hsi-l1-bios-firmware-updates", + "name": "BIOS Capsule Updates", + "description": "Firmware update mechanism (UEFI capsule updates) is enabled.\n\nWhen disabled, the system cannot receive firmware security patches through the standard UEFI update mechanism.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L1: BIOS firmware updates", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 1 - Critical", + "severity": "high", + "host_filter": "linux" + }, + "fwupd:hsi-l1-spi-write": { + "id": "fwupd:hsi-l1-spi-write", + "name": "BIOS Write Enable (BWE)", + "description": "SPI ROM is protected from userspace writes.\n\nThe BIOS Write Enable bit controls whether the SPI flash containing the BIOS can be written from the operating system. It should be disabled to prevent firmware tampering.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L1: SPI write", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 1 - Critical", + "severity": "high", + "host_filter": "fwupd_cpu_vendor_intel" + }, + "fwupd:hsi-l1-spi-lock": { + "id": "fwupd:hsi-l1-spi-lock", + "name": "BIOS Lock Enable (BLE)", + "description": "SMI protection on BIOSWE bit changes is enabled.\n\nBIOS Lock Enable generates a System Management Interrupt when software attempts to change the BIOS Write Enable bit, preventing silent firmware tampering.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L1: SPI lock", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 1 - Critical", + "severity": "high", + "host_filter": "fwupd_cpu_vendor_intel" + }, + "fwupd:hsi-l1-spi-bios-region": { + "id": "fwupd:hsi-l1-spi-bios-region", + "name": "SMM BIOS Write Protect", + "description": "BIOS region is non-writable outside System Management Mode.\n\nSMM BIOS Write Protect ensures that the BIOS SPI flash region cannot be modified except from within the trusted SMM environment.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L1: SPI BIOS region", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 1 - Critical", + "severity": "high", + "host_filter": "fwupd_cpu_vendor_intel" + }, + "fwupd:hsi-l1-spi-descriptor": { + "id": "fwupd:hsi-l1-spi-descriptor", + "name": "Read-only SPI Descriptor", + "description": "SPI flash descriptor region is locked.\n\nThe SPI descriptor defines access permissions for SPI flash regions. If unlocked, an attacker could modify these permissions to gain write access to the BIOS.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L1: SPI descriptor", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 1 - Critical", + "severity": "high", + "host_filter": "fwupd_cpu_vendor_intel" + }, + "fwupd:hsi-l1-supported-cpu": { + "id": "fwupd:hsi-l1-supported-cpu", + "name": "Supported CPU", + "description": "Platform CPU has HSI test support in fwupd.\n\nUnsupported CPUs cannot have their firmware security attributes fully evaluated.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L1: Supported CPU", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 1 - Critical", + "severity": "high", + "host_filter": "linux" + }, + "fwupd:hsi-l1-platform-debugging": { + "id": "fwupd:hsi-l1-platform-debugging", + "name": "Platform Debug (Intel DCI)", + "description": "USB3 debugging interface (Intel DCI) is disabled.\n\nDirect Connect Interface allows deep hardware debugging over USB3. If enabled in production, it provides an attack surface for physical access exploits.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L1: Platform debugging", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 1 - Critical", + "severity": "high", + "host_filter": "fwupd_cpu_vendor_intel" + }, + "fwupd:hsi-l1-csme-manufacturing-mode": { + "id": "fwupd:hsi-l1-csme-manufacturing-mode", + "name": "ME Manufacturing Mode", + "description": "Intel Management Engine is not in manufacturing mode.\n\nManufacturing mode is intended for factory provisioning. If left enabled, it exposes additional attack surface on the ME subsystem.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L1: csme manufacturing mode", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 1 - Critical", + "severity": "high", + "host_filter": "fwupd_cpu_vendor_intel" + }, + "fwupd:hsi-l1-csme-override": { + "id": "fwupd:hsi-l1-csme-override", + "name": "ME Flash Descriptor Override", + "description": "Intel ME flash descriptor override (debug mode) is not accessible.\n\nThe override strap allows bypassing SPI flash access controls, enabling firmware tampering through physical access.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L1: csme override", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 1 - Critical", + "severity": "high", + "host_filter": "fwupd_cpu_vendor_intel" + }, + "fwupd:hsi-l1-mei-key-manifest": { + "id": "fwupd:hsi-l1-mei-key-manifest", + "name": "ME BootGuard Platform Key", + "description": "CPU fuses are not using leaked or compromised keys.\n\nThe MEI key manifest validates that the BootGuard keys burned into the CPU fuses have not been compromised.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L1: MEI key manifest", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 1 - Critical", + "severity": "high", + "host_filter": "fwupd_cpu_vendor_intel" + }, + "fwupd:hsi-l1-csme-version": { + "id": "fwupd:hsi-l1-csme-version", + "name": "CSME Version", + "description": "Intel Converged Security and Management Engine firmware is not vulnerable to known critical CVEs.\n\nOutdated CSME versions may contain exploitable vulnerabilities that compromise the hardware root of trust.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L1: CSME version", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 1 - Critical", + "severity": "high", + "host_filter": "fwupd_cpu_vendor_intel" + }, + "fwupd:hsi-l1-uefi-bootservice-vars": { + "id": "fwupd:hsi-l1-uefi-bootservice-vars", + "name": "UEFI BootService Variables", + "description": "Boot-only UEFI variables are not readable at OS runtime.\n\nBootService variables should be inaccessible after ExitBootServices() to prevent information leakage to the operating system.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L1: UEFI bootservice variables", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 1 - Critical", + "severity": "high", + "host_filter": "linux" + }, + "fwupd:hsi-l1-amd-microcode-signature": { + "id": "fwupd:hsi-l1-amd-microcode-signature", + "name": "AMD Microcode Signature", + "description": "Firmware prevents loading of maliciously crafted CPU microcode.\n\nAMD processors vulnerable to microcode signature verification bypass (EntrySign) allow arbitrary microcode patches, undermining hardware security guarantees.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L1: AMD microcode signature", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 1 - Critical", + "severity": "high", + "host_filter": "fwupd_cpu_vendor_amd" + }, + "fwupd:hsi-l1-platform-fused": { + "id": "fwupd:hsi-l1-platform-fused", + "name": "Part is Fused", + "description": "Hardware one-time-programmable fuses are blown for tampering protection.\n\nProduction hardware should have security fuses blown to lock down debugging interfaces and enforce boot chain verification.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L1: Part is fused", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 1 - Critical", + "severity": "high", + "host_filter": "fwupd_cpu_vendor_intel" + }, + "fwupd:hsi-l1-smm-locked-down": { + "id": "fwupd:hsi-l1-smm-locked-down", + "name": "SMM Locked Down", + "description": "System Management Mode save state protection prevents data exfiltration.\n\nSMM lockdown prevents SMM handlers from reading or modifying OS memory, closing a class of privilege escalation attacks.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L1: SMM locked down", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 1 - Critical", + "severity": "high", + "host_filter": "fwupd_cpu_vendor_amd" + }, + "fwupd:hsi-l2-iommu": { + "id": "fwupd:hsi-l2-iommu", + "name": "DMA Protection (IOMMU)", + "description": "IOMMU is enabled for PCIe DMA attack prevention.\n\nThe IOMMU restricts DMA-capable devices to their assigned memory regions, preventing malicious peripherals from reading or writing arbitrary system memory.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L2: IOMMU", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 2 - Important", + "severity": "medium", + "host_filter": "linux" + }, + "fwupd:hsi-l2-intel-bootguard": { + "id": "fwupd:hsi-l2-intel-bootguard", + "name": "Intel BootGuard Enabled", + "description": "Intel BootGuard feature is activated.\n\nBootGuard provides hardware-rooted verified boot by validating the Initial Boot Block before execution.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L2: Intel BootGuard", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 2 - Important", + "severity": "medium", + "host_filter": "fwupd_cpu_vendor_intel" + }, + "fwupd:hsi-l2-intel-bootguard-verified": { + "id": "fwupd:hsi-l2-intel-bootguard-verified", + "name": "Intel BootGuard Verified", + "description": "Intel BootGuard boot chain verification is functional.\n\nVerified Boot mode ensures each stage of the boot process is cryptographically validated before execution.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L2: Intel BootGuard verified boot", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 2 - Important", + "severity": "medium", + "host_filter": "fwupd_cpu_vendor_intel" + }, + "fwupd:hsi-l2-intel-bootguard-acm": { + "id": "fwupd:hsi-l2-intel-bootguard-acm", + "name": "Intel BootGuard ACM", + "description": "Intel Authenticated Code Modules are protected.\n\nACMs are signed microcode modules executed by the CPU before any other code. Their integrity is essential for the hardware root of trust.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L2: Intel BootGuard ACM protected", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 2 - Important", + "severity": "medium", + "host_filter": "fwupd_cpu_vendor_intel" + }, + "fwupd:hsi-l2-intel-bootguard-otp": { + "id": "fwupd:hsi-l2-intel-bootguard-otp", + "name": "Intel BootGuard OTP", + "description": "SOC is locked via one-time programmable fuses for BootGuard.\n\nOTP fuses permanently bind the BootGuard key hash to the CPU, preventing key substitution attacks.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L2: Intel BootGuard OTP fuse", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 2 - Important", + "severity": "medium", + "host_filter": "fwupd_cpu_vendor_intel" + }, + "fwupd:hsi-l2-tpm-pcr0-reconstruction": { + "id": "fwupd:hsi-l2-tpm-pcr0-reconstruction", + "name": "PCR0 TPM Event Log", + "description": "TPM PCR0 value matches the reconstructed firmware measurements.\n\nPCR0 reconstruction verifies that the TPM event log is consistent with the actual PCR values, detecting tampering with boot measurements.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L2: TPM PCR0 reconstruction", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 2 - Important", + "severity": "medium", + "host_filter": "linux" + }, + "fwupd:hsi-l2-bios-rollback-protection": { + "id": "fwupd:hsi-l2-bios-rollback-protection", + "name": "BIOS Rollback Protection", + "description": "BIOS prevents installing older vulnerable firmware versions.\n\nWithout rollback protection, an attacker with firmware write access could downgrade to a version with known vulnerabilities.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L2: BIOS rollback protection", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 2 - Important", + "severity": "medium", + "host_filter": "linux" + }, + "fwupd:hsi-l2-platform-debugging": { + "id": "fwupd:hsi-l2-platform-debugging", + "name": "Part is Debug Locked", + "description": "Hardware debugging access is locked.\n\nDebug interfaces (JTAG, etc.) allow full hardware access. In production systems these should be permanently locked to prevent physical attack vectors.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L2: Platform debugging", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 2 - Important", + "severity": "medium", + "host_filter": "fwupd_cpu_vendor_intel" + }, + "fwupd:hsi-l2-intel-gds-mitigation": { + "id": "fwupd:hsi-l2-intel-gds-mitigation", + "name": "Intel GDS Mitigation", + "description": "CPU microcode patches mitigate Gather Data Sampling.\n\nGDS (Downfall) is a transient execution side-channel vulnerability in Intel CPUs that can leak data across security boundaries.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L2: Intel GDS mitigation", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 2 - Important", + "severity": "medium", + "host_filter": "fwupd_cpu_vendor_intel" + }, + "fwupd:hsi-l2-amd-platform-secure-boot": { + "id": "fwupd:hsi-l2-amd-platform-secure-boot", + "name": "AMD Platform Secure Boot", + "description": "AMD Platform Secure Boot prevents non-manufacturer firmware execution.\n\nThe AMD Secure Processor validates firmware authenticity before allowing execution, providing a hardware root of trust.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L2: AMD platform secure boot", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 2 - Important", + "severity": "medium", + "host_filter": "fwupd_cpu_vendor_amd" + }, + "fwupd:hsi-l2-amd-spi-write-protections": { + "id": "fwupd:hsi-l2-amd-spi-write-protections", + "name": "AMD SPI Write Protections", + "description": "SPI bus write control prevents unauthorized firmware changes on AMD systems.\n\nAMD SPI write protections lock the SPI flash to prevent unauthorized firmware modifications.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L2: AMD SPI write protections", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 2 - Important", + "severity": "medium", + "host_filter": "fwupd_cpu_vendor_amd" + }, + "fwupd:hsi-l2-hp-surestart": { + "id": "fwupd:hsi-l2-hp-surestart", + "name": "HP SureStart", + "description": "HP SureStart BIOS self-healing and corruption detection is enabled.\n\nHP SureStart monitors the BIOS for corruption or tampering and automatically restores it from a protected copy.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L2: HP SureStart", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 2 - Important", + "severity": "medium", + "host_filter": "fwupd_oem_vendor_hp" + }, + "fwupd:hsi-l3-suspend-to-idle": { + "id": "fwupd:hsi-l3-suspend-to-idle", + "name": "Suspend-to-Idle", + "description": "Default sleep state is suspend-to-idle (S0ix) rather than S3.\n\nSuspend-to-idle keeps the IOMMU and other security features active during sleep, unlike S3 which powers down protections.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L3: Suspend-to-idle", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 3 - Recommended", + "severity": "low", + "host_filter": "linux" + }, + "fwupd:hsi-l3-suspend-to-ram": { + "id": "fwupd:hsi-l3-suspend-to-ram", + "name": "Suspend to RAM Disabled", + "description": "S3 suspend-to-RAM sleep is not available or not the default.\n\nS3 sleep powers down the IOMMU, disabling DMA protections and creating a window for cold boot or DMA attacks on resume.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L3: Suspend-to-ram", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 3 - Recommended", + "severity": "low", + "host_filter": "linux" + }, + "fwupd:hsi-l3-pre-boot-dma-protection": { + "id": "fwupd:hsi-l3-pre-boot-dma-protection", + "name": "Pre-boot DMA Protection", + "description": "IOMMU is configured for pre-boot DMA attack mitigation.\n\nPre-boot DMA protection ensures the IOMMU is active before the OS loads, preventing DMA attacks during early boot when the OS IOMMU driver is not yet running.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L3: Pre-boot DMA protection", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 3 - Recommended", + "severity": "low", + "host_filter": "linux" + }, + "fwupd:hsi-l3-intel-bootguard-policy": { + "id": "fwupd:hsi-l3-intel-bootguard-policy", + "name": "Intel BootGuard Policy", + "description": "BootGuard error enforcement policy halts boot on verification failure.\n\nIn enforcement mode, BootGuard stops the boot process if signature verification fails rather than continuing with potentially compromised firmware.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L3: Intel BootGuard error policy", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 3 - Recommended", + "severity": "low", + "host_filter": "fwupd_cpu_vendor_intel" + }, + "fwupd:hsi-l3-cet-platform": { + "id": "fwupd:hsi-l3-cet-platform", + "name": "CET Available", + "description": "Control Flow Enforcement Technology is supported and enabled.\n\nCET provides hardware-enforced shadow stacks and indirect branch tracking to mitigate return-oriented programming (ROP) and jump-oriented programming (JOP) attacks.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L3: CET Platform", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 3 - Recommended", + "severity": "low", + "host_filter": "linux" + }, + "fwupd:hsi-l3-amd-spi-replay-protections": { + "id": "fwupd:hsi-l3-amd-spi-replay-protections", + "name": "AMD SPI Replay Protections", + "description": "Monotonic counter prevents SPI flash replay attacks on AMD systems.\n\nSPI replay protection uses a hardware counter to detect when an older SPI flash image has been re-applied, preventing firmware downgrade attacks.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L3: AMD SPI replay protections", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 3 - Recommended", + "severity": "low", + "host_filter": "fwupd_cpu_vendor_amd" + }, + "fwupd:hsi-l3-uefi-memory-protections": { + "id": "fwupd:hsi-l3-uefi-memory-protections", + "name": "Early-boot UEFI Memory Protections", + "description": "NX and read-only protections are applied to UEFI boot memory.\n\nEarly-boot memory protections prevent code injection and data corruption during the UEFI boot phase by enforcing W^X (write XOR execute) policies.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L3: UEFI memory protections", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 3 - Recommended", + "severity": "low", + "host_filter": "linux" + }, + "fwupd:hsi-l4-encrypted-ram": { + "id": "fwupd:hsi-l4-encrypted-ram", + "name": "DRAM Memory Encryption", + "description": "Total Memory Encryption (Intel TME) or Secure Memory Encryption (AMD SME) encrypts all data on the memory bus.\n\nMemory encryption protects against physical memory access attacks including cold boot attacks and DMA-based memory scraping.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L4: Encrypted RAM", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 4 - Complete", + "severity": "low", + "host_filter": "linux" + }, + "fwupd:hsi-l4-smap": { + "id": "fwupd:hsi-l4-smap", + "name": "SMAP", + "description": "Supervisor Mode Access Prevention is enabled.\n\nSMAP prevents the kernel from accidentally accessing user-space memory, mitigating a class of privilege escalation exploits that trick the kernel into dereferencing user-controlled pointers.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L4: SMAP", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 4 - Complete", + "severity": "low", + "host_filter": "linux" + }, + "fwupd:hsi-l3-cet-os-support": { + "id": "fwupd:hsi-l3-cet-os-support", + "name": "CET Utilized by OS", + "description": "The operating system actively uses Control Flow Enforcement Technology.\n\nWhile CET hardware support (Level 3) is necessary, the OS must also enable and use it for the protection to be effective.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L3: CET OS Support", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 3 - Recommended", + "severity": "low", + "host_filter": "linux" + }, + "fwupd:hsi-l4-amd-rollback-protection": { + "id": "fwupd:hsi-l4-amd-rollback-protection", + "name": "AMD Secure Processor Rollback", + "description": "AMD Secure Processor prevents firmware downgrade attacks.\n\nThe AMD Platform Security Processor maintains anti-rollback counters that prevent installation of older firmware versions with known vulnerabilities.", + "type": "inventory", + "condition_for": "failing", + "rules": [ + { + "attribute": "Firmware HSI L4: AMD rollback protection", + "operator": "matches", + "value": "FAIL" + } + ], + "category": "HSI Level 4 - Complete", + "severity": "low", + "host_filter": "fwupd_cpu_vendor_amd" + } + } +} diff --git a/reporting/compliance-report-fwupd/mp-compliance-report-fwupd.png b/reporting/compliance-report-fwupd/mp-compliance-report-fwupd.png new file mode 100644 index 0000000000000000000000000000000000000000..06f318ff116931db71704fe440d625fcb6a8b430 GIT binary patch literal 75167 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