Commit Graph

4425 Commits

Author SHA1 Message Date
Richard Hughes
8fdefd459b pci-bcr: Read the PCI BCR config register from userspace
We can read this from userspace even when SB is turned on and with the kernel
locked down. The kernel securityfs patches are still in-progress, but will take
significant time to get upstream.

The kernel patches are needed when the PCI device is hidden from userspace.
2020-05-15 10:21:07 +01:00
Mario Limonciello
0f68c29908 trivial: Sort the HSI attribute list in the daemon
Sort by level, success/fail/obsoleted, then by name.
2020-05-15 10:21:07 +01:00
Richard Hughes
1b97ee29c9 trivial: Do not use a failed checkmark for an obsoleted attr 2020-05-15 10:21:07 +01:00
Richard Hughes
4661cc52d7 trivial: Set a log domain for the obsoleted message 2020-05-15 10:21:07 +01:00
Richard Hughes
9d4ce3c4f1 trivial: Turn off werror for Arch CI 2020-05-14 16:45:45 -05:00
Richard Hughes
fd732d219d trivial: Fix a -Wnull-dereference false positive 2020-05-14 16:45:45 -05:00
Mario Limonciello
05b9eb5936 trivial: remove an extra colon at the end of uefi-dbx error 2020-05-14 15:40:24 -05:00
HROMANO
7180536c69 Add two OUI quirks
Two OUI quirks outputed by 'fwupdtool get-updates' on my computer.
2020-05-14 15:19:54 -05:00
Michael
9d07b7c23c ata: Add WD OUI quirk 000cca 2020-05-14 13:21:20 -05:00
Mario Limonciello
d617d9e287 trivial: downgrade CET to HSI:3
This is not actually a system protection, but rather a theoretical
protection
2020-05-14 13:15:40 -05:00
Richard Hughes
5b24547197 synaptics-rmi: Essentially blacklist Dell K12A
Fixes https://github.com/fwupd/fwupd/issues/2052
2020-05-14 13:14:39 +01:00
Ilya Guterman
92da8a894d dfu: Avoid communicating when bitManifestationTolerant is off 2020-05-13 20:30:04 +01:00
Mario Limonciello
f160e6b7fc amt: Add a security attestation for provisioning 2020-05-13 11:58:19 -05:00
Mario Limonciello
6ed9cbd201 trivial: add a wiki page for low HSI levels
When HSI level is below 2, direct users here to help improve the level
2020-05-13 11:00:52 -05:00
Mario Limonciello
a83428462d trivial: fu-engine: if plugins are blacklisted in daemon.conf raise runtime issue 2020-05-13 11:00:52 -05:00
Mario Limonciello
c88d4eadf1 trivial: fu-engine: raise a runtime issue if plugin whitelist set
If a plugin whitelist is set, the HSI value will be wrong.

```
$ sudo ./build/src/fwupdtool security --force --plugin-whitelist=tpm
Loading…                 [***************************************]
Host Security ID: HSI:1

HSI-1
✔  TPM: v2.0

Runtime Suffix -U
✘  Firmware Updates: No system device

Runtime Suffix -A
✘  Firmware Attestation: No PCR0s

Runtime Suffix -!
✔  fwupd plugins: OK
```
2020-05-13 11:00:52 -05:00
Mario Limonciello
b8a57e598a trivial: send users to a wiki page for runtime issues
Specifically send people here when the runtime issue suffix is in
place to give them more information on mitigations.
2020-05-13 11:00:52 -05:00
Mario Limonciello
ff303e1150 trivial: fu-engine: correct a memory leak 2020-05-13 11:00:52 -05:00
Mario Limonciello
66bab9d8f4 trivial: reword the security cases for a few plugins
On a system that is not at all locked down running an old kernel several
of the items are a bit confusing.

```
Runtime Suffix -!
✔  fwupd plugins: OK
✔  Linux Kernel: OK
✘  Linux Kernel: Could not open file
✘  Linux Swap: Not encrypted
```
2020-05-12 15:45:00 -05:00
Richard Hughes
c1eda7d516 Add many new plugins to support for the Host Security ID
The HSI specification is currently incomplete and in active development.

