Hi Arthur,

The master header is a legacy thing and I'm in favor of removing it. That
said, as you and Michal mentioned, there's some work to do first. I started
https://ticket.coreboot.org/issues/306 to help track what's missing.


Patrick


Am Mi., 28. Apr. 2021 um 08:42 Uhr schrieb Arthur Heymans <
art...@aheymans.xyz>:

> Hi
>
> Currently the "COREBOOT" FMAP cbfs region has a file named "cbfs master
> header" at the bottom of this fmap region and the X86 bootblock has a
> pointer at 0xFFFFFFFC to it. Other ARCH have a "header pointer" file at the
> top of that FMAP region pointing to it.
>
> Currently this file is only used as an anchor point to use cbfs with
> walkcbfs_asm on X86 to access cbfs in assembly (before any C code). There
> are 2 uses for this at the moment:
> 1) updating microcode on Intel systems that don't feature FIT before
> setting up CAR
> 2) finding FSP-T (if FSP_CAR is used) before jumping to it
> Both the cbfstool and the C coreboot code don't rely on it anymore, so it
> is a legacy feature. Other cbfs FMAP region like FW_MAIN_A/B in a VBOOT
> setup don't feature it.
>
> Accessing cbfs with walkcbfs_asm breaks hardware based root of trust
> security mechanisms like Intel bootguard/TXT/CBnT, because no verification
> or measurement whatsoever happens on either " cbfs master header" of
> "fsp-t" files. So for instance even if TXT/Bootguard measured or verified
> FSP-T as an IBB so that it is trusted, an attacker could insert a new cbfs
> file with the same name, "fsp-t" at a lower address and coreboot will run
> it anyway.  So a static pointer to fsp-t is required. Sidenote/Rant: FSP-T
> continuously causes such integration problems... Blobs that set up the
> execution environment are just a very bad idea.
>
> So I propose to drop the legacy "cbfs master header" file and adapt the 2
> current use cases in the following way:
> - Reuse the Intel FIT table and implement FIT microcode updates in
> assembly/software. (I had this working on some point, before I decided to
> use walkcbfs_asm)
> - Either fix the location of FSP-T via for instance a Kconfig option or
> add a pointer to "fsp-t" at a fixed location in the bootblock and have the
> tooling update the pointer during the build process. I think the Kconfig
> option is the least amount of work and cbfstool is already overloaded with
> options and flags, so my preference goes to this.
>
> Let me know what you think.
>
> Kind regards
>
> Arthur Heymans
> _______________________________________________
> coreboot mailing list -- coreboot@coreboot.org
> To unsubscribe send an email to coreboot-le...@coreboot.org
>


-- 
Google Germany GmbH, ABC-Str. 19, 20354 Hamburg
Registergericht und -nummer: Hamburg, HRB 86891, Sitz der Gesellschaft:
Hamburg
Geschäftsführer: Paul Manicle, Halimah DeLaine Prado
_______________________________________________
coreboot mailing list -- coreboot@coreboot.org
To unsubscribe send an email to coreboot-le...@coreboot.org

Reply via email to