linux-security-module.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jason Gunthorpe <jgg@ziepe.ca>
To: James Bottomley <James.Bottomley@HansenPartnership.com>
Cc: linux-integrity@vger.kernel.org,
	linux-security-module@vger.kernel.org,
	Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>,
	monty.wiseman@ge.com, Monty Wiseman <montywiseman32@gmail.com>,
	Matthew Garrett <mjg59@google.com>
Subject: Re: Documenting the proposal for TPM 2.0 security in the face of bus interposer attacks
Date: Mon, 19 Nov 2018 13:05:05 -0700	[thread overview]
Message-ID: <20181119200505.GF4890@ziepe.ca> (raw)
In-Reply-To: <1542648844.2910.9.camel@HansenPartnership.com>

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

  reply	other threads:[~2018-11-19 20:05 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-19 17:34 Documenting the proposal for TPM 2.0 security in the face of bus interposer attacks James Bottomley
2018-11-19 20:05 ` Jason Gunthorpe [this message]
2018-11-19 20:20   ` James Bottomley
2018-11-19 21:19     ` Jason Gunthorpe
2018-11-19 21:34       ` James Bottomley
2018-11-19 21:44         ` Jason Gunthorpe
2018-11-19 22:36           ` James Bottomley
2018-11-19 23:08             ` Jason Gunthorpe
2018-11-20  0:54               ` James Bottomley
2018-11-20  3:05                 ` Jason Gunthorpe
2018-11-20 17:17                   ` James Bottomley
2018-11-20 21:33                     ` Jason Gunthorpe
2018-11-20 22:34                       ` James Bottomley
2018-11-20 23:39                         ` Jason Gunthorpe
2018-11-21  2:24                           ` EXTERNAL: " Jeremy Boone
2018-11-21  5:16                             ` Jason Gunthorpe
2018-11-20 23:52                       ` Jarkko Sakkinen
2018-11-20 23:41                     ` Jarkko Sakkinen
2018-11-20 11:10 ` Jarkko Sakkinen
2018-11-20 12:41   ` Jarkko Sakkinen
2018-11-20 17:25     ` James Bottomley
2018-11-20 23:13       ` Jarkko Sakkinen
2018-11-20 23:58         ` James Bottomley
2018-11-21  0:33           ` EXTERNAL: " Jeremy Boone
2018-11-21  6:37           ` Jarkko Sakkinen
2018-11-21  5:42         ` Jason Gunthorpe
2018-11-21  7:18           ` Jarkko Sakkinen
     [not found]             ` <F10185EF-C618-45DC-B1F3-0053B8FE417F@gmail.com>
2018-11-21  9:07               ` Jarkko Sakkinen
2018-11-21  9:14             ` Jarkko Sakkinen
2018-11-20 17:23   ` James Bottomley
2018-11-20 23:12     ` Jarkko Sakkinen
2018-12-10 16:33 ` Ken Goldman
2018-12-10 17:30   ` James Bottomley
2018-12-11 21:47     ` Ken Goldman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181119200505.GF4890@ziepe.ca \
    --to=jgg@ziepe.ca \
    --cc=James.Bottomley@HansenPartnership.com \
    --cc=jarkko.sakkinen@linux.intel.com \
    --cc=linux-integrity@vger.kernel.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=mjg59@google.com \
    --cc=monty.wiseman@ge.com \
    --cc=montywiseman32@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).