Monday, December 21, 2009

Anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r TXT Attack

Earlier this year our team has presented an attack against Intel TXT that exploited a design problem with SMM mode being over privileged on PC platforms and able to interfere with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SENTER instruction. The Intel response was two-fold: to patch cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SMM implementation bugs we used for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack (this patch was for both cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NVACPI SMM attacks, as well as for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SMM caching attack), and also to start (intensify?) working on STM specification, that is, we heard, planned to be published sometime in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 near future. STM is a thin hypervisor concept that is supposed to provide protection against (potentially) malicious SMMs.

Today we present a totally different attack that allows an attacker to trick cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SENTER instruction into misconfiguring cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VT-d engine, so that it doesn’t protect cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 newly loaded hypervisor or kernel. This attack exploits an implementation flaw in a SINIT AC module. This new attack also allows for full TXT circumvention, using a software-only attack. This attack doesn't require any SMM bugs to succeed and is totally independent from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 previous one.

The press release is here.

The full paper is here.

The advisory published by Intel today can be found here.

Enjoy.

Friday, October 16, 2009

Evil Maid goes after TrueCrypt!

From time to time it’s good to take a break from all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ultra-low-level stuff, like e.g. chipset or TXT hacking, and do something simple, yet still important. Recently Alex Tereshkin and I got some spare time and we implemented cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Evil Maid Attack against TrueCrypt system disk encryption in a form of a small bootable USB stick image that allows to perform cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack in an easy “plug-and-play” way. The whole infection process takes about 1 minute, and it’s well suited to be used by hotel maids.

The Attack
Let’s quickly recap cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Evil Maid Attack. The scenario we consider is when somebody left an encrypted laptop e.g. in a hotel room. Let’s assume cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 laptop uses full disk encryption like e.g. this provided by TrueCrypt or PGP Whole Disk Encryption.

Many people believe, including some well known security experts, that it is advisable to fully power down your laptop when you use full disk encryption in order to prevent attacks via FireWire/PCMCIA or ”Coldboot” attacks.

So, let’s assume we have a reasonably paranoid user, that uses full disk encryption on his or her laptop, and also powers it down every time cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y leave it alone in a hotel room, or somewhere else.

Now, this is where our Evil Maid stick comes into play. All cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker needs to do is to sneak into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user’s hotel room and boot cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 laptop from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Evil Maid USB Stick. After some 1-2 minutes, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 target laptop’s gets infected with Evil Maid Sniffer that will record cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 disk encryption passphrase when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user enters it next time. As any smart user might have guessed already, this part is ideally suited to be performed by hotel maids, or people pretending to be cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m.

So, after our victim gets back to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hotel room and powers up his or her laptop, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 passphrase will be recorded and e.g. stored somewhere on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 disk, or maybe transmitted over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 network (not implemented in current version).

Now we can safely steal/confiscate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user’s laptop, as we know how to decrypt it. End of story.

Quick Start
Download cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 USB image here. In order to “burn” cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Evil Maid use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following commands on Linux (you need to be root to do dd):

dd if=evilmaidusb.img of=/dev/sdX

Where /dev/sdX should be replaced with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 device representing your USB stick, e.g. /dev/sdb. Please be careful, as choosing a wrong device might result in damaging your hard disk or ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r media! Also, make sure to use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 device representing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole disk (e.g. /dev/sdb), racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r than a disk partition (e.g. /dev/sdb1).

On Windows you would need to get a dd-like program, e.g. this one, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 command would look more or less like this one (depending on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual dd implementation you use):

dd if=evilmaidusb.img of=\\?\Device\HarddiskX\Partition0 bs=1M

where HarddiskX should be replaced with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual device cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 represents your stick.

After preparing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Evil Maid USB stick, you’re ready to test it against some TrueCrypt-encrypted laptop (more technically: a laptop that uses TrueCrypt system disk encryption). Just boot cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 laptop from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 stick, confirm you want to run cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 tool (press ‘E’) and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TrueCrypt loader on your laptop should be infected.

Now, Evil Maid will be logging cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 passphrases provided during cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 boot time. To retrieve cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recorded passphrase just boot again from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Evil Maid USB -- it should detect that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 target is already infected and display cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sniffed password.

The current implementation of Evil Maid always stores cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last passphrase entered, assuming this is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 correct one, in case cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user entered cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 passphrase incorrectly at earlier attempts.

NOTE: It’s probably illegal to use Evil Maid to obtain password from ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r people without cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir consent. You should always obtain permission from ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r people before testing Evil Maid against cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir laptops!

CAUTION: The provided USB image and source code should be considered proof-of-concept only. Use this code at your own risk, and never run it against a production system. Invisible Things Lab cannot be held responsible for any potential damages this code or its derivates might cause.

How cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Evil Maid USB works
The provided implementation is extremely simple. It first reads cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first 63 sectors of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 primary disk (/dev/sda) and checks (looking at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first sector) if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re looks like a valid TrueCrypt loader. If it does, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rest of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code is unpacked (using gzip) and hooked. Evil Maid hooks cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TC’s function that asks user for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 passphrase, so that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hook records whatever passphrase is provided to this function. We also take care about adjusting some fields in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 MBR, like cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 boot loader size and its checksum. After cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hooking is done, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 loader is packed again and written back to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 disk.

You can get 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 Evil Maid infector here.

Possible Workarounds
So, how should we protect against such Evil Maid attacks? There are a few approaches...

1. Protect your laptop when you leave it alone
Several months ago I had a discussion with one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TrueCrypt developers about possible means of preventing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Evil Maid Attack, perhaps using TPM (see below). Our dialog went like this (reproduced here with permission from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TrueCrypt developer):

TrueCrypt Developer: We generally disregard "janitor" attacks since cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y inherently make cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 machine untrusted. We never consider cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 feasibility of hardware attacks; we simply have to assume cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 worst. After an attacker has "worked" with your hardware, you have to stop using it for sensitive data. It is impossible for TPM to prevent hardware attacks (for example, using hardware key loggers, which are readily available to average Joe users in computer shops, etc.)

Joanna Rutkowska: And how can you determine that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker have or have not "worked" with your hardware? Do you carry your laptop with you all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time?

TrueCrypt Developer: Given cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 scope of our product, how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user ensures physical security is not our problem. Anyway, to answer your question (as a side note), you could use e.g. a proper safety case with a proper lock (or, when you cannot have it with you, store it in a good strongbox).

Joanna Rutkowska: If I could arrange for a proper lock or an impenetrable strongbox, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n why in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 world should I need encryption?

TrueCrypt Developer: Your question was: "And how can you determine that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker has or has not worked with your hardware?" My answer was a good safety case or strongbox with a good lock. If you use it, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n you will notice that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker has accessed your notebook inside (as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 case or strongbox will be damaged and it cannot be replaced because you had cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 correct key with you). If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 safety case or strongbox can be opened without getting damaged & unusable, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n it's not a good safety case or strongbox. ;-)

That's a fair point, but this means that for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security of our data we must relay on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 infeasibility to open our strongbox lock in a "clean" way, i.e. without visually damaging it. Plus it means we need to carry a good strongbox with us to any travel we go. I think we need a better solution...

Note that TrueCrypt authors do mention cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 possibility of physical attacks in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 documentation:
If an attacker can physically access cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 computer hardware and you use it after cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker has physically accessed it, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n TrueCrypt may become unable to secure data on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 computer. This is because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker may modify cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hardware or attach a malicious hardware component to it (such as a hardware keystroke logger) that will capture cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password or encryption key (e.g. when you mount a TrueCrypt volume) or ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rwise compromise cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 computer.
However, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y do not explicitly warn users of a possibility of something as simple and cheap as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Evil Maid Attack. Sure, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y write "or ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rwise compromise cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 computer", which does indeed cover e.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Evil Maid Attack, but my bet is that very few users would realize what it really means. The examples of physical attacks given in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 documentation, e.g. modifying cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hardware or attaching a malicious hardware, is something that most users would disregard as too expensive an attack to be afraid of. But note that our Evil Maid attack is an example of a “physical” attack, that doesn’t require any hardware modification and is extremely cheap.

