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

From: Andrea Arcangeli
Date: Thu Jan 04 2018 - 15:48:25 EST


On Thu, Jan 04, 2018 at 09:05:15PM +0100, Greg Kroah-Hartman wrote:
> On Thu, Jan 04, 2018 at 09:56:46AM -0800, Tim Chen wrote:
> > From: David Woodhouse <dwmw@xxxxxxxxxxxx>
> >
> > 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?
>
> Or am I totally missing something else here?

Reptoline-only case there. BIOS isn't built with reptoline. Kernel is
trusted too but it can be tricked unless built with reptoline.

If reptoline wasn't used IBRS would already be set and no issue would
materialize in the BIOS.

This is just a fallout of the reptoline being used, which requires to
close holes here and there by using IBRS where reptoline alone can't
reach.