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!

Wednesday, April 07, 2010

Introducing Qubes OS

For cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last 6 months we have been busy with a new project: Qubes. Qubes is an open source OS based on Xen, X, and Linux, designed to provide strong isolation for desktop computing. The link to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 project website is at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 end of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 post.

The system is currently in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 alpha stage, but if you're determined it's actually usable. For example I have switched to Qubes around a month ago, and two weeks ago I even decided to wipe and reinstall my Mac Book, which used to be my primary laptop previously. Now I use my old Mac Book only for making cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 slides (Apple Keynote really has no competition) and Web page for Qubes :) And I use Qubes for pretty much all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r daily tasks, from work, shopping, banking, random browsing, to Qubes development itself (it takes part in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "qubes" AppVM).

Just remember to make backups regularly if you decided to use Qubes for anything else than testing and development.

So, enough of introduction, you will find lots of details (including a 40-page PDF describing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system architecture) at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Qubes project website. Enjoy!

Update 7-Apr-2010 15:56 CEST: The server seems to be overloaded a bit by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 traffic... If you are planning to install cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS, I guess it would be wise to postpone downloading cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 installation packages until later this week, when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first wave of visitors goes away.

Update 7-Apr-2010 16:31 CEST: The Wiki doesn't work due to lack of free memory... Talking to my provider about buying some more RAM. Sorry for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 inconvenience.

Update 7-Apr-2010 18:28 CEST: The server has been brought offline for RAM upgrade. Should be back online in some 15 minutes...