Wednesday, March 25, 2009

Trusting Hardware

So, you're a decent paranoid person, running only open source software on your box: Linux, GNU, etc. You have cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 feeling you could, if you only wanted to, review every single line of code (of course you will probably never do this, but anyway). You might be even more paranoid and also try running an open source BIOS. You feel satisfied and cannot understand all those stupid people running closed source systems like e.g. Windows. Right?

But here's where you are stuck — you still must trust your hardware. Trust that your hardware vendor has not e.g. built in a backdoor into your network card micro-controller…

So, if we buy a laptop from vendor X, that might be based in some not-fully-democratic country, how do we know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y didn't put backdoors cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re? And not only to spy on Americans, also to spy on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir own citizens? When was cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last time you reverse-engineered all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 PCI devices on your mocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rboard?

Scared? Good!

Enters cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 game-changer: IOMMU (known as VT-d on Intel). With proper OS/VMM design, this technology can address cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 very problem of most of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hardware backdoors. A good example of a practical system that allows for that is Xen 3.3, which supports VT-d and allows you to move drivers into a separate, unprivileged driver domain(s). This way each PCI device can be limited to DMA only to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 memory region occupied by its own driver.

The network card's microcontroller can still compromise cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 network card driver, but nothing else. Assuming we are using only encrypted communication, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is not much an attacker can gain by compromising this network card driver, besides doing a DoS. Similarly for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 disk driver — if we use full disk encryption (which is a good idea anyway), cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is not much an attacker can gain from compromising cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 low-level disk driver.

Obviously cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 design of such a system (especially used for desktop computing) is not trivial ans needs to be thoroughly thought out. But it is possible today(!), thanks to those new virtualization technologies.

It seems than, that we could protect ourselves against potentially malicious hardware. With one exception however… we still need to trust cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU and also cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 memory controller (AKA northbridge AKA chipset), that implements that IOMMU.

On AMD systems, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 memory controller has long been integrated into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor. Also Intel's recent Nehalem processors integrate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 memory controller on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same die.

This all means we need to trust only one vendor (Intel or AMD) and only one component, i.e. The Processor. But should we blindly trust cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m? After all it would be trivial for Intel or AMD to build in a backdoor into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir processor. Even something as simple as:

if (rax == MAGIC_1 && rcx == MAGIC_2) jmp [rbx]

Just a few more gates in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU I guess (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are apparently already about 780 million gates on Core i7, so a few more should not make much difference), and no performance penalty. Exploitable remotely on most systems and any more complex program I guess. Yet, totally undetectable for anybody without an electron microscope (and tons of skills and knowledge).

And this is just cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 simplest example that comes to mind within just a few minutes. I'm sure one could come up with something even more universal and reliable. The fact is — if you are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU vendor, it is trivial for you to build in an effective backdoor.

It's funny how various people, e.g. European government institutions, are afraid of using closed source software, e.g. Windows, because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are afraid of Microsoft putting backdoors cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re. Yet, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are not concerned about using processors made by some ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r US companies. It is significantly more risky for Microsoft to put a backdoor into its software, where even a skilled teenager equipped with IDA Pro can find it, than it is for Intel or AMD, where effectively nobody can find it.

So, I wonder whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r various government and large corporate customers from outside cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 US will start asking Intel and AMD to provide cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 exact blueprints of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir processors. After all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y already require Microsoft to provide cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 source code under an NDA, right? So, why not cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "source code" for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor?

Unfortunately cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is nothing that could stop a processor vendor to provide its customers with a different blueprints than those that are used to actually "burn" cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processors. So, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 additional requirement would be needed that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y also allow to audit cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir manufacturing process. Anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r solution would be to hire some group of independent researchers, equip cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m with an electron microscope and let cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m reverse engineer some randomly chosen processors… Hmmm, I even know a team that would love to do that ;)

A quick summary in case you get lost already:
  1. On most systems we are not protected against hardware backdoors, e.g. in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 network card controller.
  2. New technologies, e.g. Intel VT-d, can allow to protect against potentially malicious hardware (requires specially designed OS, e.g. specially configured Xen)…
  3. … except for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 potential backdoors in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor.
  4. If we don't trust Microsoft, why should we trust Intel or AMD?
BTW, in May I will be speaking at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Confidence conference in Krakow, Poland. This is gonna be a keynote, so don't expect new attacks to be revealed, but racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r some more philosophical stuff about trusted computing (why it is not evil) and problems like cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 one discussed today. See you cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re!

Friday, March 20, 2009

The Sky Is Falling?

A few reporters asked me if our recent paper on SMM attacking via CPU cache poisoning means cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sky is really falling now?

Interestingly, not many people seem to have noticed that this is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 3rd attack against SMM our team has found in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last 10 months. OMG :o

But anyway, does cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact we can easily compromise cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SMM today, and write SMM-based malware, does that mean cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sky is falling for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 average computer user?

No! The sky has actually fallen many years ago… Default users with admin privileges, monolithic kernels everywhere, most software unsigned and downloadable over plaintext HTTP — cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 main reasons we cannot trust our systems today. And those pacá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365tic attempts to fix it, e.g. via restricting admin users on Vista, but still requiring full admin rights to install any piece of stupid software. Or selling people illusion of security via A/V programs, that cannot even protect cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365mselves properly…

It's also funny how so many people focus on solving cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security problems by "Security by Correctness" or "Security by Obscurity" approaches — patches, patches, NX and ASLR — all good, but it is not gonna work as an ultimate protection (if it could, it would worked out already).

On 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 hand, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are some emerging technologies out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re that could allow us to implement effective "Security by Isolation" approach. Such technologies as VT-x/AMD-V, VT-d/IOMMU or Intel TXT and TPM.

