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!