Sample output for my Lenovo P50 Laptop:

    Host Security ID: HSI:2+UA!

    HSI-1
    ✔  UEFI dbx: OK
    ✔  TPM: v2.0
    ✔  SPI: Write disabled
    ✔  SPI: Lock enabled
    ✔  SPI: SMM required
    ✔  UEFI Secure Boot: Enabled

    HSI-2
    ✔  TPM Reconstruction: Matched PCR0 reading

    HSI-3
    ✘  Linux Kernel S3 Sleep: Deep sleep available

    HSI-4
    ✘  Intel CET: Unavailable

    Runtime Suffix -U
    ✔  Firmware Updates: Newest release is 8 months old

    Runtime Suffix -A
    ✔  Firmware Attestation: OK

    Runtime Suffix -!
    ✔  fwupd plugins: OK
    ✔  Linux Kernel: OK
    ✔  Linux Kernel: Locked down
    ✘  Linux Swap: Not encrypted
2020-05-12 21:20:18 +01:00
Richard Hughes
f58ac7316c hsi: Abstract out the list of FwupdSecurityAttr objects for plugins
This exports FuSecurityAttrs into libfwupdplugin so that we can pass the plugins
this object rather than a 'bare' GPtrArray. This greatly simplifies the object
ownership, and also allows us to check the object type before adding.

In the future we could also check for duplicate appstream IDs or missing
properties at insertion time.

This change also changes the fu_plugin_add_security_attrs() to not return an
error. This forces the plugin to handle the error, storing the failure in the
attribute itself.

Only the plugin know if a missing file it needs to read indicates a runtime
problem or a simple failure to obtain a specific HSI level.
2020-05-12 16:47:24 +01:00
Richard Hughes
99cc658a75 tpm-eventlog: Add an HSI attr for reconstruction failure 2020-05-12 12:29:42 +01:00
Richard Hughes
31c1a45833 hsi: Add support for 'U' and 'A' suffixes 2020-05-12 12:29:42 +01:00
Richard Hughes
ad45158d6a hsi: Taint the result if unknown fwupd plugins are running 2020-05-12 12:29:42 +01:00
Richard Hughes
399859e48b trivial: Allow plugins to signal that the security status has changed 2020-05-11 22:11:49 +01:00
Richard Hughes
196c6c69db Add support for the Host Security ID
The HSI specification assigns a simple text ID to the current state of firmware
security. As new vulnerabilities are found, and as protection measures are
updated, new requirements will be added to the required firmware behaviours for
each HSI value.

The HSI specification is currently incomplete and in active development, and
so the --force flag is required in all command line tools. The current ID value
will probably change on a given platform so please do not start using the result
for any kind of compliance requirements.
2020-05-11 22:11:49 +01:00
Richard Hughes
c1407ed14f trivial: Add a --force argument to fwupdagent to match the other tools 2020-05-11 17:54:25 +01:00
Richard Hughes
a715791707 Add a new path enum of FU_PATH_KIND_ACPI_TABLES 2020-05-11 17:53:50 +01:00
Richard Hughes
173acd2e07 Add FwupdSecurityAttr to libfwupd
This will be used to store security attributes about platform security.
2020-05-11 17:52:41 +01:00
Subhendu Ghosh
d1d83c083e ata: Add OUI quirk for Western Digital 2020-05-11 08:15:43 +01:00
Richard Hughes
6a07870fa2 Add a vfunc that gets run after the device has been added
This allows per-plugin actions after the device has been open()ed and started.
2020-05-10 20:34:56 +01:00
Richard Hughes
9223c89019 trivial: Add a helper method to check for an Intel CPU
Some plugins will be Intel specific.
2020-05-10 17:49:13 +01:00
Ilya Guterman
46f5415eda dfu: Support MATEKF722SE quirk
MATEKF722SE has unconvetional behavior for dfu protocol, where the sector size
isn't specified and sector type is shiffted left by 1. This happens only for
one sector.

Sector parsing from MATEKF722SE:

 * `016Kg`
 * `64Kg`
 * `128Kg`
 * `048 e`
 * `528e`
 * `004 e`