Of course it is a valid point, that if we allow a possibility of a physical attack, 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 attacker can e.g. install a hardware keylogger. But doing that is really not so easy as we discuss in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 next paragraph. 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, spending two minutes to boot cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 machine from an Evil Maid USB stick is just trivial and is very cheap (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 price of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 USB stick, plus cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 tip for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 maid).

2. The Trusted Computing Approach
As explained a few months ago on this blog, a reasonably good solution against Evil Maid attack seems to be to take advantage of eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r static or dynamic root of trust offered by TPM. The first approach (SRTM) is what has been implemented in Vista Bitlocker. However Bitlocker doesn’t try to aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365nticate to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user (e.g. via displaying a custom picture shot by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user, with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 picture decrypted using a key unsealed from a TPM), so it’s still possible to create a similar attack against Bitlocker, but with a bit different user experience. Namely cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Evil Maid for Bitlocker would have to display a fake Bitlocker prompt (that could be identical to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 real Bitlocker prompt), but after obtaining a correct password from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user Evil Maid would not be able to pass cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 execution to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 real Bitlocker code, as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SRTM chain will be broken. Instead, Evil Maid would have to pretend that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password was wrong, uninstall itself, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n reboot cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 platform. Thus, a Bitlocker user that is confident that he or she entered cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 correct password, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS didn’t boot correctly, should destroy cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 laptop.

The dynamic root of trust approach (DRTM) is possible thanks to Intel TXT technology, but currently cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is no full disk encryption software that would make use of it. One can try to implement it using Intel’s tboot and some Linux disk encryption, e.g. LUKS.

Please also note that even if we assume somebody “cracked” cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TPM chip (e.g. using an electron microscope, or NSA backdoor), that doesn’t mean this person can automatically get access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 encrypted disk contents. This is not cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 case, as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TPM is used only for ensuring trusted boot. After cracking cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TPM, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker would still have to mount an Evil Maid attack in order to obtain cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 passphrase or key. Without TPM this attack is always possible.

Are those trusted computing-based approaches 100% foolproof? Of course not. As signalized in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 previous paragraph, if an attacker was able to mount a hardware-based keylogger into your laptop (which is non-trivial, but possible), 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 attacker would be able to capture your passphrase regardless of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 trusted boot. A user can prevent such an attack by using two-factor aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication (RSA challenge-response implemented in a USB token) or e.g. one-time passwords, so that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is no benefit for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker to capture cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 keystrokes. But cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker might go to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 extreme and e.g. replace cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DRAM, or even cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU with malicious DRAM or CPU that would sniff and store cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 decryption key for later access. We’re talking here about attack that very few entities can probably afford (think NSA), but nevercá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365less cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365oretically possible. (Note that an attack with inserting a malicious PCI device that would try to sniff cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 key using DMA can be prevented using TXT+VT-d technology).

However, just because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NSA can cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365oretically replace your CPU with a malicious one, doesn’t mean TPM-based solutions are useless. As for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 great majority of ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r people that do not happen to be on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Terrorist Top 10, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se represent a reasonable solution that could prevent Evil Maid attacks, and, when combined with a proper two-factor aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication, also simple hardware based attacks, e.g. keylogger, cameras, remote keystroke sniffing using laser, etc. I really cannot think of a more reasonable solution here.

3. The Poor Man’s Solution
Personally I would love to see TrueCrypt implementing TPM-based trusted boot for its loader, but, well, what can I do? Keep bocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ring TrueCrypt developers with Evil Maid attacks and hope cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y will eventually consider implementing TPM support...

So, in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 meantime we have come up with a temporary poor man’s solution that we use at our lab. We call it Disk Hasher. It’s a bootable Linux-based USB stick that can be configured in quite a flexible way to calculate hashes of selected disk sectors and partitions. The correct hashes are stored also on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 stick (of course everything is encrypted with a custom laptop-specific passphrase). We use this stick to verify cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 unencrypted portions of our laptops (typically cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first 63 sectors of sda, and also cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole /boot partition in case of Linux-based laptops where we use LUKS/dm-crypt).

Of course cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are many problems with such a solution. E.g. somebody who can get access to my Disk Hasher USB (e.g. when I’m in a swimming pool), can infect it in such a way that it would report correct hashes, even though cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 disk of my laptop would be “evilmaided”...

Anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r problem with Disk Hasher solution is that it only looks at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 disk, but cannot validate e.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS. So if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker found a way to bypass cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS reflashing protection on my laptop, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n he or she can install a rootkit cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re that would sniff my passphrase or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 decryption key (in case I used one time passwords).

Nevercá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365less, our Disk Hasher stick seems like a reasonable solution and we use it often internally at ITL to validate our laptops. In fact this is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most we can do, if we want to use TrueCrypt, PGP WDE, or LUKS/dm-crypt.

FAQ

Q: Is this Evil Maid Attack some l33t new h4ck?
Nope, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 concept behind cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Evil Maid Attack is neicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r new, nor l33t in any way.

Q: So, why did you write it?
Because we believe it demonstrates an important problem, and we would like more attention to be paid in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 industry to solving it.

Q: I’m using two-factor aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication, am I protected against EM?
While a two-factor aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication or one time passwords are generally a good idea (e.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can prevent various keylogger attacks), cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y alone do not provide protection from Evil Maid-like attacks, because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker might modify his or her sniffer to look for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 final decryption key (that would be calculated after cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 2-factor aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication completes).

Q: How is Evil Maid different from Stoned-Bootkit?
The Stoned Bootkit, released a few months ago by an individual describing himself as “Software Dev. Guru in Vienna”, is also claimed to be capable of "bypassing TrueCrypt", which we take to mean a capability to sniff TC's passphrases or keys. Still, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 biggest difference between Stoned Bootkit and Evil Maid USB is that in case of our attack you don’t need to start cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 victim's OS in order to install Evil Maid, all you need to do is to boot from a USB stick, wait about 1 minute for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 minimal Linux to start, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n press ‘E’, wait some 2 more seconds, and you’re done. With cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Stoned Bootkit, according to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 author’s description, you need to get admin access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 target OS in order to install it, so you eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r need to know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Windows admin password first, or use some exploit to get cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 installer executing on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 target OS. Alternatively, you can install it from a bootable Windows CD, but this, according to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 author, works only against unencrypted volumes, so no use in case of TrueCrypt compromise.

Q: I've disabled boot from USB in BIOS and my BIOS is password protected, am I protected against EM?
No. Taking out your HDD, hooking it up to a USB enclosure case and later installing it back to your laptop increases cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack time by some 5-15 minutes at most. A maid has to carry her own laptop to do this though.

Q: What about using a HDD with built-in hardware-based encryption?
We haven’t tested such encryption systems, so we don’t know. There are many open questions here: how is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 passphrase obtained from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user? Using software stored on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 disk or in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS? If on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 disk, is this portion of disk made read-only? If so, does it mean it is non-updatable? Even if it is truly read-only, if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker can reflash cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n he or she can install a passphrase sniffer cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS. Of course that would make cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack non-trivial and much more expensive than cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original Evil Maid USB we presented here.

Q: Which TrueCrypt versions are supported by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 current Evil Maid USB?
We have tested our Evil Maid USB against TrueCrypt versions 6.0a - 6.2a (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 latest version currently available). Of course, if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 “shape” of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TrueCrypt loader changed dramatically in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 future, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n Evil Maid USB would require updating.

Q: Why did you choose TrueCrypt and not some ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r product?
Because we believe TrueCrypt is a great product, we use it often in our lab, and we would love to see it getting some better protection against such attacks.

Q: Why cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is no TPM support in TrueCrypt?
The TrueCrypt Foundation published official generalized response to TPM-related feature requests here.

Acknowledgments
Thanks to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ennead@truecrypt.org for all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 polemics we had which allowed me to better gacá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r my thoughts on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 topic. The same thanks to Alex and Rafal, for all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 polemics I have had with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m (it's customary for ITL to spend a lot of time finding bugs in each ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r's reasoning).

Tuesday, September 22, 2009

Intel Security Summit: cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 slides

