On Wed, 1 Sept 2021 at 08:10, Gerd Hoffmann <kra...@redhat.com> wrote:
>
>   Hi,
>
> > > I didn't fully investigate what kind of attacks one can do.  I'm pretty 
> > > sure simply
> > > making the variable store larger and the spare smaller works, so parts of 
> > > the
> > > variable store are outside the area you are measuring.  Not fully sure 
> > > whenever
> > > one can actually reorder the sections to move the varstore completely 
> > > into the
> > > unmeasured area.  Or play out other attacks with the same effect, like 
> > > bloating
> > > some header struct.
> > >
> > > Simply measuring everything (including the spare) will stop all that.
> > > Changes wouldn't go unnoticed, period.  No ifs and buts.  So I'm 
> > > wondering why
> > > you not doing that?  Performance?  Wouldn't be the first time a 
> > > performance
> > > optimization pokes a hole into a security concept ...
> > >
> > The measurement value of the CFV (provisioned configuration data) is 
> > extended to
> > RTMR registers (similar to TPM PCRs). At the same time it is recorded in 
> > the TD Event
> > log.
> > These information will be used by the Attestation server (This is the 
> > so-called Attestation).
> > In other words there is a known *good* CFV measurement value. Any changes to
> > the CFV, for example the layout, the order of the variables, the content of 
> > the variables
> > will produce a *bad* CFV measurement.
>
> Yes.  The attacker would need a varstore with a modified layout being
> approved by the attestation server as first step, then he would be able
> to modify variables unnoticed in a second step.
>
> So, assuming an attacker isn't able to carry out the first step it
> should be all fine in theory.  When it comes to security it never hurts
> to have another line of defense though, so I would still strongly
> recommend to measure the complete varstore (including spare).
>
> At the end of the day it is your call, I'm not going to veto the patch.
> But I'll reserve the right to pull a "told you so" in case someone
> manages to exploit that some day.
>

Have to agree with Gerd here: if those contents are being interpreted
by the code, and may therefore affect its execution, I don't think it
should be omitted from the measurement unless there is a compelling
reason for it. Omitting it simply because you can doesn't seem
sufficient justification to me.

-- 
Ard.


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#80054): https://edk2.groups.io/g/devel/message/80054
Mute This Topic: https://groups.io/mt/85242567/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to