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

Jarkko Sakkinen jarkko.sakkinen at linux.intel.com
Wed Nov 21 07:18:19 UTC 2018


On Tue, Nov 20, 2018 at 10:42:01PM -0700, Jason Gunthorpe wrote:
> > Why you wouldn't use DMA to spy the RAM?
> 
> The platform has to use IOMMU to prevent improper DMA access from
> places like PCI-E slots if you are using measured boot and want to
> defend against HW tampering.

Yes. This is what I wanted to point out. Windows 10 has VBS to
achieve something like this.

https://docs.microsoft.com/en-us/windows-hardware/design/device-experiences/oem-vbs

> The BIOS has to sequence things so that at least pluggable PCI-E slots
> cannot do DMA until the IOMMU is enabled.

Yep.

> Honestly not sure if we do this all correctly in Linux, or if BIOS
> vendors even implemented this level of protection. The BIOS would have
> to leave the PCI-E root port slots disabled, and configure the ports
> to reject config TLPs from the hostile PCI-E device, and probably a
> big bunch of other stuff.. Then Linux would have to enable the IOMMU
> and then enable the PCI-E ports for operation.

Linux should have something like VBS. Like James' proposal it does not
solve the puzzle but is one step forward...

> Pretty subtle and tricky stuff.
> 
> Without IOMMU it would be trivial to plug a card in an open PCI-E slot
> (or M.2 slot on a laptop) and breach all measured boot guarantees via
> DMA. For instance, if IOMMU is not enabled during grub then I could
> overwrite the trusted grub with DMA and cleverly make it jump to my
> hostile code, then I can replay PCR extends to the TPM and
> seal/unseal/attest using the PCRs set to a trusted sytem when running
> hostile code. Oopsie.
> 
> This is a much easier attack than inserting a TPM interposer or
> messing with the TPM reset line...
> 
> But again, measured boot does not protect against HW tampering, so
> this is probably not included in the threat model the BIOS uses...

/Jarkko



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