Last week I was invited to Hillsboro to speak at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Intel's internal conference on security. My presentation title was "A Quest To The Core: Thoughts on present and future attacks on system core technologies", and my goal was to somehow make a quick summary of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recent research our team has done over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last 12 months or so, and explain why we're so keen on hacking cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 low-level system components, while all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rest of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 world is excited about browser and flash player bugs.

The slides (converted to PDF) can be found here. As you will see, I decided to remove most of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 slides from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "Future" chapter. One reason for that was that we didn't want to hint Loic our competition as to some of our new toys we're working on;) The ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r reason was that, I think, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 value of presenting only thoughts about attacks, i.e. unproven thoughts, or, should I even say, feelings about future attacks, has little research value, and while I can understand such information being important to Intel, I don't see how ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs could benefit from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m.

I must say it was nice and interesting to meet in person with various Intel architects, i.e. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 people that actually design and create our basic "universe" we all operate in. You can always change cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS (or even write your own!), but still you must stick to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rules, or "laws", of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 platform (unless you can break cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m ;)

Wednesday, September 02, 2009

About Apple’s Security Foundations, Or Lack Of Thereof...

Every once in a while it’s healthy to reinstall your system... I know, I know, it’s almost a heresy to say that, but that’s reality in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 world where our systems are totally unverifiable. In fact I don’t even attempt to verify if my Mac laptop has been compromised in any way (most system files are not signed anyway). But sometimes, you got this feeling that something might be wrong and you decide to reinstall to start your (digital) life all over again :)

So, every time I (re)install a Mac-based system, I end up cursing horribly at Apple’s architects. Why? Because in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Apple World cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y seem to totally ignore cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 concept of files integrity, to such extent that it’s virtually impossible to get any assurance that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 programs I install are in any way aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntic (i.e. not tampered by some 3rd party, e.g. by somebody controlling my Internet connection).

Take any Apple installer package, e.g. Thunderbird. In most cases an installer package on Mac is a .dmg file, that represents an installation disk image. Now, when you open such a file under Mac, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS will never display any information about if this file is somehow signed (e.g. by who) or not. In fact, I’m pretty sure it’s never signed. What you end up with, is a .dmg file that you just downloaded over plaintext HTTP and you have absolutely no way of verifying if it is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original file cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 vendor really published. And you’re just about to grant admin privileges to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 installer program that is inside this file -- after all it’s an installer, so must got root privileges, right (well, not quite maybe)? Beautiful...

Interestingly, this very same Thunderbird installer, but for Windows, is correctly signed, and Windows, correctly, displays that information (togecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ability to examine cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 certificate) and allows cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user to make a choice of whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r to allow it to run or not.



Sure, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 certificate doesn’t guarantee that Mozilla didn’t put a nasty backdoor in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re, nor that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 file was not compromised due to Mozilla’s internal server compromise. Or that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 certificate (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 private key) wasn’t somehow stolen from Mozilla, or that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 issuing authority didn’t make a mistake and maybe issued this certificate to some random guy, who just happened to be named Mozilla.

But cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 certificate provides liability. If it indeed turns out that this very Thunderbird installer was somehow malicious, I could take this signed file to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 court and sue eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r Mozilla, or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 certification authority for all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 damages it might have done to me. Without cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 certificate I cannot do that, because I (and nobody) cannot know if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 file was tampered while being downloaded (e.g. malicious ISP) or maybe because my system was already compromised.

But in case of Apple, we have no such choice -- we need to take cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 risk every time we download a program from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Internet. We must bet cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security of our whole system, that at this very moment nobody is tampering with out (unsecured) HTTP connection, and also that nobody compromised cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 vendor’s Web Server, and, of course, we hope that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 vendor didn’t put any malicious code into its product (as we could not sue cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m for it).

So that sucks. That sucks terribly! Without ability to check cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 integrity of programs we want to install, we cannot build any solid foundations. It’s funny how people divagate whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r Apple implemented ASLR correctly in Snow Leopard, or not? Or whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r NX is bypassable. It’s meaningless to dive into such advanced topics, if we cannot even assure that at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 day 0 our system is clean. We need to start building our systems from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ground up, and not starting from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 roof! Ability to assure cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 software we install is not tampered seems like a reasonable very first step. (Sure it could be compromised 5 minutes later, and to protect against this we should have ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r mechanisms, like e.g. mentioned above ASLR and NX).

And Apple should not blame cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 vendors for such a situation (“Vendors would never pay $300 for a certificate”, blah, blah), as it is just enough to have a look at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Windows versions of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same products, and that most of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m do have signed installers (gee, even open-source TrueCrypt, has a signed installer for Windows!).

One should say that a few vendors, seeing this problem on Mac, do publish PGP signatures for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir installation files. This includes e.g. PGP Desktop for Mac, KeePassX, TrueCrypt for Mac, and a few ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs. But cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se are just exceptions and I wonder how many users will be disciplined (and savvy) enough to correctly verify those PGP signatures (in general it requires you to download cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 vendor keys many months before, keep it in your ring, to minimize possibility that somebody alters both cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 installer files and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 keys you download). Some ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r vendors offer pseudo-integrity by displaying MD5/SHA1 sums on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir websites. That would make some sense only if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 website on which cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hashes are displayed was itself SSL-protected (still cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 file signature is a better option), as ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rwise we can be sure that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker that is tampering with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 installer file, will also take care about adjusting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hash on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 website... But of course this never is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 case -- have a look e.g. at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VMWare download page for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Mac Fusion (one need to register first). Very smart, VMWare! (Needles to say, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VMWare Workstation installer for Windows is properly signed).

BTW, anybody checked if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Apple updates are digitally signed somehow?

All I wrote here in this post is just trivial. It should be just obvious for every decently educated software engineer. Believe me it’s really is much more fun for me to write about things like new attacks on chipsets or virtualization. But I have this little hope that maybe somebody at Apple will read this little post and fix cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir OS. Because I really like Apple products for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir aescá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365tics...

Wednesday, August 26, 2009

PDF signing and beyond

Today I got an advertising email from GlobalSign (where I previously bought a code signing certificate for Vista kernel drivers some years ago) highlighting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir new (?) type of certificates for signing of Adobe PDF files. It made me curious, because, frankly, I've been recently more and more missing this feature. After a quick online research it turned out that this whole Adobe Certified Documents Services (CDS) seem to be nothing new, as apparently even Adobe Reader 6.0 had support for verifying those CDS certificates. The certificates are also available from ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r popular certification authorities like e.g. Entrust and Verisign, and a couple of ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs.

So, I immediately felt stupid that I haven't been aware of such a great feature, which apparently is out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re for a few years now. Why I thought it was so great a feature? Consider cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following scenario…

At our Invisible Things Lab resources page we offer a handful of files to download — slides and some proof of concept code. The website is served over a plaintext HTTP. This means that if you're downloading anything over a public WiFi (hotel, airport lounge, etc) you never know if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 PDF you actually get has not been infected somewhere in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 middle, e.g. by a guy in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 lobby that is messing with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hotel WiFi.

So, one might argue that I should have paid a few hundred bucks and get an SSL certificate for my website and start serving it over HTTPS. But here's cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problem — I, as zillions of ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r small businesses and individuals, host my website on some 5-dollar-a-month one-of-cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365-thousands hosting provider. I have zero knowledge about what people work cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re and if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can be trusted, and I also know nothing (and have zero impact) on how secure (or not, for that matter) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server is. (Same applies to my cell phone carrier, ISP, etc, BTW).

Now, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SSL certificate for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 website "knows" nothing about how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 files on my website should look like, in particular if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are compromised or not. All cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SSL certificate does is to give assurance to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 remote client that he or she downloaded cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual files that were on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 moment of downloading — whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y were cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original ones authored by me, or perhaps maliciously modified by somebody who got access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server.

So, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 solution with an SSL certificate would work only if I trusted my web server, which could be assumed only if I run my own dedicated server. That, however, would be an overkill for a small company like ITL, especially that our business is not based on our web presence — in fact cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 website is maintained mainly for ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r researchers and students, who can easily download our papers and code from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re, and also for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 reporters so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can e.g. download a press release from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re.

