Re: [PATCH 5/7] x86: Use IBRS for firmware update path

Woodhouse, David
2018-01-04T20:10:35Z

[-- Attachment #1: Type: text/plain, Size: 1263 bytes --]

On Thu, 2018-01-04 at 21:05 +0100, Greg KH wrote:
> On Thu, Jan 04, 2018 at 09:56:46AM -0800, Tim Chen wrote:
> >
> > From: David Woodhouse <dwmw@amazon.co.uk>
> >
> > We are impervious to the indirect branch prediction attack with
> > retpoline
> > but firmware won't be, so we still need to set IBRS to protect
> > firmware code execution when calling into firmware at runtime.
> Wait, what?
>
> Maybe it's just the wine from dinner talking, but if the firmware has
> issues, we have bigger things to worry about here, right?  It already
> handed over the "chain of trust" to us, so we have already implicitly
> trusted that the firmware was correct here.  So why do we need to do
> anything about firmware calls in this manner?

In the ideal world, firmware exists to boot the kernel and then it gets
out of the way, never to be thought of again.

In the Intel world, firmware idiocy permeates everything and we
sometimes end up making calls to it at runtime.

If an attacker can poison the BTB for an indirect branch in EFI
firmware, then reliably do something which calls EFI runtime calls,
that might lead to an exploit. So if we're using retpoline for the
kernel, then we should be setting IBRS before any firmware calls.

[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 5210 bytes --]