Friday, April 30, 2010

Remotely Attacking Network Cards (or why we do need VT-d and TXT)

I've finally found some time to study Loic Duflot's and Yves-Alexis Perez's recent presentation from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last month on remotely attacking network cards. You can get cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 slides here.

In short, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y're exploiting a buffer overflow in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 network card's firmware by sending malicious packets to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 card, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y gain full control over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 card's firmware, so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can e.g. issue DMA to/from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 host memory, effectively fully controlling cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 host (that's anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r example of "Ring -3 rootkit" I would say). The buffer overflow is in some exotic management protocol (that I think is disabled by default, but that's irrelevant) implemented by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NIC's firmware (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NIC has its own RISC processor, and memory, and stack, which cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y overflow, etc.).

I like this research very much, because it demonstrates several important things:

First, it shows that it is definitely a good idea to isolate/sandbox all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS networking code using IOMMU/VT-d. And this is exactly what we do in Qubes.

Second, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack provides a real-world example of why Static Root for Trust Measurement (SRTM) is inferior to Dynamic RTM (DRTM), e.g. Intel TXT. To understand why, let's make cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following assumptions:
1) The OS/VMM properly uses IOMMU to isolate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 network card(s), just like e.g. Qubes does.
2) Once cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker got control over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NIC firmware, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker can also modify cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 persistent storage (EEPROM) where this firmware is kept. This has been confirmed by Loic in a private email exchange.
3) The system implements trusted boot via SRTM, i.e. using just BIOS and TPM, without Intel TXT.

Now, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker can modify cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 firmware in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 EEPROM and this will allow cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker to survive cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 platform reboot. The card's firmware will start executing early in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 boot process, definitely before cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS/VMM gets loaded. Now, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 compromised NIC, because it is capable of doing DMA to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 host memory, can compromise cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 image of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VMM in a short time window between cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time it got measured and loaded by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 (trusted) OS loader, e.g. Trusted GRUB, but still before cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time VMM had a chance to setup proper IOMMU/VT-d protections for itself.

Of course, in practice, it might be tricky for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 compromised NIC firmware to precisely know this time window when it should send a compromising DMA write request. If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DMA was issued too early, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 trusted OS loader would calculate a wrong hash and put a wrong value into a PCR register, which would later prevent cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system from completing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 boot, and prevent cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack. If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DMA was issued too late, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 IOMMU/VT-d protections would already be in-place, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack would again be unsuccessful. But, hey, much harder obstacles have been worked around by smart exploit writes in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 past, so don't comfort yourself that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack is hard. If it's possible, it means this technology is flawed, period.

And this is where DRTM, AKA Intel TXT, shows its advantage over simple SRTM. When you load a hypervisor using TXT, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SENTER instruction would first apply cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VT-d protections around cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hypervsior image, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n do cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 measurements, and only cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n load it, with VT-d protections still in-place.

The above is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ory. A few months ago we demonstrated an attack against this scheme, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack was exploiting a flaw in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TXT implementation, not in its design, so it didn't render TXT useless as a technology.

A much bigger problem with Intel TXT is, that Intel still has done nothing to prevent SMM-based attacks against TXT. This is what we demonstrated about 1.5 years(!) ago. Our research stressed that TXT without protection from SMM is essentially useless. Intel cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n promised to come up with a spec on how to write an STM, and how TXT should work with STM (when to measure/load it, etc), but nothing has been released by Intel for all this time AFAIK...

Now, without STM (which is supposed to provide protection from potentially compromised SMM), cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TXT cannot really prevent Loic and friends from owning cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system, even if it uses such a securely designed OS as Qubes. This is because Loic would be able to modify e.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 MBR while cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system boots (thanks to DMA ability of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 infected NIC firmware), and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n attack an SMM from this MBR (I can bet lots of money Loic & co. would easily find a few ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r SMM exploits in any recent BIOS if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y only wanted to), and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n having infected cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SMM, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y will be able to compromise TXT-loaded hypervisor, and finally compromise cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole system.

I know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are some people from various governments reading this blog. If you really want to have secure systems, consider pushing on Intel to finally do something about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SMM-based attacks against TXT. Beware, Intel will try to tell you that, using TXT LCP you can seal your secrets to only "trusted" SMM images and would try to convince you it's a way to prevent SMM attacks on TXT. It is not. Only true SMM sandboxing is a proper way to address this problem.

Anyway, congrats to Loic and colleagues for yet anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r very interesting and meaningful system-level research!

2 comments:

lispler said...

By definition, SRTM means that you measure code before giving CPU control to it.

So if you can rig cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NIC EEPROM to load malware without this being reflected in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 PCRs, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SRTM implementation is broken. The EEPROM should be measured when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NIC is initialized.

A more general problem which DRTM also doesn't really solve is "What to measure?". Its insufficient to measure cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 program code only. But measuring configuration severely hits on scalability and with RoP, this gets even more complex.

Trusted Computing will never achieve 100% secure detection of malware.

Joanna Rutkowska said...

@lispler:

You confuse PCI EEPROMs that indeed should be measured by SRTM with NIC's private EEPROM that holds NIC's private firmware that is to be executed by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NIC's private processor. The 'private' is a key word here. SRTM process cannot know about all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 private internals of all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 PCI devices. The are not covered by SRTM measurements thus.

Intel TXT works around this problem by using VT-d protection.