Surprisingly, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 website has never been compromised, probably because it doesn't present an interesting target for any skilled person (or maybe exceptionally skilled people work at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hosting provider?). But I cannot know for sure, as I don't constantly monitor all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hashes of all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 files, as this would require… well a dedicated server that would be running an SHA1 calculating script in a loop for 24/7 :)

Of course, zillions of ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r websites works this very same way and present cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 very same problems.

Now, ability to sign PDFs would be just a great solution here, because I could sign all those files with my certificate, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 people downloading stuff from ITL could know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are getting original PDFs that were created on one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ITL members desktop computers, no matter how compromised cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 web server or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 network connection is.

For cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same reasons, I would welcome if ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs started doing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same, as currently I simply must assume every PDF I download from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 net (and PDFs account for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 majority of file downloads I do) to be potentially malicious. So, I always open cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m in my Red or Yellow VM (depending on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 source of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 download), and only if it "looks good" (very fuzzy term, I know), I might decide to move it to my host desktop (it's easier to work with PDFs on your host, and actually you should use your host desktop for something).

(Yes, I know, Kostya Kortchinsky, or Rafal, can sometimes escape from VMWare, but still I believe that today cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 best isolation I can get on a desktop, without sacrificing much convince, is via a type II hypervisor. It's horribly inelegant, but well, that's life).

So, I read some more about this Adobe CDS, being all excited about it, and ready to spend a few hundred euros on a certificate, only to realize that it doesn't look as good as I thought.

First disappointment comes from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact that you must create a PDF using Adobe Acrobat software (not cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Reader, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 commercial one). I've created all my PDFs using eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r Office (in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 past) or iWork (today), and none of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m seem to offer a way to digitally sign cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 PDF. I would like to get a simple tool, say pdfsign.exe, that I could use to sign any PDF I have, no matter how I generated it. Also, not surprisingly, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Mac native PDF viewer (Preview) doesn't seem to recognize cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 digital signature, and I bet some Linux PDF viewers do not as well.

Worst of all, even cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Acrobat Reader 9, that I tested under Windows, and that correctly displayed all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CDS information, does one unbelievably stupid thing — it parses and renders cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole PDF before displaying cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 signature info. So, if you downloaded a malicious PDF, Acrobat Reader will happily open it and parse, without asking you a question of whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r you would like to open it (as it is perhaps unsigned). At least I was unable to find an option that would force it to do that. So, if this PDF contained an exploit for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 reader, it surely would get executed. Compare this with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 (correct) behavior of Vista UAC where it presents cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 executable signature details before executing it.

You can see how your software works with Adobe PDF signatures, e.g. by looking at this exemplary file signed by GlobalSign.

So, Adobe CDS, in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 form cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are today, seem to be pretty useless, as far as protection from potentially malicious PDFs is considered (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y surely have ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r positive applications, e.g. to certify about aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365nticity of e.g. a diploma).

But wouldn't it be great to have such a file signing mechanism globally adopted and not only for PDFs, but for any sort of files, including ZIPs, tgz's, heck, even plain text files? And have our main OSes generically recognize those signatures and display unified prompts of whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r we want to allow an application to to open cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 file or not? Perhaps, in some situations, we could even define policies for specific applications. This seems easy to do from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 technical point of view — we just need to "hook" (oh, God, did I say "hook"?) high-level OS API's like e.g. open() or CreateFile().

What about PGP and possibility of using this for signing any sort of files? Well, we use PGP a lot at ITL, but mainly for securing peer-to-peer communication (e.g. between us and our clients). There really is no good way to publish one's PGP key — cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 concept of Web of Trust might be good for some closed groups of people, but not for publishing files "to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 world". And, of course, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first thing that an attacker who subverted PDFs on our website will do is to also subvert cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 PGP key displayed on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 website. I also tried once to publish a PGP key to a key server, but got discouraged immediately after I noticed it didn't use SSL for submission. BTW, anybody knows if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 key servers today use SSL? If not, how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 trust is established? Maybe email clients, e.g. Thunderbird, come with built in PGP keys for select key servers?

So, I guess that was cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 main point of writing this post — to express how madly I would welcome a generic, OS-based, non-obligatory, signature verification for files, based on PKI :)

Ah, before a dozen of people jumps to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 comment box to tell me that digital signatures do not assure non-maliciousness of anything — please don't do that, because I actually know that. In fact, it is not possible to assure non-maliciousness of pretty much anything, especially without strictly defining an ethical system we would like to use first. What cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 signatures provide is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 liability, so that I know who to sue, in case my naked holiday pictures got leaked to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 public because of some malicious PDF exploiting my system. In that case I can sue eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual person who signed cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 PDF (if this person is identifiable) or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 certification authority who issued cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 certificate to a wrong (unidentifiable) person.

Tuesday, August 25, 2009

Vegas Toys (Part I): The Ring -3 Tools

We've just published cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 proof of concept code for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Alex's and Rafal's "Ring -3 Rootkits" talk, presented last month at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Black Hat conference in Vegas. You can download cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code from our website here. It's highly recommended that one (re)reads cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 slides before playing with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code.

In short, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code demonstrates injection of an arbitrary ARC4 code into a vPro-compatible chipset AMT/ME memory using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chipset memory reclaiming attack. Check cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 README and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 slides for more information.


The actual ARC4 code we distribute here is very simple: it sets a DMA write transaction to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 host memory every ca. 15 seconds in order to write cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "ITL" string at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 predefined physical addresses (increased by 4 with every iteration). Of course one can do DMA read as well.


The ability to do DMA from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ARC4 code to/from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 host memory is, in fact, all that is necessary to write a sophisticated rootkit or any sort of malware, from funny jokers to sophisticated secret sniffers. Your imagination (and good pattern searching) is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 only limit here.

The OS, nor any software running on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 host OS, cannot access our rootkit code, unless, of course, it used cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same remapping attack we used to insert our code cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re :) But cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rootkit might even cut off this way by locking down cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 remapping registers, so fixing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 vulnerability on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fly, after exploiting it (of course it would be insane for any AV to use our remapping attack in order to scan ME space, but just for completeness;)

An OS might attempt to protect itself from DMA accesses from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rootkit in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chipset by carefully setting VT-d protections. Xen 3.3/3.4, for example, sets VT-d protections in such a way that our rootkit cannot access cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Xen hypervisor memory. We can, however, access 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 parts of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system which includes all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 domains memory (i.e. where all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interesting data are located). Still, it should be possible to modify Xen so that it set VT-d mappings in such a strict way, that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 AMT code (and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 AMT rootkit) could not access any useful information in any of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 domains. This, in fact, would be a good idea anyway, as it would also prevent any sort of hardware-based backdoors (except for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 backdoors in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU).

An AMT rootkit can, however, get around such a savvy OS because it can modify cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS's VT-d initialization code before it sets cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VT-d protections. Alternatively, if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 protections are set before cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rootkit was activated, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rootkit can force cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system to reboot and boot it from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 AMT Virtual CDROM (In fact AMT has been designed to be able to do exactly that), which would contain rootkit agent code that would modify cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS/VMM to-be-loaded image, so that it doesn't setup VT-d properly.

Of course, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 proper solution against such an attack would be to use e.g. Intel TXT to assure trusted boot of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system. In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ory this should work. In practice, as you might recall, we have already shown how to bypass Intel TXT. This TXT bypass attack still works on most (all?) hardware, as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is still no STM available in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 wild (all that is needed for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack is to have a working SMM attack, and last month we showed 2 such attacks — see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 slides for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS talk).

Intel has released a patch a day before our presentation at Black Hat. This is a cumulative patch that is also targeting a few ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r, unrelated, problems, like e.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SMM caching attack (also reported by Loic), cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SMM nvacpi attack, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Q45 BIOS reflashing attack (for which cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code will be also published shortly).

Some of you might remember that Intel has patched this very remapping bug last year, after our Xen 0wning Trilogy presentations, where we used cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 very same bug to get around Xen hypervisor protections. However, Intel forgot about one small detail — namely it was perfectly possible for malware to downgrade BIOS to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 previous, pre-Black-Hat-2008 version, without any user consent (after all this old BIO file was also digitally signed by Intel). So, with just one additional reboot (but without a user intervention needed) malware could still use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 old remapping bug, this time to get access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 AMT memory. The recent patch mentioned above solves this problem by displaying a prompt during reflash boot, if reflashing to an older version of BIOS. So now it requires user intervention (a physical presence). This "downgrade protection" works, however, only if we have administrator password enabled in BIOS.