So we, at ITL, focus on analyzing those new technologies, even though almost nobody uses cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m today. Because those technologies could actually make cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 difference. Unlike A/V programs or Patch Tuesdays, those technologies can change cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 level of sophistication required for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker dramatically.

The attacks we focus on are important for those new technologies — e.g. today Intel TXT is pretty much useless without protection from SMM attacks. And currently cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is no such protection, which sucks. SMM rootkits sound sexy, but, frankly, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bad guys are doing just fine using traditional kernel mode malware (due to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact that A/V is not effective). Of course, SMM rootkits are just yet anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r annoyance for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 traditional A/V programs, which is good, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y might not be cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most important consequence of SMM attacks.

So, should cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 average Joe Dow care about our SMM attacks? Absolutely not!

Thursday, March 19, 2009

Attacking SMM Memory via Intel® CPU Cache Poisoning

As promised, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 paper and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 proof of concept code has just been posted on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ITL website here.

A quote from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 paper:
In this paper we have described practical exploitation of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU cache poisoning in order to read or write into (ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rwise protected) SMRAM memory. We have implemented two working exploits: one for dumping cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 content of SMRAM and 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 one for arbitrary code execution in SMRAM. This is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 third attack on SMM memory our team has found within cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last 10 months, affecting Intel-based systems. It seems that current state of firmware security, even in case of such reputable vendors as Intel, is quite unsatisfying.

The potential consequence of attacks on SMM might include SMM rootkits [9], hypervisor compromises [8], or OS kernel protection bypassing [2].
Don't worry, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 shellcode we use in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 exploit is totally harmless (have really no idea how some people concluded we were going to release an SMM rootkit today?) — it only increases an internal counter on every SMI and jumps back to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original handler. If you want something more fancy, AKA SMM rootkits, you might want to re-read Sherri's and Shawn's last year's Black Hat paper and try writing something cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y describe cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re.

The attack presented in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 paper has been fixed on some systems according to Intel. We have however found out that even cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 relatively new boards, like e.g. Intel DQ35 are still vulnerable (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 very recent Intel DQ45 doesn't seem to be vulnerable though). The exploit attached is for DQ35 board — cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 offsets would have to be changed to work on ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r boards (please do not ask how to do this).

Keep in mind this is a different SMM attack than cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 one we mentioned during our last month's Black Hat presentation on TXT bypassing (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VU#127284). We are planning to present that ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r attack at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 upcoming Black Hat Vegas. Hopefully this will not be cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 only one thing that ITL will entertain you with in Vegas — Alex and Rafal are already working now on something even cooler (and even lower level) for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 show, so cross your fingers!

And good luck to Loic with his presentation that is about to start just now...

Friday, March 13, 2009

Independent Attack Discoveries

Next week's Thursday, March 19th, 1600 UTC, we will publish a paper (+ exploits) on exploiting Intel® CPU cache mechanisms.

The attack allows for privilege escalation from Ring 0 to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SMM on many recent mocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rboards with Intel CPUs. Interestingly, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 very same attack will be presented by anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r researcher, Loic Duflot, at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CanSecWest conference in Vancouver, Canada, on... Thursday 19th, 1600 UTC. BTW, this is a different SMM-targeting attack than cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 one we mentioned during our recent TXT talk and that is scheduled to be presented later this year.

Here's cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 full story (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is also a moral at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 end) …

Just after our presentation at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Black Hat last month, we (i.e. Rafal and I) have been independently approached by some person (or two different persons — we haven't figured that out actually — cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re were some ca. 30 people willing to ask us questions after cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 talk, so it's hard to remember all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 faces), who was very curious about our SMM attacks (whose details we haven't discussed, of course, because Intel is still working on a fix). This person(s) started asking various questions about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacks and one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 questions, that was asked to both me and Rafal, was if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack used caching. Later that day, during a private ITL dinner, one of us brought this issue, and we started thinking if it was indeed possible to perform an SMM attack via CPU caching. By 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 dinner we have sketched out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack, and later when we got back to Poland, Rafal implemented a working exploit with code execution in SMM in a matter of just a few hours. (I think I used way too many parencá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365sis in this paragraph).

So, being cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 good and responsible guys that we are, we immediately reported cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new bug to Intel (actually talking to Intel's PSIRT is getting more and more routined for us in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recent months ;). And this is how we learnt that Loic came up with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same attack (back 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ý bet365re was no talk description at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 conference website) — apparently he approached Intel about this back in October 2008, so 3-4 months before us — and also that he's planning to present it at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CanSecWest conference in March. So, we contacted Loic and agreed to do coordinated disclosure next Thursday.

Interestingly, however, none of us was even close to being cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first discoverer of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 underlying problem that our attacks exploit. In fact, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first mention of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 possible attack using caching for compromising SMM has been discussed in certain documents authored as early as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 end of 2005 (!) by nobody else than... Intel's own employees. Stay tuned for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 details in our upcoming paper.

Conclusion

If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is a bug somewhere and if it stays unpatched for enough time, it is almost guaranteed that various people will (re)discover and exploit it, sooner or later. So, don't blame researchers that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y find and publish information about bugs — cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y actually do a favor to our society. Remember cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 guy who asked us if our attack used caching? I bet he (or his associates) also have had exploits for this caching bug, but apparently didn't notify cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 vendor. Hmm, what cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y might have been doing with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 exploit? When was cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last time you scanned your system for SMM rootkits? ;)

Anyways, congrats to Loic for being cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first one who wrote exploits for this bug. Also congrats to Intel employees who originally noticed cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problem back in 2005.