Documenting the proposal for TPM 2.0 security in the face of bus interposer attacks

Jason Gunthorpe jgg at ziepe.ca
Mon Nov 19 20:05:05 UTC 2018


On Mon, Nov 19, 2018 at 09:34:04AM -0800, James Bottomley wrote:

> The current state of the art for snooping the TPM Genie hardware
> interposer https://www.nccgroup.trust/us/our-research/tpm-genie/ which
> is a simple external device that can be installed in a couple of
> seconds on any system or laptop.  However, the next phase of research
> seems to be hacking existing devices on the bus to act as interposers,
> so the fact that the attacker requires physical access for a few
> seconds might evaporate.  However, the goal of this document is to
> protect TPM secrets and integrity as far as we are able in this
> environment and to try to insure that if we can't prevent the attack
> then at least we can detect it.
> 
> Unfortunately, most of the TPM functionality, including the hardware
> reset capability can be controlled by an attacker who has access to
> the bus, so we'll discuss some of the disruption possibilities below.
> 
> Measurement (PCR) Integrity
> 
> Since the attacker can send their own commands to the TPM, they can
> send arbitrary PCR extends and thus disrupt the measurement system,
> which would be an annoying denial of service attack.  However, there
> are two, more serious, classes of attack aimed at entities sealed to
> trust measurements.
> 
> 1. The attacker could intercept all PCR extends coming from the system
>    and completely substitute their own values, producing a replay of
>    an untampered state that would cause PCR measurements to attest to
>    a trusted state and release secrets
> 
> 2. At some point in time the attacker could reset the TPM, clearing
>    the PCRs and then send down their own measurements which would
>    effectively overwrite the boot time measurements the TPM has
>    already done.

I can just de-solder the TPM, attach it to a rig and do whatever I
want to it, including fake PCR loads and trigger seal/uneal of any
data I like.

The promise of the TPM was never that PCR protected elements would be
secure against something that has control over the physical hardware
bus.

The treat model for PCR users always contained the implicit assumption
that the security of the physical TPM HW, and the secure linkage to
the CPU (ie secure control over reset, and other things) is
maintained.

So, I'm not sure adding more crypto here really fits with the threat
model the TPM lives in?

That said, certainly there are other non-PCR use cases where this
stuff becomes important. For instance anything using shared secrets
should absolutely establish a crypto unsnoopable path to the TPM.

> Certain information passing in and out of the TPM, such as key sealing
> and private key import and random number generation, is vulnerable to
> interception which HMAC protection alone cannot protect, so for these
> types of command we must also employ request and response encryption
> to prevent the loss of secret information.

Thwarting passive observation seems like a reasonable goal to
me. Attaching a snooper has much less invasion and risk than doing
something active.

But I'm not sure the complexity of a null key is needed here? Won't
any readable key in the TPM do this job?

Jason



More information about the Linux-security-module-archive mailing list