We could get into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 AMT memory on Q35, however, even if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 downgrade attack was not possible. In that case we could use our BIOS reflashing exploit (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 Black Hat presentation).

However, this situation looks differently on Intel latest Q45 chipsets (that also have AMT). As explained in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 presentation, we were unable to get access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 AMT memory on those chipsets, even though we can reflash cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re, and consequently, even though we can get rid of all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chipset locks (e.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 remapping locks). Still, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 remapping doesn't seem to work for this one memory range, where cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 AMT code resides.

This suggest Intel added some additional hardware to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Q45 chipset (and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r Series 4 chipsets) to prevent this very type of attacks. But we're not giving up on Q45 yet, and we will be trying ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r attacks, as soon as we recover from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 holiday laziness ;)

Finally, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 nice picture of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Q35 chipset (MCH), where our rootkit lives :) The ARC4 processor is somewhere inside...

Thursday, July 30, 2009

Black Hat 2009 Slides

The wait is over. The slides are here. The press release is here. Unless you're a chipset/BIOS engineer kind of person, I strongly recommend reading cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 press release first, before opening cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 slides.

So, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "Ring -3 Rootkit" presentation is about vPro/AMT chipset compromises. The "Attacking Intel BIOS" presentation is about exploiting a heap overflow in BIOS environment in order to bypass reflashing protection, that ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rwise allows only Intel-signed updates to be flashed.

We will publish cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code some time after get back from Vegas.

Enjoy.

ps. Let me remind my dear readers that all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 files hosted on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ITL website are not digitally signed and are served over a plaintext connection (HTTP). In addition, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ITL's website is hosted on a 3rd party provider's server, on which we have totally no control (which is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 reason why we don't buy an SSL certificate for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 website). Never trust unsigned files that you download from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Internet. ITL cannot be liable for any damages caused by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 files downloaded from our website, unless cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are digitally signed.

Friday, July 17, 2009

Interview

Alan Dang from Tom's Hardware did an interview with me. I talk cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re about quite a lot of things, many of which I would probably write about on this blog sooner or later (or already had), so I thought it might be of interest to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 readers of this blog.

Friday, June 12, 2009

Virtualization (In)Security Training in Vegas

VM escapes, hypervisor compromises (via "classic" rootkits, as well as Bluepill-like rootkits), hypervisor protection strategies, SMM attacks, TXT bypassing, and more — cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se are some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 topics that will be covered by our brand new training on Virtualization (In)Security at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 upcoming Black Hat USA.

The training offers quite a unique chance, I think, to absorb cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 results of 1+ year of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 research done by our team within... just 2 days. This will be provided via detailed lectures and unique hands-on exercises.

Unlike our previous training on stealth malware (that will also be offered this year, BTW), this time we will offer attendees a bit of hope :) We will be stressing that some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new hardware technologies (Intel TXT, VT, TPM), if used properly, have potential to dramatically increase security of our computer systems. Sure, we will be showing attacks against those technologies (e.g. TXT), but nevercá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365less we will be stressing that this is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 proper way to go in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 long run.

Interestingly, I'm not aware of any similar training of this kind, that would be covering cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security issues related to virtualization systems and bare metal hypervisors. Hope we will not get into troubles with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Antitrust Commission for monopolizing this field ;)

The training brochure (something for your boss) is here.

The detailed agenda spanning 2 full days can be downloaded here.

The Black Hat signup page is here.

Tuesday, June 09, 2009

Quest to The Core

If you think SMM rootkits or PCI backdoors is low-level, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n you should certainly see our talks in Vegas — ITL is going to define what does cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "low-level" adjective really mean 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 decade ;)

In case you haven't noticed it at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Black Hat website yet — Alex and Rafal will be giving two presentations in Vegas:

1) Introducing Ring -3 Rootkits (description)

2) Attacking Intel® BIOS (description)

Let me stress that we have been in touch with Intel for quite some time about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 above attacks, and that Intel is planning to release appropriate fixes a few weeks before our presentations at Black Hat.

There is more than just this coming at this year's Black Hat — most notably we will also be debuting with our Virtualization (In)Security Training. I will write a separate post about this training (containing a detailed agenda) in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 coming days, so stay tuned.

Quite exciting.

Tuesday, June 02, 2009

More Thoughts on CPU backdoors

I've recently exchanged a few emails with Loic Duflot about CPU-based backdoors. It turned out that he recently wrote a paper about hypocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365tical CPU-backdoors and also implemented some proof-of-concept ones using QEMU (for he doesn't happen to own a private CPU production line). The paper can be bought here. (Loic is an academic, and so he must follow some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 strange customs in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 academic world, one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m being that papers are not freely published, but racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r being sold on a publisher website… Heck, even we, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ultimately commercialized researchers, still publish our papers and code for free).

Let me stress that what Loic writes about in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 paper are only hypocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365tical backdoors, i.e. no actual backdoors have been found on any real CPU (ever, AFAIK!). What he does is he considers how Intel or AMD could implement a backdoor, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n he simulate this process by using QEMU and implementing those backdoors inside QEMU.

Loic also focuses on local privilege escalation backdoors only. You should however not underestimate a good local privilege escalation — such things could be used to break out of any virtual machine, like VMWare, or potentially even out of a software VMs like e.g. Java VM.

The backdoors Loic considers are somewhat similar in principle to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 simple pseudo-code one-liner backdoor I used in my previous post about hardware backdoors, only more complicated in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual implementation, as he took care about a few important details, that I naturally didn't concern. (BTW, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 main message of my previous post about was how cool technology this VT-d is, being able to prevent PCI-based backdoors, and not about how doomed we are because of Intel- or AMD-induced potential backdoors).

Some people believe that processor backdoors do not exist in reality, because if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y did, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 competing CPU makers would be able to find cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m in each ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs' products, and later would likely cause a "leak" to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 public about such backdoors (think: Black PR). Here people make an assumption that AMD or Intel is technically capable of reversing each ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs processors, which seems to be a natural consequence of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m being able to produce cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m.

I don't think I fully agree with such an assumption though. Just cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact that you are capable of designing and producing a CPU, doesn't mean you can also reverse engineer it. Just cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact that Adobe can write a few hundred megabyte application, doesn't mean cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are automatically capable of also reverse engineering similar applications of that size. Even if we assumed that it is technically feasible to use some electron microscope to scan and map all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 electronic elements from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is still a problem of interpreting of how all those hundreds of millions of transistors actually work.

Anyway, a few more thoughts about properties of a hypocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365tical backdoors that Intel or AMD might use (be using).

First, I think that in such a backdoor scenario everything besides cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "trigger" would be encrypted. The trigger is something that you must execute first, in order to activate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 backdoor (e.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CMP instruction with particular, i.e. magic, values of some registers, say EAX, EBX, ECX, EDX). Only 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 backdoor gets activated and e.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor auto-magically escalates into Ring 0. Loic considers this in more detail in his paper. So, my point is that all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker's code that executes afterwards, think of it as of a shellcode for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 backdoor, that is specific for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS, is fetched by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor in an encrypted form and decrypted only internally inside cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU. That should be trivial to implement, while at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same time should complicate any potential forensic analysis afterwards — it would be highly non-trivial to understand what cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 backdoor actually have done.

Anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r crucial thing for a processor backdoor, I think, should be some sort of an anti-reply attack protection. Normally, if a smart admin had been recording all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 network traffic, and also all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 executables that ever got executed on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 host, chances are that he or she would catch cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 triggering code and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 shellcode (which might be encrypted, but still). So, no matter how subtle cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 trigger is, it is still quite possible that a curious admin will eventually find out that some tetris.exe somehow managed to breakout of a hardware VM and did something strange, e.g. installed a rootkit in a hypervisor (or some Java code somehow was able to send over all our DOCX files from our home directory).

Eventually cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 curious admin will find out that strange CPU instruction (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 trigger) after which all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 strange things had happened. Now, if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 admin was able to take this code and replicate it, post it to Daily Dave, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n, assuming his message would pass through cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Moderator (Hi Dave), he would effectively compromise cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor vendor's reputation.

