On 4 November 2026 14:11:17 GMT, eli <[email protected]> wrote:
>Document CONFIG_SPL_MINIMUM_FIT_VERSION, the FIT configuration 'version'
>property it checks, and the trust-root boundary of the mechanism (the
>minimum lives in the SPL binary itself).
>
>Signed-off-by: eli <[email protected]>
>---
> doc/develop/spl.rst | 43 +++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 43 insertions(+)
>
>diff --git a/doc/develop/spl.rst b/doc/develop/spl.rst
>index 08b51172..762edeea 100644
>--- a/doc/develop/spl.rst
>+++ b/doc/develop/spl.rst
>@@ -125,6 +125,49 @@ Use `xpl_phase()` to find the current U-Boot phase, e.g. 
>`PHASE_SPL`. You can
> also find the previous and next phase and get the phase name.
> 
> 
>+SPL FIT anti-rollback
>+---------------------
>+
>+When SPL verifies a signed FIT (CONFIG_SPL_FIT_SIGNATURE), the signature
>+guarantees that the image is authentic, but not that it is current: an
>+attacker who can write the next-stage image location could replace it with an
>+older image that is still correctly signed, reintroducing vulnerabilities
>+fixed in newer firmware.
>+
>+CONFIG_SPL_MINIMUM_FIT_VERSION adds a software rollback check: after
>+signature verification succeeds, SPL reads the "version" property of the
>+selected configuration node and refuses to boot if it is lower than this
>+value. A missing property counts as version 0, so the minimum must be raised
>+together with images that actually carry the property. The default of 0
>+disables the check.
>+
>+Example configuration node::
>+
>+    configurations {
>+        default = "conf-1";
>+        conf-1 {
>+            version = <0x2>;
>+            description = "U-Boot 2026.07";
>+            firmware = "uboot";
>+            signature-1 {
>+                algo = "sha256,rsa4096";
>+                key-name-hint = "dev";
>+                sign-images = "firmware";
>+            };
>+        };
>+    };
>+
>+The configuration node, including its "version" property, is covered by its
>+signature, so the property cannot be forged without the signing key; the
>+minimum version itself is fixed at SPL build time.
>+
>+Note that this is a software trust root: the minimum version lives in the SPL
>+binary, so an attacker able to rewrite the SPL itself (for example via a
>+writable boot flash) can also lower the minimum. For a stronger guarantee,
>+protect the SPL boot medium against writes or anchor the trust root in
>+one-time programmable storage.

The BROM should be incredulously protected from issues, if not, well done,
^Wunsigned exploit incoming^W

>+
>+
> .. _fdtgrep_filter:
> 
> Device tree
>

--- Thanks!

Reply via email to