2020-05-09 20:19:57 +01:00
Mario Limonciello
cb6ec2b18e trivial: uefi-dbx: correct error message on missing file
```
unset error in plugin uefi_dbx for add_security_attrs()
```
2020-05-07 13:02:57 -05:00
Richard Hughes
b9640a28ec uefi-dbx: Add a plugin that analyses the UEFI dbx variable
This will be used for future functionality.
2020-05-07 16:59:36 +01:00
Richard Hughes
a84d7a7e2a trivial: Add fu_common_filename_glob() for future use 2020-05-07 16:59:36 +01:00
Richard Hughes
9ed79ae644 Fix various build issues with -Wdiscarded-qualifiers
Fixes https://github.com/fwupd/fwupd/issues/2068
2020-05-07 16:15:30 +01:00
Richard Hughes
d744fe8b67 linux-swap: Rename the plugin as it is Linux specific
We'll be adding other linux-foo plugins in the future, so it makes sense to get
the namespace correct now.
2020-05-07 12:42:34 +01:00
Mario Limonciello
768a2680a6 Introduce a new flag skips-restart
This flag is used internally by plugins to indicate that they will
skip the phase of firmware installation that power cycles a device.

It is intended to be set by quirks or other environment settings.
2020-05-06 15:13:40 -05:00
Richard Hughes
2d6456e019 cpu: Parse the CPU flags to detect the CET status
New enough hardware to have this feature isn't going to be in the marketplace
for a while. To use that newer hardware requires a very recent kernel (5.6 at
least, although it will probably be at least 5.9 by the time the hardware is
released).

The CET status will be used in future functionality.
2020-05-06 18:15:28 +01:00
Mario Limonciello
0cd2f10711 trivial: dell-dock: delay activation of the thunderbolt updates
There was some regression between 1.4.0 and now that prevented updates
containing a Thunderbolt controller from finishing.  They would just
sit pending Thunderbolt replug without ever finishing.

Remove the old hack for replug and instead push activation to the end
of the composite steps.

This is to avoid the device tree from changing significantly during
the update process.

This still isn't really ideal, we want to be able to add the flag
usable-during-update to the thunderbolt controller, but this requires
some extra work in the kernel.
2020-05-06 11:13:51 -05:00
Mario Limonciello
da0d1880e1 trivial: fu-engine: return firmware gtypes in a sorted list
This makes the output in `firmware-parse` more predictable
2020-05-06 11:13:51 -05:00
Mario Limonciello
94874cd067 thunderbolt: Add a new subclassed thunderbolt firmware update type
Thunderbolt images brought in from the SPI don't have a FARB header.
Thunderbolt update images do.

So these two types of images need to be handled separately from the
firmware parser.
2020-05-06 11:13:51 -05:00
Richard Hughes
c368958518 swap: Add a plugin that parses /proc/swaps
This will be used for future functionality.
2020-05-06 15:09:59 +01:00
Mario Limonciello
3838b22a7c trivial: add missing changelog entry for 1.3.9
This release came out after 1_3_X branched but long before 1.40 release
so these entries are confusing to be missing.
Fixes: #2059
2020-05-05 13:14:22 -05:00
Richard Hughes
748a65f3c7 trivial: Post branch version bump
We're planning to ship fwupd 1.4.x in RHEL 8 and so it makes sense to have a
stable branch to do point releases. I don't intend to release versions 1.5.x
any time soon, so moderately-agressive backporting to 1_4_X is okay.
2020-05-05 11:34:17 +01:00
Richard Hughes
86f6324a26 Switch the default of EnumerateAllDevices to false
This was causing dozens of regressions to be reported.
2020-05-03 06:47:40 +01:00
Jakob
f4b843db43 Add OUI quirk for SanDisk 2020-05-02 08:51:53 +01:00
Richard Hughes
0258c12af3 uefi: Manually call fu_device_setup() during coldplug
This forces the daemon to convert the main-system-firmware instance ID to a
GUID, which allows us to find it using fu_device_list_get_by_guid()
2020-05-01 19:26:52 +01:00
Mario Limonciello
890963108e Clarify invalid arguments display (Fixes: #2045)
Avoid a wall of text and instead direct people to `--help` output.
Also sync up this section of code between `fu-util.c` and `fu-tool.c`
2020-04-30 14:20:36 -05:00