An anti-replay mechanism could ideally be some sort of a challenge-response protocol used in a trigger. So, instead having you always to put 0xdeadbeaf, 0xbabecafe, and 0x41414141 into EAX, EBX and EDX and execute some magic instruction (say CMP), you would have to put a magic that is a result of some crypto operation, taking current date and magic key as input:

Magic = MAGIC (Date, IntelSecretKey).

The obvious problem is how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor can obtain current date? It would have to talk to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 south-bridge at best, which is 1) nontrivial, and 2) observable on a bus, and 3) spoof'able.

A much better idea would be to equip a processor with some sort of an eeprom memory, say big enough to hold one 64-bit or maybe 128-bit value. Each processor would get a different value flashed cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re when leaving cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 factory. Now, in order to trigger cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 backdoor, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor vendor (or backdoor operator, think: NSA) would have to do cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following:

1) First execute some code that would read this unique value stored in eeprom for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 particular target processor, and send this back to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m,

2) Now, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y could generate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual magic for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 trigger:

Magic = MAGIC (UniqeValueInEeprom, IntelSecretKey)

3) ...and send cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual code to execute cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 backdoor and shellcode, with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 correct trigger embedded, based on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 magic value.

Now, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 point is that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor will automatically increment cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 unique number stored in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 eeprom, so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same backdoor-exploiting code would not work twice for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same processor (while at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same time it would be easy for NSA to send anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r exploit, as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y know what cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 next value in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 eeprom should be). Also, such a customized exploit would not work on any ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r CPU, as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 assumption was that each CPU gets a different value at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 factory, so again it would not be possible to replicate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack and proved that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 particular code has ever done something wrong.

So, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 moment I learn that processors have built-in eeprom memory, I will start thinking seriously cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are backdoors out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re :)

One thing that bocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs me with all those divagations about hypocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365tical backdoors in processors is that I find cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m pretty useless in 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 day. After all, by talking about those backdoors, and how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y might be created, we do not make it any easier to protect against cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m, as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re simply is no possible defense here. Also this doesn't make it any easier for us to build such backdoors (if we wanted to become cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bad guys for a change). It might only be of an interest to Intel or AMD, or whatever else processor maker, but I somewhat feel cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y have already spent much more time thinking about it, and chances are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y probably can only laugh at what we are saying here, seeing how unsophisticated our proposed backdoors are. So, my Dear Reader, I think you've been just wasting time reading this post ;) Sorry for tricking you into this and I hope to write something more practical next time :)

Thursday, May 28, 2009

Thoughts About Trusted Computing

Here are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 slides about Trusted Computing I used for my presentations at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 EuSecWest today, and at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Confidence conference last week.

As this was supposed to be a keynote, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 slides are much less technical cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n our ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r slides, and also cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are no new attacks presented cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re. Still, I hope cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y might be useful as some sort of an "alternative" introduction to Trusted Computing :)

A cool presentation I saw today was about PCI-based backdoors by Christophe Devine and Guillaume Vissian. They basically took a general-purpose FPGA programmable PC-card (AKA PCMCIA), flashed it with an FPGA "program" that implemented a simple state machine. The purpose of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 state machine was to wait until its DMA engine gets initialized and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n to modify certain bytes in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 host memory, that happened to be part of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 winlogon.exe process (IIRC cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y changed XOR AL, AL into MOV AL, 1, or something like that, at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 end of some password verification function inside cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 winlogon.exe process). The slides should be available soon on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 conference website. I also hope cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y will publish all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 source code needed to flash your own personal "winlogon unlocker".

The live demo was really impressive — cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y showed a winlogon screen, tried to login a few times with wrong passwords, of course all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attempts failed, 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 inserted cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir magic, $300 worth, PC-card, and… 2 seconds later cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y could log in using any password cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y wanted.

While not necessary being a breakthrough, as everybody has known such things could be done for years, I think it is still important that somebody eventually implemented this, discussed cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 technical details (FPGA-related), and also showed how to implement it with a cheap generic "reflashable" hardware without using a soldering iron.

Of course I have also discussed in my presentation how to prevent PCI-based backdoors (like cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 one discussed here) using VT-d, but this defense is currently only available if you use Xen 3.3 or later, and also requires that you manually create driver domain partitions and come up with a reasonable scheme for assigning devices to driver domains. All in all 99.9% of users are not (and will not be anytime soon) protected against such attacks. Oh, wait, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is actually a relatively simple software-based workaround (besides putting a glue into your PC-card slot, which is not a very subtle one)… I wonder who else will find out :)

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.

Thursday, February 19, 2009

Attacking Intel TXT: paper and slides

The new press release covering cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 basic details about our TXT attack is here.

The paper is here.

The slides converted to a PDF format are here. There is also an original version of slides in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Keynote format here for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Mac people. And for 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 people who don't use Mac, but still value cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 aescá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365tics (?!), I have also generated a QuickTime clickable movie out from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Keynote slides -- it can be found here, but it weighs 80MB.

Enjoy.

Tuesday, February 10, 2009

Nesting VMMs, Reloaded.

Besides breaking cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Intel's stuff, we have also been doing ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r things over at our lab. Thought I would share this cool screenshot of a Virtual PC running inside Xen. More precisely what you see on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 pic is: Windows XP running inside Virtual PC, that runs inside Vista, which itself runs inside a Xen's HVM VM. Both cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Virtual PC and Xen are using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Intel's hardware virtualization (VT-x is always used for HVM guests on Xen).

Our Nested Xen patch is part of a work done for a customer, so it is not going to be published. Besides it is currently a bit unstable ;) It's just a prototype that shows such a thing could be done.

Monday, January 26, 2009

Closed Source Conspiracy

Many people in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 industry have an innate fear of closed source (AKA proprietary software), which especially applies to everything crypto-related.

The usual arguments go this way: this (proprietary) crypto software is bad, because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 vendor might have put some backdoors in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re. And: only cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 open source crypto software, which can be reviewed by anyone, can be trusted! So, after my recent post, quite a few people wrote to me and asked how I could defend such an evil thing as BitLocker, which is proprietary, and, even worse, comes from Microsoft?

I personally think this way of reasoning sucks. In majority of cases, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact something is distributed without cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 accompanying source code does not prevent ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs from analyzing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code. We do have advanced disassemblers and debuggers, and it is really not that difficult to make use of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m as many people think.

Of course, some heavily obfuscated programs can be extremely difficult to analyze. Also, analyzing a chipset's firmware, when you do not even know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 underlying CPU architecture and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 I/O map might be hard. But cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se are special cases and do not apply to majority of software, that usually is not obfuscated at all.

It seems like cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 argument of Backdoored Proprietary Software usually comes from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 open-source people, who are used to unlimited accesses to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 source code, and consequently do not usually have much experience with advanced reverse engineer techniques, simply because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y do not need cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir happy "Open Source Life". It's all Darwinism, after all ;)

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, some things are hard to analyze, regardless of whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 source code is available or not, think: crypto. Also, how many of you who actively use open source crypto software, e.g. TrueCrypt or GnuPG, have actually reviewed cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 source code? Anyone?

You might be thinking — maybe I haven't looked at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 source code myself, but because it is open source, zillions of ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r users already have reviewed it. And if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re was some backdoor in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y would undoubtedly have found it already! Well, for all those open source fetishists, who blindly negate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 value of anything that is not open source, I have only one word to say: Debian.

Keep in mind: I do not say closed source is more secure than open source — I only resist cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 open-source fundamentalism, that defines every proprietary software as inherently insecure, and everything open source as ultimately secure.

So, how should one (e.g. a government institution) verify security-level of a given crypto software, e.g. to ensure cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are no built-in backdoors in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re? I personally doubt it could be performed by one team, as it just usually happens that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same people who might be exceptionally skilled in code review, system-level security, etc, at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same time are average cryptographers and vice-versa.

Imagine e.g. that you need to find out if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are any weaknesses in your system drive encryption software, something like BitLocker. Even if you get access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 source code, you still would have to analyze a lot of system-level details — how is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 trusted boot implemented (SRTM? DRTM? TPM interaction?), which system software is trusted, how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 implementation withstands various not-crypto-related attacks (e.g. some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacks I described in my previous post), etc…

