You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Surfaced by an audit agent during the 2026-09-23 boot-proof work; verified in source.
fwsign/src/subcommands/sign.rs:66-77 reads --fsbl only to hand it to artifact_key::verify_artifact_bytes, i.e. a vendor-key provenance check on retained ELF sections. No FSBL hash is placed in the manifest. fwsign inspect confirms the manifest carries secure_len, ns_len, secure_hash, ns_hash and vendor_fpr — and no FSBL field.
Why this is worth an issue rather than a shrug. Invariant #10 makes the FSBL the entire post-sale trust root: it measures the active slots and renders the fingerprint, and its immutability is supposed to come from WRP + RDP-2, not from the signed manifest. That is a coherent design. The problem is what it means for evidence:
A bundle that verifies proves nothing about which FSBL is on the part. Any statement of the form "we flashed the signed bundle, therefore the FSBL was X" is unfounded.
During the screen-unit run I claimed stage-marker was off in the flashed FSBL. That claim is true, but it is backed by a local chain I happened to build (nm on the ELF -> elf-to-bin of that same ELF -> round-trip re-hash of the composed blob -> CubeProgrammer verify), not by anything in the signed artifact. Someone repeating the run without that chain would have only operator testimony.
Not proposing the FSBL be added to the manifest — that may be wrong, since the FSBL is the verifier and a self-referential binding buys little. What is needed is a decision, recorded: either the release flow emits an FSBL measurement receipt alongside the bundle, or the docs state plainly that FSBL identity is established only by WRP+RDP-2 and by out-of-band measurement, so nobody infers it from a bundle signature.
Surfaced by an audit agent during the 2026-09-23 boot-proof work; verified in source.
fwsign/src/subcommands/sign.rs:66-77reads--fsblonly to hand it toartifact_key::verify_artifact_bytes, i.e. a vendor-key provenance check on retained ELF sections. No FSBL hash is placed in the manifest.fwsign inspectconfirms the manifest carriessecure_len,ns_len,secure_hash,ns_hashandvendor_fpr— and no FSBL field.Why this is worth an issue rather than a shrug. Invariant #10 makes the FSBL the entire post-sale trust root: it measures the active slots and renders the fingerprint, and its immutability is supposed to come from WRP + RDP-2, not from the signed manifest. That is a coherent design. The problem is what it means for evidence:
stage-markerwas off in the flashed FSBL. That claim is true, but it is backed by a local chain I happened to build (nmon the ELF ->elf-to-binof that same ELF -> round-trip re-hash of the composed blob -> CubeProgrammer verify), not by anything in the signed artifact. Someone repeating the run without that chain would have only operator testimony.Not proposing the FSBL be added to the manifest — that may be wrong, since the FSBL is the verifier and a self-referential binding buys little. What is needed is a decision, recorded: either the release flow emits an FSBL measurement receipt alongside the bundle, or the docs state plainly that FSBL identity is established only by WRP+RDP-2 and by out-of-band measurement, so nobody infers it from a bundle signature.