Re: Fixing CVE-2017-15361

From: Jarkko Sakkinen
Date: Thu Oct 26 2017 - 07:16:56 EST


On Thu, Oct 26, 2017 at 12:26:10AM +0200, Peter Huewe wrote:
>
>
> Am 25. Oktober 2017 20:53:49 MESZ schrieb Jarkko Sakkinen <jarkko.sakkinen@xxxxxxxxxxxxxxx>:
> >On Wed, Oct 25, 2017 at 07:17:17AM -0700, Matthew Garrett wrote:
> >> On Wed, Oct 25, 2017 at 6:44 AM, Jarkko Sakkinen
> >> <jarkko.sakkinen@xxxxxxxxxxxxxxx> wrote:
> >> > I'm implementing a fix for CVE-2017-15361 that simply blacklists
> >> > vulnerable FW versions. I think this is the only responsible action
> >from
> >> > my side that I can do.
> >>
> >> I'm not sure this is ideal - do Infineon have any Linux tooling for
> >> performing firmware updates, and if so will that continue working if
> >> the device is blacklisted? It's also a poor user experience to have
> >> systems using TPM-backed disk encryption keys suddenly rendered
> >> unbootable, and making it as easy as possible for people to do an
> >> upgrade and then re-seal secrets with new keys feels like the correct
> >> approach.
> >
> >I talked today with Alexander Steffen in the KS unconference and we
> >concluded that this would be a terrible idea.
> >
> >Alexander stated the following things about FW updates (Alexander,
> >please correct me if I state something incorrectly or if you have
> >something to add):
> >
> >* FW update can be constructed either in a way that the keys in the
> > NVRAM are not cleared or in a way that they are cleared.
> >* FW update cannot be directly applied to the TPM but must come as
> > part of the firmware update from the vendor.
> >
> >I proposed the following as an alternative:
> >
> >* Print a message to the klog (which log level would be appropriate?).
> Info?
> Maybe warn, definitely not err

Since the driver does not fail usually warn would make sense but since
here even allowing to continue to use such TPM is questionable I would
use error here.

People anyway ignore klog too easily so using warn would be a mistake in
my opinion. It's like saying that nothing serious is happening here,
move along.

Do you think so?

> >* Possibly sleep for few seconds. Is this a good idea?
> Helps how?

Obviously to get it noticed that the system integrity is broken.

> >While writing this email yet another alternative popped into my mind:
> >what if we allow only in-kernel use but disallow the use of /dev/tpm0?
> >You could still use trusted keys.
> >
> No, same terrible idea since you block the upgrade path.
> Upgrade tools work from userspace via the kernel driver.
> So /dev/tpm0 is necessary.

Right! How stupid of me (my previous response to Jerry) :-) Of course you
can have special commands and talk to the TPM to do the upgrade even if
it is part of the platform and not connected to a standard bus.

I got understanding in the yesterdays unconfernce discussion that it
should be part of the firmware upgrade.

How do you do the upgrade through /dev/tpm0?

/Jarkko