But this all is just system-level evaluation. What should come later is to analyze cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual crypto algorithms and protocols. Those later tasks fall into cryptography field and not into system-level security discipline, and consequently should be performed by some ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r team, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 crypto experts.

So, no doubt, it is not an easy task, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is not C/C++ source code available, is usually one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 minor headaches (a good example is our attack on TXT, where we were able to discover bugs in Intel's specific system software, which, of course, is not open source).

Wednesday, January 21, 2009

Why do I miss Microsoft BitLocker?

In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 previous post, I wrote cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 only one thing I really miss after I've switched from Vista to Mac is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BitLocker Driver Encryption. I thought it might be interesting for ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs to understand my position, so below I describe why I think BitLocker is so cool, and why I think ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r system disk encryption software sucks.

So, it's all about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Trusted Boot. BitLocker does make use of a trusted boot process, while 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 system encryption software I'm aware of, does not. But why cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 trusted boot feature is so useful? Let's start with a quick digression about what cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 trusted boot process is…

Trusted boot can be implemented using eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r a Static Root of Trust or a Dynamic Root of Trust.

The Static Root of Trust approach (also known as Static Root of Trust Measurement or SRTM) is pretty straightforward — cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system starts booting from some immutable piece of firmware code that we assume is always trusted (hence cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 static root) and that initiates cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 measurement process, in which each component measures cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 next one in a chain. So, e.g. this immutable piece of firmware will first calculate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hash of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS and extend a TPM's PCR register with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 value of this hash. Then cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS does cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 PCI EEPROMs and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 MBR, before handling execution to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m. Then cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bootloader measures cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS loader before executing it. And so on.

An alternative method to implementing trusted boot is to use Dynamic Root of Trust (often called Dynamic Root of Trust Measurement or DRTM). Intel's TXT technology, formerly LaGrande, is an example of a DRTM (more precisely: TXT is more than just DRTM, but DRTM is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 central concept on which TXT is built). We will be talking a lot about TXT next month at Black Hat in DC :) This will include discussion of why DRTM might sometimes be preferred over SRTM and, of course, what are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 challenges with both.

Essentially, both SRTM and DRTM, in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 context of a trusted boot, are supposed to provide cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same: assurance cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system that just booted is actually cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system that we wanted to boot (i.e. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 trusted one) and not some modified system (e.g. compromised by an MBR virus).

BitLocker uses cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Static Root of Trust Measurement. SRTM can really make sense when we combine it with eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r TPM sealing or attestation feature. BitLocker uses cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 former to make sure that only cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 trusted system can get access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 disk decryption key. In ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r words: BitLocker relies on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TPM that it will unseal (release) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 decryption key (needed to decrypt cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system partition) when and only when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 state of chosen PCR registers is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same is it was when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 decryption key was sealed into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TPM.

Ok, why is this trusted boot process so important for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system disk encryption software? Because it protects against a simple two-stage attack:
  1. You leave your laptop (can be even fully powered down) in a hotel room and go down for a breakfast… Meanwhile an Evil Maid enters your room. She holds an Evil USB stick in her hand and plugs it into your laptop and presses cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 power button. The system starts and boots from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 USB. An Evil version of something similar to our BluePillBoot gets installed into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 MBR (or to a PCI EEPROM). This Evil Program has only one task — to sniff out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 encryption software's password/PIN and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n report it back to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 maid next time she comes...
  2. So, you come back to your room to brush your teeth after cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 breakfast. Obviously you cannot refrain from not turning on your laptop for a while. You just need to enter your disk encryption passphrase/PIN/whatever. Your encryption software happily displays cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 prompt, like if nothing happened. After all how could it possibly know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Evil Program, like BluePillBoot, has just been loaded a moment ago from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 MBR or a PCI EEPROM? It can not! So, you enter cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 valid password, your system gets cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 decryption key and you can get access to your encrypted system...
  3. But cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n you have an appointment at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hotel SPA (at least this little fun you can have on a business trip, right?). Obviously you don't want to look so geeky and you won't take your laptop with you to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SPA, will you? The Evil Maid just waited for this occasion… She sneaks again into your room and powers up your laptop. She presses a magic key combo, which results in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Evil Program displaying cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sniffed decryption password. Now, depending on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir level of subtleness, she could eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r steal your whole laptop or only some more important data from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 laptop. Your system disk encryption software is completely useless against her now.
(Yes, I know that's 3 bullets, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Evil Maid had to sneak into your room only twice:)

So, why cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BitLocker would not allow for this simple attack? Because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BitLocker software should actually be able to know that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system gets compromised (by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Evil Program) since cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last boot. BitLocker should cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n refuse to display a password prompt. And even if it didn't and asked cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password, still it should not be able to get cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual decryption key out from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TPM, because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 values in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 certain PCR register(s) will be wrong (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y will now account for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 modified hashes of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 MBR or PCI EEPROM or BIOS). The bottom line is: cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 maid is not getting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 decryption key (just as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user now), which is what this is all about.

At least this is how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BitLocker should work. I shall add a disclaimer here, that neicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r myself, nor anybody from my team, have looked into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BitLocker implementation. We have not, because, as of yet, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re have been no customers interested in this kind of BitLocker implementation evaluation. Also, I should add that Microsoft has not paid me to write this article. I simply hope this might positively stimulate ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r vendors, like e.g. TrueCrypt (Hi David!), or Apple, to add SRTM or, better yet, DRTM, to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir system encryption products.

Of course, when we consider an idiot-attack, that involves simply garbbing somebody's laptop and running away with it (i.e. without any prior preparation like our Evil Maid did), cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n probably all system disk encryption software would be just good enough (assuming it doesn't have any bugs in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 crypto code).

Some people might argue that using a BIOS password would be just as good as using trusted boot. After all, if we disable booting from alternate media in BIOS (e.g. from USB sticks) and lock down cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS using a password (i.e. using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Power-On password, not just cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS supervisor password), 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 above two-stage attacks should not be feasible. Those people might argue, that even if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Evil Maid had cleared cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CMOS memory (by removing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CMOS battery from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 mocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rboard), still cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y would be able to notice that something is wrong — cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS would not longer be asking for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password, or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password would be different from what cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y used before.

That is a valid point, but relaying on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS password to provide security for all your data might not be such a good idea. First problem is that all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOSes have had a long history of various default or "maintenance" passwords (I actually do not know how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 situation looks today with those default passwords). Anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r problem is that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker might first clear cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CMOS memory, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n modify her Evil MBR program to also display a fake BIOS password prompt, that would accept anything cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user enters. This way cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user will not be alerted that something is wrong and will be willing to provide cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 real password for drive decryption when prompted later by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual drive encryption software.

One might ask why can't cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 similar attack against BitLocker? Even if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 real BitLocker uses trusted boot process, we can still infect cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 MBR, display cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fake BitLocker PIN prompt and this way get into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 possession of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user's PIN.

This attack, however, can be spotted by an inquisitive user — after all, if he or she knows cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y provided cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 correct PIN, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n it would be suspicious not to see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system being booted (and it won't boot, because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fake BitLocker will not be able to retrieve cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TPM). If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fake BitLocker wanted to boot cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS (so that user didn't suspect anything), it would have to remove itself from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n reboot cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system. Again this should alert cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user that something wrong is going on.

There is also a much more elegant way of defending against cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 above attack (with fake BitLocker prompt) — but I'd racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r let Microsoft to figure it out by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365mselves ;)

By cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 way, contrary to a popular belief cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BitLocker doesn't protect your computer from boot-stage infections, e.g. MBR viruses or BIOS/PCI rootkits. As we have been pointing out since cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first edition of our Understanding Stealth Malware training at Black Hat in August 2007, BitLocker should not be thought as of a system integrity protection. This is because it is trivial, for any malware that already got access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 running Vista, to re-seal cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BitLocker key to arbitrary new system firmware/MBR configuration. Everybody can try it by going to Control Panel/BitLocker Driver Encryption, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n clicking on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "Turn Off BitLocker" and choosing "Disable BitLocker Drive Encryption". This will simply save your disk decryption key in plaintext, allowing you to e.g. reflash your BIOS, boot Vista again and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n to enable BitLocker again (this would generate a new key and seal it to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TPM with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new PCR values).


This functionality has been provided obviously to allow user to update his or her firmware. But what is important to keep in mind is that this process of disabling BitLocker doesn't involve entering any special password or PIN (e.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BitLocker's PIN). It just enough that you are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 default user with admin rights or some malware running in this context. Pity cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y decided on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 simplest solution here. But still BitLocker is simply cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 one coolest thing in Vista and something I really miss on all ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r OSes...

Monday, January 05, 2009

Attacking Intel® Trusted Execution Technology



Press people: please read our press release first and also refer to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 disclaimer at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 end of this blog post. Thank you!

Update: 1/5/2009 19:21 CEST: minor typos/spelling corrections. Thanks to Jarred for point out some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 typos.

A word about Trusted Computing
The term Trusted Computing and related technologies, like Palladium, Trusted Platform Module, LaGrande, have always caused lots of controversy in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 IT world. Most of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fear, however, has been a result of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 lack of understanding of how a particular technology really works.

Nevercá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365less, Trusted Computing is becoming part of our lives, whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r we want it or not. These days almost every new laptop comes with an on-board Trusted Platform Module (TPM). Microsoft's Palladium initiative have been renamed so many times in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recent years, that probably even people working at Microsoft are confused now. Nevercá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365less, some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Palladium technologies made cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir way into Vista, and Microsoft BitLocker is, without doubt, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most successful, widely deployed product that is based on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 idea of Trusted Computing. (In fact cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Bitlocker is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 only one thing that I really have been missing since I switched from Vista to Mac some time ago).

On cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hardware side, besides cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 famed TPM, we also have had cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 LaGrande technology, that is often connected with things such as Remote Attestation, Protected Execution and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r scary terms…

A word about Trusted Execution Technology
LaGrande, recently renamed Trusted Execution Technology (TXT), is Intel's response to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Trusted Computing trend. TXT is currently part of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 vPro™ brand, and for about a year now users can buy a vPro/TXT compatible hardware in regular computer stores (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first one was cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DQ35J desktop board with certain Core 2 Duo processors, which I was able to buy at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 end of 2007 — remember that TXT requires support from both cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chipset).

TXT is not an alternative to TPM, in fact TXT heavily relies on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TPM to provide basic services like e.g. secure storage of measurements done by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TXT. Also, Palladium, or whatever it is called cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se days, is not a competition to TXT. Intel TXT can provide building blocks to e.g. Vista Bitlocker, arguably making it more secure cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n it is now (Current Bitlocker implementation, AFAIK, relies on a so called Static Root of Trust for Measurement, which requires TPM, but not TXT).

What kind of measurement would TXT like to store in our TPM? Well, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole TXT is, in fact, all about making and storing software measurements, or, using a more familiar language, secure hashes of certain software components.

The sole purpose of Intel TXT technology is to provide a trusted way for loading and executing system software, e.g. Operating System kernel or Virtualization Machine Monitor. What is extraordinary here is that TXT doesn't make any assumptions about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 state of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system before loading cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 software, thus making it possible for a user to ensure secure load of an OS or VMM, even in a potentially compromised machine.

In ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r words, our system can be all full of boot sector viruses and BIOS rootkits, and god-knows-what-else, and still TXT should allow to load a clean VMM (or OS kernel) in a secure way, immune to all those rootkits present in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system in a moment just before cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 load process. This TXT-supported load process is called Late Launch, and is implemented via a special new CPU instruction called SENTER.

It's a good place to mention that AMD has its own version of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 late launch implemented via SKINIT instruction. We haven't looked at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 AMD technology thoroughly yet, so I will refrain from commenting on this.

The late launch is a pretty amazing thing, when we think about. It promises to effectively provide all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 benefits of a computer restart without actually restarting it.

It is hard to overemphasize cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 potential impact that a technology such as TXT could have on computer security. One can immediately see that it could eliminate all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system-level persistent malware — in ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r words we can easily build systems (VMMs or even standard OSes) that would be immune to attacks that try to compromise system binaries on disk, or attack cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system right from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bootloader or BIOS. Combining this with VT-x and VT-d technologies, system developers (for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first time, at least as far as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "PC" platform is considered) have gotten extremely strong tools into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir hands that should allow cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m to create really secure VMMs and OSes…

Hopefully by now, my Dear Reader, you should have cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 feeling what kind of an animal Intel TXT is and how desperately cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 world needs it...

And now, we are going to move on and show practical attacks on current TXT implementations... :)

Attacking Intel TXT!
Ok, not in this post today, but racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 upcoming Black Hat conference in Washington, DC in February. Over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recent months, Rafal and I have been looking at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Intel TXT technology as part of a work done for a customer, to see if this could be used to improve security of a product, from a typical user's perspective. We figured out that it definitely could, but that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are also some issues…

And those "issues" gave us a starting point in developing a proof-of-concept (albeit very reliable) exploit that shows how we can bypass trusted boot process implemented by Intel's tboot.

Tboot, which is also part of (scroll down to 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 page) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Xen hypervisor, can be though of as a reference implementation of TXT-based system loader, that could be used to securely load eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Xen hypervisor or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Linux kernel, when run on a vPro/TXT compatible hardware.

[copy-and-paste from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 press release follows]

Our attack comprises two stages. The first stage requires an implementation flaw in a specific system software. The second stage of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack is possible thanks to a certain design decision made in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 current TXT release.

While evaluating cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 effectiveness of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Intel® TXT technology, as part of a work done for a customer, we have identified several implementation flaws in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Intel's system software, which allowed to conduct cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 above mentioned stage-one attack. We have provided Intel with extensive description of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 flaws in December 2008, and Intel is currently working on fixing those vulnerabilities.


We have also been in touch with Intel about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 possibility of conducting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 second-stage attack since November 2008. In December, after providing Intel with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 details about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first-stage attack, Intel promised to release, in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 coming weeks, an updated TXT specification for developers that would explain how to design cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir TXT-based loaders in such a way that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are immune to our attack. Intel claims cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 current Intel® TXT release does contain cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 basic building blocks that could be used to prevent our second-stage attack and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 release of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 additional specification would make it feasible in practice.


More details in February in DC :)

TXT useless?
Some people are skeptical about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TXT technology, and not only because of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Irrational Fear of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Trusted Computing (IFTC), but racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y point out to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 complexity of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole technology. The complexity is bad, because 1) it leaves more space for potential attacks, and 2) it discourages developers (ISVs) from using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 technology in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir products (e.g. neicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r Microsoft, nor VMWare make use of TXT in any of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir bare-metal hypervisors, even though TXT is very well suited for this kind of software).

It is true that TXT is a very complex technology (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SENTER instruction is probably cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 masterpiece of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CISC architecture!), but I personally like it. In my opinion this is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first technology available for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 PC platform that has cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 potential to really change something, much more 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 NX-feature did a few years ago. Before people will run to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 comment box — if you would like to argue about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 usefulness/uselessness of Trusted Computing/TXT, please base your opinions on technical facts (read cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 spec!) and not on your feelings!

Disclaimer (for press)

Starting January 2009, we (at Invisible Things Lab), decided to issue press releases in addition to this blog. The general rule is: press releases are written for journalists, while cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 blog is mainly written for ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r researchers, security enthusiast, etc.

The wording of our press releases is carefully chosen to minimize cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 potential of a possible misinterpretation. The press releases carry less information, but, we think, are better suited for a more general public, that doesn't have background in computer science, programming and security.

The blog is written in a much more casual way, without thinking for half an hour on every sentence. The articles on this blog might present some facts as extremely exciting, because e.g. for me, a person deeply involved in a system-level security research, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y indeed might be very exciting, which might not be cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 case for a general audience. I sometimes might also use shortcuts, metaphors, or irony, and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r figures of speech, that might not necessarily be obvious for a more general public.

If you are a journalist and you think you just found something very sensational on my blog, I would suggest that you double-check with me, before writing about it.

Thank you for your cooperation.
Joanna Rutkowska,
Founder and CEO,
Invisible Things Lab.