<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-24586388</id><updated>2009-11-03T07:42:34.295+01:00</updated><title type='text'>The Invisible Things Lab's blog</title><subtitle type='html'>Kernel, Hypervisor, Virtualization, Trusted Computing and other system-level security stuff</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://theinvisiblethings.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default'/><link rel='alternate' type='text/html' href='http://theinvisiblethings.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default?start-index=26&amp;max-results=25'/><author><name>joanna</name><uri>http://www.blogger.com/profile/07657268181166351141</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>58</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-24586388.post-1384385046456881063</id><published>2009-10-16T00:30:00.005+02:00</published><updated>2009-11-03T01:02:54.209+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='disk encryption'/><category scheme='http://www.blogger.com/atom/ns#' term='attack'/><category scheme='http://www.blogger.com/atom/ns#' term='tpm'/><category scheme='http://www.blogger.com/atom/ns#' term='trusted computing'/><category scheme='http://www.blogger.com/atom/ns#' term='fighting for a better world'/><title type='text'>Evil Maid goes after TrueCrypt!</title><content type='html'>From time to time it’s good to take a break from all the ultra-low-level stuff, like e.g. chipset or TXT hacking, and do something simple, yet still important. Recently &lt;span style="font-weight: bold;"&gt;Alex Tereshkin&lt;/span&gt; and I got some spare time and we implemented the &lt;a href="http://theinvisiblethings.blogspot.com/2009/01/why-do-i-miss-microsoft-bitlocker.html"&gt;Evil Maid Attack&lt;/a&gt; against TrueCrypt system disk encryption in a form of a small bootable USB stick image that allows to perform the 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.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;The Attack&lt;/span&gt;&lt;br /&gt;Let’s quickly recap the Evil Maid Attack. The scenario we consider is when somebody left an encrypted laptop e.g. in a hotel room. Let’s assume the laptop uses full disk encryption like e.g. this provided by &lt;a href="http://www.truecrypt.org/"&gt;TrueCrypt &lt;/a&gt;or &lt;a href="http://www.pgp.com/products/wholediskencryption/index.html"&gt;PGP Whole Disk Encryption&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Many people believe, including some well known &lt;a href="http://citp.princeton.edu/memory/faq/"&gt;security&lt;/a&gt; &lt;a href="http://www.tomshardware.com/reviews/dino-dai-zovi,2260-5.html"&gt;experts&lt;/a&gt;, that it is advisable to fully power down your laptop when you use full disk encryption in order to prevent attacks via FireWire/&lt;a href="http://theinvisiblethings.blogspot.com/2009/05/thoughts-about-trusted-computing.html"&gt;PCMCIA &lt;/a&gt;or &lt;a href="http://citp.princeton.edu/memory/"&gt;”Coldboot” attacks&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;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 they leave it alone in a hotel room, or somewhere else.&lt;br /&gt;&lt;br /&gt;Now, this is where our Evil Maid stick comes into play. All the attacker needs to do is to sneak into the user’s hotel room and boot the laptop from the Evil Maid USB Stick. After some 1-2 minutes, the target laptop’s gets infected with Evil Maid Sniffer that will record the disk encryption passphrase when the 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 them.&lt;br /&gt;&lt;br /&gt;So, after our victim gets back to the hotel room and powers up his or her laptop, the passphrase will be recorded and e.g. stored somewhere on the disk, or maybe transmitted over the network (not implemented in current version).&lt;br /&gt;&lt;br /&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; width: 200px; height: 130px;" src="http://2.bp.blogspot.com/_Ti3q3Hdvels/Stdj6EwsmvI/AAAAAAAAAFg/eVbBLzSlq-E/s200/evil+maid.jpg" alt="" id="BLOGGER_PHOTO_ID_5392888928161012466" border="0" /&gt;Now we can safely steal/confiscate the user’s laptop, as we know how to decrypt it. End of story.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Quick Start&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Download the USB image &lt;a href="http://invisiblethingslab.com/resources/evilmaid/evilmaidusb-1.01.img"&gt;here&lt;/a&gt;. In order to “burn” the Evil Maid use the following commands on Linux (you need to be root to do dd):&lt;br /&gt;&lt;code&gt;&lt;br /&gt;dd if=evilmaidusb.img of=/dev/sdX&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Where &lt;code&gt;/dev/sdX&lt;/code&gt; should be replaced with the device representing your USB stick, e.g. &lt;code&gt;/dev/sdb&lt;/code&gt;. Please be careful, as choosing a wrong device might result in damaging your hard disk or other media! Also, make sure to use the device representing the whole disk (e.g. &lt;code&gt;/dev/sdb&lt;/code&gt;), rather than a disk partition (e.g. &lt;code&gt;/dev/sdb1&lt;/code&gt;).&lt;br /&gt;&lt;br /&gt;On Windows you would need to get a dd-like program, e.g. this &lt;a href="http://www.chrysocome.net/dd"&gt;one&lt;/a&gt;, and the command would look more or less like this one (depending on the actual dd implementation you use):&lt;br /&gt;&lt;code&gt;&lt;br /&gt;dd if=evilmaidusb.img of=\\?\Device\HarddiskX\Partition0 bs=1M&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;where &lt;code&gt;HarddiskX&lt;/code&gt; should be replaced with the actual device the represents your stick.&lt;br /&gt;&lt;br /&gt;After preparing the 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 the laptop from the stick, confirm you want to run the tool (press ‘E’) and the TrueCrypt loader on your laptop should be infected.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Ti3q3Hdvels/Stdls03RIgI/AAAAAAAAAFo/t-h8arbkmvo/s1600-h/em1.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 178px;" src="http://2.bp.blogspot.com/_Ti3q3Hdvels/Stdls03RIgI/AAAAAAAAAFo/t-h8arbkmvo/s320/em1.gif" alt="" id="BLOGGER_PHOTO_ID_5392890899578561026" border="0" /&gt;&lt;/a&gt;Now, Evil Maid will be logging the passphrases provided during the boot time. To retrieve the recorded passphrase just boot again from the Evil Maid USB -- it should detect that the target is already infected and display the sniffed password.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Ti3q3Hdvels/Stdly_rCP0I/AAAAAAAAAFw/MIGLEThUux4/s1600-h/em2.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 178px;" src="http://3.bp.blogspot.com/_Ti3q3Hdvels/Stdly_rCP0I/AAAAAAAAAFw/MIGLEThUux4/s320/em2.gif" alt="" id="BLOGGER_PHOTO_ID_5392891005559258946" border="0" /&gt;&lt;/a&gt;The current implementation of Evil Maid always stores the last passphrase entered, assuming this is the correct one, in case the user entered the passphrase incorrectly at earlier attempts.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;NOTE: It’s probably illegal to use Evil Maid to obtain password from other people without their consent. You should always obtain permission from other people before testing Evil Maid against their laptops!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;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.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;How the Evil Maid USB works&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;The provided implementation is extremely simple. It first reads the first 63 sectors of the primary disk (&lt;code&gt;/dev/sda&lt;/code&gt;) and checks (looking at the first sector) if the code there looks like a valid TrueCrypt loader. If it does, the rest of the code is unpacked (using gzip) and hooked. Evil Maid hooks the TC’s function that asks user for the passphrase, so that the hook records whatever passphrase is provided to this function. We also take care about adjusting some fields in the MBR,  like the boot loader size and its checksum. After the hooking is done, the loader is packed again and written back to the disk.&lt;br /&gt;&lt;br /&gt;You can get the source code for the Evil Maid infector &lt;a href="http://invisiblethingslab.com/resources/evilmaid/evilmaid-src-1.0.tgz"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Possible Workarounds&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;So, how should we protect against such Evil Maid attacks? There are a few approaches...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Protect your laptop when you leave it alone&lt;/span&gt;&lt;br /&gt;Several months ago I had a discussion with one of the TrueCrypt developers about possible means of preventing the Evil Maid Attack, perhaps using TPM (see below). Our dialog went like this (reproduced here with permission from the TrueCrypt developer):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;TrueCrypt Developer:&lt;/span&gt; We generally disregard "janitor" attacks since they inherently make the machine untrusted. We never consider the feasibility of hardware attacks; we simply have to assume the 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.)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;Joanna Rutkowska:&lt;/span&gt; And how can you determine that the attacker have or have not  "worked" with your hardware? Do you carry your laptop with you all the time?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;TrueCrypt Developer:&lt;/span&gt; Given the scope of our product, how the 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). &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;Joanna Rutkowska:&lt;/span&gt;  If I could arrange for a proper lock or an impenetrable strongbox, then why in the world should I need encryption?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;TrueCrypt Developer:&lt;/span&gt; Your question was: "And how can you determine that the 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, then you will notice that the attacker has accessed your notebook inside (as the case or strongbox will be damaged and it cannot be replaced because you had the correct key with you). If the safety case or strongbox can be opened without getting damaged &amp;amp; unusable, then it's not a good safety case or strongbox. ;-)&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;That's a fair point, but this means that for the security of our data we must relay on the 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...&lt;br /&gt;&lt;br /&gt;Note that TrueCrypt authors do mention the possibility of physical attacks in the  &lt;a href="http://www.truecrypt.org/docs/physical-security"&gt;documentation&lt;/a&gt;:&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;&lt;span style="font-size:85%;"&gt;If an attacker can physically access the computer hardware and you use it after the attacker has physically accessed it, then TrueCrypt may become unable to secure data on the computer. This is because the attacker may modify the hardware or attach a malicious hardware component to it (such as a hardware keystroke logger) that will capture the password or encryption key (e.g. when you mount a TrueCrypt volume) or otherwise compromise the security of the computer.&lt;/span&gt;&lt;/blockquote&gt;However, they do not explicitly warn users of a possibility of something as simple and cheap as the Evil Maid Attack. Sure, they write "or otherwise compromise the security of the computer", which does indeed cover e.g. the Evil Maid Attack, but my bet is that very few users would realize what it really means. The examples of physical attacks given in the documentation, e.g. modifying the 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.&lt;br /&gt;&lt;br /&gt;Of course it is a valid point, that if we allow a possibility of a physical attack, then the attacker can e.g. install a hardware keylogger. But doing that is really not so easy as we discuss in the next paragraph. On the other hand, spending two minutes to boot the machine from an Evil Maid USB stick is just trivial and is very cheap (the price of the USB stick, plus the tip for the maid).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. The Trusted Computing Approach&lt;/span&gt;&lt;br /&gt;As &lt;a href="http://theinvisiblethings.blogspot.com/2009/01/why-do-i-miss-microsoft-bitlocker.html"&gt;explained &lt;/a&gt;a few months ago on this blog, a reasonably good solution against Evil Maid attack seems to be to take advantage of either 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 authenticate to the user (e.g. via displaying a custom picture shot by the user, with the 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 the Evil Maid for Bitlocker would have to display a fake Bitlocker prompt (that could be identical to the real Bitlocker prompt), but after obtaining a correct password from the user Evil Maid would not be able to pass the execution to the real Bitlocker code, as the SRTM chain will be broken. Instead, Evil Maid would have to pretend that the password was wrong, uninstall itself, and then reboot the platform. Thus, a Bitlocker user that is confident that he or she entered the correct password, but the OS didn’t boot correctly, should destroy the laptop.&lt;br /&gt;&lt;br /&gt;The dynamic root of trust approach (DRTM) is possible thanks to Intel TXT technology, but currently there is no full disk encryption software that would make use of it. One can try to implement it using Intel’s &lt;a href="http://sourceforge.net/projects/tboot/"&gt;tboot &lt;/a&gt;and some Linux disk encryption, e.g. LUKS.&lt;br /&gt;&lt;br /&gt;Please also note that even if we assume somebody “cracked” the TPM chip (e.g. using an electron microscope, or NSA backdoor), that doesn’t mean this person can automatically get access to the encrypted disk contents. This is not the case, as the TPM is used only for ensuring trusted boot. After cracking the TPM, the attacker would still have to mount an Evil Maid attack in order to obtain the passphrase or key. Without TPM this attack is always possible.&lt;br /&gt;&lt;br /&gt;Are those trusted computing-based approaches 100% foolproof? Of course not. As signalized in the previous paragraph, if an attacker was able to mount a hardware-based keylogger into your laptop (which is non-trivial, but possible), then the attacker would be able to capture your passphrase regardless of the trusted boot. A user can prevent such an attack by using two-factor authentication (RSA challenge-response implemented in a USB token) or e.g. one-time passwords, so that there is no benefit for the attacker to capture the keystrokes. But the attacker might go to the extreme and e.g. replace the DRAM, or even the CPU with malicious DRAM or CPU that would sniff and store the decryption key for later access. We’re talking here about attack that very few entities can probably afford (think NSA), but nevertheless they are theoretically possible. (Note that an attack with inserting a malicious PCI device that would try to sniff the key using DMA can be &lt;a href="http://theinvisiblethings.blogspot.com/2009/03/trusting-hardware.html"&gt;prevented &lt;/a&gt;using TXT+VT-d technology).&lt;br /&gt;&lt;br /&gt;However, just because the NSA can theoretically replace your CPU with a malicious one, doesn’t mean TPM-based solutions are useless. As for the great majority of other people that do not happen to be on the Terrorist Top 10, these represent a reasonable solution that could prevent Evil Maid attacks, and, when combined with a proper two-factor authentication, 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.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. The Poor Man’s Solution&lt;/span&gt;&lt;br /&gt;Personally I would love to see TrueCrypt implementing TPM-based trusted boot for its loader, but, well, what can I do? Keep bothering TrueCrypt developers with Evil Maid attacks and hope they will eventually consider implementing TPM support...&lt;br /&gt;&lt;br /&gt;So, in the 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 the stick (of course everything is encrypted with a custom laptop-specific passphrase). We use this stick to verify the unencrypted portions of our laptops (typically the first 63 sectors of sda, and also the whole /boot partition in case of Linux-based laptops where we use LUKS/dm-crypt).&lt;br /&gt;&lt;br /&gt;Of course there 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 the disk of my laptop would be “evilmaided”...&lt;br /&gt;&lt;br /&gt;Another problem with Disk Hasher solution is that it only looks at the disk, but cannot validate e.g. the BIOS. So if the attacker found a way to bypass the BIOS reflashing protection on my laptop, then he or she can install a rootkit there that would sniff my passphrase or the decryption key (in case I used one time passwords).&lt;br /&gt;&lt;br /&gt;Nevertheless, 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 the most we can do, if we want to use TrueCrypt, PGP WDE, or LUKS/dm-crypt.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;FAQ&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Q: Is this Evil Maid Attack some l33t new h4ck?&lt;/span&gt;&lt;br /&gt;Nope, the concept behind the Evil Maid Attack is neither new, nor l33t in any way.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Q: So, why did you write it?&lt;/span&gt;&lt;br /&gt;Because we believe it demonstrates an important problem, and we would like more attention to be paid in the industry to solving it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Q: I’m using two-factor authentication, am I protected against EM?&lt;/span&gt;&lt;br /&gt;While a two-factor authentication or one time passwords are generally a good idea (e.g. they can prevent various keylogger attacks), they alone do not provide protection from Evil Maid-like attacks, because the attacker might modify his or her sniffer to look for the final decryption key (that would be calculated after the 2-factor authentication completes).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Q: How is Evil Maid different from Stoned-Bootkit?&lt;/span&gt;&lt;br /&gt;The &lt;a href="http://www.stoned-vienna.com/"&gt;Stoned Bootkit&lt;/a&gt;, 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, the biggest difference between Stoned Bootkit and Evil Maid USB is that in case of our attack you don’t need to start the 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 the minimal Linux to start, and then press ‘E’, wait some 2 more seconds, and you’re done. With the Stoned Bootkit, according to the author’s description, you need to get admin access to the target OS in order to install it, so you either need to know the Windows admin password first, or use some exploit to get the installer executing on the target OS. Alternatively, you can install it from a bootable Windows CD, but this, according to the author, works only against unencrypted volumes, so no use in case of TrueCrypt compromise.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Q: I've disabled boot from USB in BIOS and my BIOS is password protected, am I protected against EM?&lt;/span&gt;&lt;br /&gt;No. Taking out your HDD, hooking it up to a USB enclosure case and later installing it back to your laptop increases the attack time by some 5-15 minutes at most. A maid has to carry her own laptop to do this though.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Q: What about using a HDD with built-in hardware-based encryption?&lt;/span&gt;&lt;br /&gt;We haven’t tested such encryption systems, so we don’t know. There are many open questions here: how is the passphrase obtained from the user? Using software stored on the disk or in the BIOS? If on the 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 the attacker can &lt;a href="http://invisiblethingslab.com/resources/bh09usa/Attacking%20Intel%20BIOS.pdf"&gt;reflash the BIOS&lt;/a&gt;, then he or she can install a passphrase sniffer there in the BIOS. Of course that would make the attack non-trivial and much more expensive than the original Evil Maid USB we presented here.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Q: Which TrueCrypt versions are supported by the current Evil Maid USB?&lt;/span&gt;&lt;br /&gt;We have tested our Evil Maid USB against TrueCrypt versions 6.0a - 6.2a (the latest version currently available). Of course, if the “shape” of the TrueCrypt loader changed dramatically in the future, then Evil Maid USB would require updating.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Q: Why did you choose TrueCrypt and not some other product?&lt;/span&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Q: Why there is no TPM support in TrueCrypt?&lt;/span&gt;&lt;br /&gt;The TrueCrypt Foundation published official generalized response to TPM-related feature requests &lt;a href="http://www.truecrypt.org/faq#tpm"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Acknowledgments&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;Thanks to the ennead@truecrypt.org for all the polemics we had which allowed me to better gather my thoughts on the topic. The same thanks to Alex and Rafal, for all the polemics I have had with them (it's customary for ITL to spend a lot of time finding bugs in each other's reasoning).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24586388-1384385046456881063?l=theinvisiblethings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theinvisiblethings.blogspot.com/feeds/1384385046456881063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24586388&amp;postID=1384385046456881063' title='55 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/1384385046456881063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/1384385046456881063'/><link rel='alternate' type='text/html' href='http://theinvisiblethings.blogspot.com/2009/10/evil-maid-goes-after-truecrypt.html' title='Evil Maid goes after TrueCrypt!'/><author><name>joanna</name><uri>http://www.blogger.com/profile/07657268181166351141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07162675826515680775'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Ti3q3Hdvels/Stdj6EwsmvI/AAAAAAAAAFg/eVbBLzSlq-E/s72-c/evil+maid.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>55</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24586388.post-7770784580268995591</id><published>2009-09-22T16:55:00.005+02:00</published><updated>2009-10-15T22:02:03.973+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='philosophical'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='conferences'/><title type='text'>Intel Security Summit: the slides</title><content type='html'>Last week I was invited to Hillsboro to speak at the 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 the recent research our team has done over the last 12 months or so, and explain why we're so keen on hacking the low-level system components, while all the rest of the world is excited about browser and flash player bugs.&lt;br /&gt;&lt;br /&gt;The slides (converted to PDF) can be found &lt;a href="http://invisiblethingslab.com/resources/misc09/Quest%20To%20The%20Core%20(public).pdf"&gt;here&lt;/a&gt;. As you will see, I decided to remove most of the slides from the "Future" chapter. One reason for that was that we didn't want to hint &lt;strike&gt;Loic&lt;/strike&gt; our competition as to some of our new toys we're working on;) The other reason was that, I think, the value of presenting only thoughts about attacks, i.e. &lt;i&gt;unproven&lt;/i&gt; thoughts, or, should I even say, &lt;i&gt;feelings&lt;/i&gt; about future attacks, has little research value, and while I can understand such information being important to Intel, I don't see how others could benefit from them.&lt;br /&gt;&lt;br /&gt;I must say it was nice and interesting to meet in person with various Intel architects, i.e. the people that actually design and create our basic "universe" we all operate in. You can always change the OS (or even write your own!), but still you must stick to the rules, or "laws", of the platform (unless you can break them ;)&lt;br /&gt;&lt;br /&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 212px;" src="http://4.bp.blogspot.com/_Ti3q3Hdvels/SrjsKTA0I0I/AAAAAAAAAFY/530BI2suM5Y/s320/Fotolia_6441375_XS.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5384313016167965506" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24586388-7770784580268995591?l=theinvisiblethings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theinvisiblethings.blogspot.com/feeds/7770784580268995591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24586388&amp;postID=7770784580268995591' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/7770784580268995591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/7770784580268995591'/><link rel='alternate' type='text/html' href='http://theinvisiblethings.blogspot.com/2009/09/intel-security-summit-slides.html' title='Intel Security Summit: the slides'/><author><name>joanna</name><uri>http://www.blogger.com/profile/07657268181166351141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07162675826515680775'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Ti3q3Hdvels/SrjsKTA0I0I/AAAAAAAAAFY/530BI2suM5Y/s72-c/Fotolia_6441375_XS.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24586388.post-8958558851864832778</id><published>2009-09-02T16:19:00.004+02:00</published><updated>2009-10-15T22:00:21.812+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='fighting for a better world'/><title type='text'>About Apple’s Security Foundations, Or Lack Of Thereof...</title><content type='html'>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 the world where our systems are totally &lt;a href="http://theinvisiblethings.blogspot.com/2007/01/towards-verifiable-operating-systems.html"&gt;unverifiable&lt;/a&gt;. 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 :)&lt;br /&gt;&lt;br /&gt;So, every time I (re)install a Mac-based system, I end up cursing horribly at Apple’s architects. Why? Because in the Apple World they seem to totally ignore the concept of files integrity, to such extent that it’s virtually impossible to get any assurance that the programs I install are in any way authentic (i.e. not tampered by some 3rd party, e.g. by somebody controlling my Internet connection).&lt;br /&gt;&lt;br /&gt;Take any Apple installer package, e.g. &lt;a href="http://www.mozillamessaging.com/en-US/thunderbird/download/?product=thunderbird-2.0.0.23&amp;os=osx&amp;lang=en-US"&gt;Thunderbird&lt;/a&gt;. 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, the 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 the original file the vendor really published. And you’re just about to grant admin privileges to the installer program that is inside this file -- after all it’s an installer, so must got root privileges, right (well, &lt;a href="http://theinvisiblethings.blogspot.com/2007/02/running-vista-every-day.html"&gt;not quite maybe&lt;/a&gt;)? Beautiful...&lt;br /&gt;&lt;br /&gt;Interestingly, this very same Thunderbird installer, but for Windows, is correctly signed, and Windows, correctly, displays that information (together with the ability to examine the certificate) and allows the user to make a choice of whether to allow it to run or not.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Ti3q3Hdvels/Sp5_8M68juI/AAAAAAAAAFQ/-_lxhA_Yg6o/s1600-h/thunderbird+installer+on+vista.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 245px;" src="http://1.bp.blogspot.com/_Ti3q3Hdvels/Sp5_8M68juI/AAAAAAAAAFQ/-_lxhA_Yg6o/s320/thunderbird+installer+on+vista.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5376875677364293346" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Sure, the certificate doesn’t guarantee that Mozilla didn’t put a nasty backdoor in there, nor that the file was not compromised due to Mozilla’s internal server compromise. Or that the certificate (the private key) wasn’t somehow stolen from Mozilla, or that the issuing authority didn’t make a mistake and maybe issued this certificate to some random guy, who just happened to be named Mozilla.&lt;br /&gt;&lt;br /&gt;But the certificate provides liability. If it indeed turns out that this very Thunderbird installer was somehow malicious, I could take this signed file to the court and sue either Mozilla, or the certification authority for all the damages it might have done to me. Without the certificate I cannot do that, because I (and nobody) cannot know if the file was tampered while being downloaded (e.g. malicious ISP) or maybe because my system was already compromised.&lt;br /&gt;&lt;br /&gt;But in case of Apple, we have no such choice -- we need to take the risk every time we download a program from the Internet. We must bet the security of our whole system, that at this very moment nobody is tampering with out (unsecured) HTTP connection, and also that nobody compromised the vendor’s Web Server, and, of course, we hope that the vendor didn’t put any malicious code into its product (as we could not sue them for it).&lt;br /&gt;&lt;br /&gt;So that sucks. That sucks terribly! Without ability to check the integrity of programs we want to install, we cannot build any solid foundations. It’s funny how people divagate whether Apple implemented ASLR correctly in Snow Leopard, or not? Or whether NX is bypassable. It’s meaningless to dive into such advanced topics, if we cannot even assure that at the day 0 our system is clean. We need to start building our systems from the ground up, and not starting from the roof! Ability to assure the 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 other mechanisms, like e.g. mentioned above ASLR and NX).&lt;br /&gt;&lt;br /&gt;And Apple should not blame the 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 the Windows versions of the same products, and that most of them do have signed installers (gee, even open-source TrueCrypt, has a signed installer for Windows!).&lt;br /&gt;&lt;br /&gt;One should say that a few vendors, seeing this problem on Mac, do publish PGP signatures for their installation files. This includes e.g. PGP Desktop for Mac, KeePassX, TrueCrypt for Mac, and a few others. But these 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 the vendor keys many months before, keep it in your ring, to minimize possibility that somebody alters both the installer files and the keys you download). Some other vendors offer pseudo-integrity by displaying MD5/SHA1 sums on their websites. That would make some sense only if the website on which the hashes are displayed was itself SSL-protected (still the file signature is a &lt;a href="http://theinvisiblethings.blogspot.com/2009/08/pdf-signing-and-beyond.html"&gt;better option&lt;/a&gt;), as otherwise we can be sure that the attacker that is tampering with the installer file, will also take care about adjusting the hash on the website... But of course this never is the case -- have a look e.g. at the VMWare download page for the Mac Fusion (one need to &lt;a href="http://www.vmware.com/download/fusion/"&gt;register first&lt;/a&gt;). Very smart, VMWare! (Needles to say, the VMWare Workstation installer for Windows is properly signed).&lt;br /&gt;&lt;br /&gt;BTW, anybody checked if the Apple updates are digitally signed somehow?&lt;br /&gt;&lt;br /&gt;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 their OS. Because I really like Apple products for their aesthetics...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24586388-8958558851864832778?l=theinvisiblethings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theinvisiblethings.blogspot.com/feeds/8958558851864832778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24586388&amp;postID=8958558851864832778' title='23 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/8958558851864832778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/8958558851864832778'/><link rel='alternate' type='text/html' href='http://theinvisiblethings.blogspot.com/2009/09/about-apples-security-foundations-or.html' title='About Apple’s Security Foundations, Or Lack Of Thereof...'/><author><name>joanna</name><uri>http://www.blogger.com/profile/07657268181166351141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07162675826515680775'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Ti3q3Hdvels/Sp5_8M68juI/AAAAAAAAAFQ/-_lxhA_Yg6o/s72-c/thunderbird+installer+on+vista.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>23</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24586388.post-3613638502091357780</id><published>2009-08-26T21:48:00.004+02:00</published><updated>2009-10-15T21:59:53.837+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='philosophical'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='fighting for a better world'/><title type='text'>PDF signing and beyond</title><content type='html'>Today I got an advertising email from GlobalSign (where I previously bought a code signing certificate for Vista kernel drivers some years ago) highlighting their new (?) type of certificates for &lt;a href="http://www.adobe.com/security/partners_cds.html"&gt;signing of Adobe PDF files&lt;/a&gt;. 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 &lt;a href="http://www.adobe.com/security/partners_cds.html"&gt;Adobe Certified Documents Services&lt;/a&gt; (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 other popular certification authorities like e.g. Entrust and Verisign, and a couple of others.&lt;br /&gt;&lt;br /&gt;So, I immediately felt stupid that I haven't been aware of such a great feature, which apparently is out there for a few years now. Why I thought it was so great a feature? Consider the following scenario…&lt;br /&gt;&lt;br /&gt;At our &lt;a href="http://invisiblethingslab.com/itl/Resources.html"&gt;Invisible Things Lab resources page&lt;/a&gt; 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 the PDF you actually get has not been infected somewhere in the middle, e.g. by a guy in the lobby that is messing with the hotel WiFi.&lt;br /&gt;&lt;br /&gt;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 the problem — I, as zillions of other small businesses and individuals, host my website on some 5-dollar-a-month one-of-the-thousands hosting provider. I have zero knowledge about what people work there and if they can be trusted, and I also know nothing (and have zero impact) on how secure (or not, for that matter) the server is. (Same applies to my cell phone carrier, ISP, etc, BTW). &lt;br /&gt;&lt;br /&gt;Now, the SSL certificate for the website "knows" nothing about how the files on my website should look like, in particular if they are compromised or not. All the SSL certificate does is to give assurance to the remote client that he or she downloaded the actual files that were on the server in the moment of downloading — whether they were the original ones authored by me, or perhaps maliciously modified by somebody who got access to the server.&lt;br /&gt;&lt;br /&gt;So, the 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 the website is maintained mainly for other researchers and students, who can easily download our papers and code from there, and also for the reporters so they can e.g. download a press release from there.&lt;br /&gt;&lt;br /&gt;Surprisingly, the 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 the hosting provider?). But I cannot know for sure, as I don't constantly monitor all the hashes of all the files, as this would require… well a dedicated server that would be running an SHA1 calculating script in a loop for 24/7 :)&lt;br /&gt;&lt;br /&gt;Of course, zillions of other websites works this very same way and present the very same problems.&lt;br /&gt;&lt;br /&gt;Now, ability to sign PDFs would be just a great solution here, because I could sign all those files with my certificate, and then all the people downloading stuff from ITL could know they are getting original PDFs that were created on one of the ITL members desktop computers, no matter how compromised the web server or the network connection is.&lt;br /&gt;&lt;br /&gt;For the same reasons, I would welcome if others started doing the same, as currently I simply must assume every PDF I download from the net (and PDFs account for the majority of file downloads I do) to be potentially malicious. So, I always open them in &lt;a href="http://www.tomshardware.com/reviews/joanna-rutkowska-rootkit,2356-6.html"&gt;my Red or Yellow VM&lt;/a&gt; (depending on the source of the 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). &lt;br /&gt;&lt;br /&gt;(Yes, I know, Kostya Kortchinsky, or Rafal, can sometimes escape from VMWare, but still I believe that today the 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).&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;First disappointment comes from the fact that you must create a PDF using Adobe Acrobat software (not the Reader, but the commercial one). I've created all my PDFs using either Office (in the past) or iWork (today), and none of them seem to offer a way to digitally sign the 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, the Mac native PDF viewer (Preview) doesn't seem to recognize the digital signature, and I bet some Linux PDF viewers do not as well.&lt;br /&gt;&lt;br /&gt;Worst of all, even the Acrobat Reader 9, that I tested under Windows, and that correctly displayed all the CDS information, does one unbelievably stupid thing — it parses and renders the whole PDF before displaying the signature info. So, if you downloaded a malicious PDF, Acrobat Reader will happily open it and parse, without asking you a question of whether 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 the reader, it surely would get executed. Compare this with the (correct) behavior of Vista UAC where it presents the executable signature details before executing it.&lt;br /&gt;&lt;br /&gt;You can see how your software works with Adobe PDF signatures, e.g. by looking at &lt;a href="http://www.globalsign.com/resources/CDS_Consumer_Guide.pdf"&gt;this exemplary file&lt;/a&gt; signed by GlobalSign.&lt;br /&gt;&lt;br /&gt;So, Adobe CDS, in the form they are today, seem to be pretty useless, as far as protection from potentially malicious PDFs is considered (they surely have other positive applications, e.g. to certify about authenticity of e.g. a diploma).&lt;br /&gt;&lt;br /&gt;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 whether we want to allow an application to to open the file or not? Perhaps, in some situations, we could even define policies for specific applications. This seems easy to do from the technical point of view — we just need to "hook" (oh, God, did I say "hook"?) high-level OS API's like e.g. &lt;code&gt;open()&lt;/code&gt; or &lt;code&gt;CreateFile()&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;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 — the concept of Web of Trust might be good for some closed groups of people, but not for publishing files "to the world". And, of course, the first thing that an attacker who subverted PDFs on our website will do is to also subvert the PGP key displayed on the 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 the key servers today use SSL? If not, how the trust is established? Maybe email clients, e.g. Thunderbird, come with built in PGP keys for select key servers?&lt;br /&gt;&lt;br /&gt;So, I guess that was the 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 :)&lt;br /&gt;&lt;br /&gt;Ah, before a dozen of people jumps to the 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 the signatures provide is the liability, so that I know who to sue, in case my naked holiday pictures got leaked to the public because of some malicious PDF exploiting my system. In that case I can sue either the actual person who signed the PDF (if this person is identifiable) or the certification authority who issued the certificate to a wrong (unidentifiable) person.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24586388-3613638502091357780?l=theinvisiblethings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theinvisiblethings.blogspot.com/feeds/3613638502091357780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24586388&amp;postID=3613638502091357780' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/3613638502091357780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/3613638502091357780'/><link rel='alternate' type='text/html' href='http://theinvisiblethings.blogspot.com/2009/08/pdf-signing-and-beyond.html' title='PDF signing and beyond'/><author><name>joanna</name><uri>http://www.blogger.com/profile/07657268181166351141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07162675826515680775'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24586388.post-3052797530568154320</id><published>2009-08-25T11:59:00.007+02:00</published><updated>2009-10-15T22:00:04.114+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rootkits'/><category scheme='http://www.blogger.com/atom/ns#' term='chipset'/><category scheme='http://www.blogger.com/atom/ns#' term='exploit'/><title type='text'>Vegas Toys (Part I): The Ring -3 Tools</title><content type='html'>We've just published the proof of concept code for the Alex's and Rafal's "Ring -3 Rootkits" talk, presented last month at the Black Hat conference in Vegas. You can download the code from our website &lt;a href="http://invisiblethingslab.com/resources/bh09usa/ring-minus-3-tools-1.3.tgz"&gt;here&lt;/a&gt;. It's highly recommended that one (re)reads the &lt;a href="http://invisiblethingslab.com/resources/bh09usa/Ring%20-3%20Rootkits.pdf"&gt;slides &lt;/a&gt;before playing with the code.&lt;br /&gt;&lt;br /&gt;In short, the code demonstrates injection of an arbitrary ARC4 code into a vPro-compatible chipset AMT/ME memory using the chipset memory reclaiming attack. Check the README and the slides for more information.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Ti3q3Hdvels/SpO6Tov88rI/AAAAAAAAAFI/0RkGsL5rM28/s1600-h/Ring+-3+Rootkit+White+Diagram.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_Ti3q3Hdvels/SpO6Tov88rI/AAAAAAAAAFI/0RkGsL5rM28/s400/Ring+-3+Rootkit+White+Diagram.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5373843626901959346" /&gt;&lt;/a&gt;&lt;br /&gt;The actual ARC4 code we distribute here is very simple: it sets a DMA write transaction to the host memory every ca. 15 seconds in order to write the "ITL" string at the predefined physical addresses (increased by 4 with every iteration). Of course one can do DMA read as well.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Ti3q3Hdvels/SpO3SVS9H-I/AAAAAAAAAE4/V5LXdY1PAxQ/s1600-h/ring-minus-3-tools.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 294px;" src="http://4.bp.blogspot.com/_Ti3q3Hdvels/SpO3SVS9H-I/AAAAAAAAAE4/V5LXdY1PAxQ/s400/ring-minus-3-tools.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5373840305965309922" /&gt;&lt;/a&gt;&lt;br /&gt;The ability to do DMA from the ARC4 code to/from the 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 the only limit here.&lt;br /&gt;&lt;br /&gt;The OS, nor any software running on the host OS, cannot access our rootkit code, unless, of course, it used the same remapping attack we used to insert our code there :) But the rootkit might even cut off this way by locking down the remapping registers, so fixing the vulnerability on the 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;)&lt;br /&gt;&lt;br /&gt;An OS might attempt to protect itself from DMA accesses from the rootkit in the 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 the Xen hypervisor memory. We can, however, access all the other parts of the system which includes all the domains memory (i.e. where all the 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 the AMT code (and the AMT rootkit) could not access any useful information in any of the domains. This, in fact, would be a good idea anyway, as it would also prevent any sort of &lt;a href="http://theinvisiblethings.blogspot.com/2009/03/trusting-hardware.html"&gt;hardware-based backdoors&lt;/a&gt; (except for the backdoors in the CPU).&lt;br /&gt;&lt;br /&gt;An AMT rootkit can, however, get around such a savvy OS because it can modify the OS's VT-d initialization code before it sets the VT-d protections. Alternatively, if the protections are set before the rootkit was activated, the rootkit can force the system to reboot and boot it from the 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 the OS/VMM to-be-loaded image, so that it doesn't setup VT-d properly.&lt;br /&gt;&lt;br /&gt;Of course, the proper solution against such an attack would be to use e.g. Intel TXT to assure trusted boot of the system. In theory this should work. In practice, as you might recall, we have already shown &lt;a href="http://theinvisiblethings.blogspot.com/2009/02/attacking-intel-txt-paper-and-slides.html"&gt;how to bypass Intel TXT&lt;/a&gt;. This TXT bypass attack still works on most (all?) hardware, as there is still no STM available in the wild (all that is needed for the attack is to have a working SMM attack, and last month we showed 2 such attacks — see the slides for the BIOS talk).&lt;br /&gt;&lt;br /&gt;Intel has released a &lt;a href="http://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00018&amp;languageid=en-fr&amp;cid=rss-172465-c1-236761"&gt;patch &lt;/a&gt;a day before our presentation at Black Hat. This is a cumulative patch that is also targeting a few other, unrelated, problems, like e.g. the SMM caching attack (also reported by Loic), the SMM nvacpi attack, and the Q45 BIOS reflashing attack (for which the code will be also published shortly).&lt;br /&gt;&lt;br /&gt;Some of you might remember that Intel has patched this very remapping bug last year, after our Xen 0wning Trilogy presentations, where we used the 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 the 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 the old remapping bug, this time to get access to the 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.&lt;br /&gt;&lt;br /&gt;We could get into the AMT memory on Q35, however, even if the downgrade attack was not possible. In that case we could use our BIOS reflashing exploit (the other Black Hat presentation).&lt;br /&gt;&lt;br /&gt;However, this situation looks differently on Intel latest Q45 chipsets (that also have AMT). As explained in the presentation, we were unable to get access to the AMT memory on those chipsets, even though we can reflash the BIOS there, and consequently, even though we can get rid of all the chipset locks (e.g. the remapping locks). Still, the remapping doesn't seem to work for this one memory range, where the AMT code resides. &lt;br /&gt;&lt;br /&gt;This suggest Intel added some additional hardware to the Q45 chipset (and other Series 4 chipsets) to prevent this very type of attacks. But we're not giving up on Q45 yet, and we will be trying other attacks, as soon as we recover from the holiday laziness ;)&lt;br /&gt;&lt;br /&gt;Finally, the nice picture of the Q35 chipset (MCH), where our rootkit lives :) The ARC4 processor is somewhere inside...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Ti3q3Hdvels/SpO5ZKYGogI/AAAAAAAAAFA/2IhQkwwOtRw/s1600-h/WBChipset.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 254px;" src="http://4.bp.blogspot.com/_Ti3q3Hdvels/SpO5ZKYGogI/AAAAAAAAAFA/2IhQkwwOtRw/s320/WBChipset.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5373842622316454402" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24586388-3052797530568154320?l=theinvisiblethings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theinvisiblethings.blogspot.com/feeds/3052797530568154320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24586388&amp;postID=3052797530568154320' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/3052797530568154320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/3052797530568154320'/><link rel='alternate' type='text/html' href='http://theinvisiblethings.blogspot.com/2009/08/vegas-toys-part-i-ring-3-tools.html' title='Vegas Toys (Part I): The Ring -3 Tools'/><author><name>joanna</name><uri>http://www.blogger.com/profile/07657268181166351141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07162675826515680775'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Ti3q3Hdvels/SpO6Tov88rI/AAAAAAAAAFI/0RkGsL5rM28/s72-c/Ring+-3+Rootkit+White+Diagram.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24586388.post-9064869513973571664</id><published>2009-07-30T23:18:00.006+02:00</published><updated>2009-08-25T11:59:22.095+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chipset'/><category scheme='http://www.blogger.com/atom/ns#' term='BIOS'/><category scheme='http://www.blogger.com/atom/ns#' term='attack'/><category scheme='http://www.blogger.com/atom/ns#' term='smm'/><category scheme='http://www.blogger.com/atom/ns#' term='exploit'/><title type='text'>Black Hat 2009 Slides</title><content type='html'>The wait is over. The slides are &lt;a href="http://invisiblethingslab.com/itl/Resources.html"&gt;here&lt;/a&gt;. The press release is &lt;a href="http://invisiblethingslab.com/press/itl-press-2009-03.pdf"&gt;here&lt;/a&gt;. Unless you're a chipset/BIOS engineer kind of person, I strongly recommend reading the press release first, before opening the slides.&lt;br /&gt;&lt;br /&gt;So, the "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 otherwise allows only Intel-signed updates to be flashed.&lt;br /&gt;&lt;br /&gt;We will publish the code some time after get back from Vegas.&lt;br /&gt;&lt;br /&gt;Enjoy.&lt;br /&gt;&lt;br /&gt;ps. Let me remind my dear readers that all the files hosted on the ITL website are not digitally signed and are served over a plaintext connection (HTTP). In addition, the ITL's website is hosted on a 3rd party provider's server, on which we have totally no control (which is the reason why we don't buy an SSL certificate for the website). Never trust unsigned files that you download from the Internet. ITL cannot be liable for any damages caused by the files downloaded from our website, unless they are digitally signed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24586388-9064869513973571664?l=theinvisiblethings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theinvisiblethings.blogspot.com/feeds/9064869513973571664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24586388&amp;postID=9064869513973571664' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/9064869513973571664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/9064869513973571664'/><link rel='alternate' type='text/html' href='http://theinvisiblethings.blogspot.com/2009/07/black-hat-2009-slides.html' title='Black Hat 2009 Slides'/><author><name>joanna</name><uri>http://www.blogger.com/profile/07657268181166351141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07162675826515680775'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24586388.post-4456369931211035223</id><published>2009-07-17T00:12:00.004+02:00</published><updated>2009-08-25T11:59:13.263+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'>Interview</title><content type='html'>Alan Dang from Tom's Hardware did an &lt;a href="http://www.tomshardware.com/reviews/joanna-rutkowska-rootkit,2356.html#xtor=RSS-182"&gt;interview&lt;/a&gt; with me. I talk there 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 the readers of this blog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24586388-4456369931211035223?l=theinvisiblethings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theinvisiblethings.blogspot.com/feeds/4456369931211035223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24586388&amp;postID=4456369931211035223' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/4456369931211035223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/4456369931211035223'/><link rel='alternate' type='text/html' href='http://theinvisiblethings.blogspot.com/2009/07/interview.html' title='Interview'/><author><name>joanna</name><uri>http://www.blogger.com/profile/07657268181166351141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07162675826515680775'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24586388.post-7377753647053577701</id><published>2009-06-12T14:08:00.003+02:00</published><updated>2009-08-25T11:59:02.603+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xen hacking'/><category scheme='http://www.blogger.com/atom/ns#' term='company news'/><title type='text'>Virtualization (In)Security Training in Vegas</title><content type='html'>VM escapes, hypervisor compromises (via "classic" rootkits, as well as Bluepill-like rootkits), hypervisor protection strategies, SMM attacks, TXT bypassing, and more — these are some of the topics that will be covered by our brand new training on Virtualization (In)Security at the upcoming Black Hat USA.&lt;br /&gt;&lt;br /&gt;The training offers quite a unique chance, I think, to absorb the results of 1+ year of the research done by our team within... just 2 days. This will be provided via detailed lectures and unique hands-on exercises.&lt;br /&gt;&lt;br /&gt;Unlike our previous training on stealth malware (that will also &lt;a href="http://blackhat.com/html/bh-usa-09/train-bh-usa-09-jrk-at.html"&gt;be offered&lt;/a&gt; this year, BTW), this time we will offer attendees a bit of hope :) We will be stressing that some of the 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 nevertheless we will be stressing that this is the proper way to go in the long run.&lt;br /&gt;&lt;br /&gt;Interestingly, I'm not aware of any similar training of this kind, that would be covering the security issues related to virtualization systems and bare metal hypervisors. Hope we will not get into troubles with the Antitrust Commission for monopolizing this field ;)&lt;br /&gt;&lt;br /&gt;The training brochure (something for your boss) is &lt;a href="http://invisiblethingslab.com/resources/training_virtsec/VirtSecTraining-Overview.pdf"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The detailed agenda spanning 2 full days can be downloaded &lt;a href="http://invisiblethingslab.com/resources/training_virtsec/VirtSecTraining-Agenda-0.9.pdf"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The Black Hat signup page is &lt;a href="http://www.blackhat.com/html/bh-usa-09/train-bh-usa-09-jrk-virt.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_Ti3q3Hdvels/SjJF-ePDEUI/AAAAAAAAAEo/5ealWjYcCn4/s320/neurons.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5346412647212585282" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24586388-7377753647053577701?l=theinvisiblethings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theinvisiblethings.blogspot.com/feeds/7377753647053577701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24586388&amp;postID=7377753647053577701' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/7377753647053577701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/7377753647053577701'/><link rel='alternate' type='text/html' href='http://theinvisiblethings.blogspot.com/2009/06/virtualization-insecurity-training-in.html' title='Virtualization (In)Security Training in Vegas'/><author><name>joanna</name><uri>http://www.blogger.com/profile/07657268181166351141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07162675826515680775'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Ti3q3Hdvels/SjJF-ePDEUI/AAAAAAAAAEo/5ealWjYcCn4/s72-c/neurons.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24586388.post-360542347844086177</id><published>2009-06-09T15:10:00.004+02:00</published><updated>2009-08-25T11:58:49.731+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='company news'/><category scheme='http://www.blogger.com/atom/ns#' term='attack'/><title type='text'>Quest to The Core</title><content type='html'>If you think SMM rootkits or PCI backdoors is low-level, then you should certainly see our talks in Vegas — ITL is going to define what does the "low-level" adjective really mean at the end of the decade ;)&lt;br /&gt;&lt;br /&gt;In case you haven't noticed it at the &lt;a href="http://blackhat.com/html/bh-usa-09/bh-usa-09-schedule.html"&gt;Black Hat website&lt;/a&gt; yet — Alex and Rafal will be giving two presentations in Vegas:&lt;br /&gt;&lt;br /&gt;1) Introducing Ring -3 Rootkits (&lt;a href="http://blackhat.com/html/bh-usa-09/bh-usa-09-speakers.html#Tereshkin"&gt;description&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;2) Attacking Intel® BIOS (&lt;a href="http://blackhat.com/html/bh-usa-09/bh-usa-09-speakers.html#Wojtczuk"&gt;description&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Let me stress that we have been in touch with Intel for quite some time about the above attacks, and that Intel is planning to release appropriate fixes a few weeks before our presentations at Black Hat.&lt;br /&gt;&lt;br /&gt;There is more than just this coming at this year's Black Hat — most notably we will also be debuting with our &lt;a href="http://blackhat.com/html/bh-usa-09/train-bh-usa-09-jrk-virt.html"&gt;Virtualization (In)Security Training&lt;/a&gt;. I will write a separate post about this training (containing a detailed agenda) in the coming days, so stay tuned.&lt;br /&gt;&lt;br /&gt;Quite exciting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24586388-360542347844086177?l=theinvisiblethings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theinvisiblethings.blogspot.com/feeds/360542347844086177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24586388&amp;postID=360542347844086177' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/360542347844086177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/360542347844086177'/><link rel='alternate' type='text/html' href='http://theinvisiblethings.blogspot.com/2009/06/quest-to-core.html' title='Quest to The Core'/><author><name>joanna</name><uri>http://www.blogger.com/profile/07657268181166351141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07162675826515680775'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24586388.post-2058775943106512545</id><published>2009-06-02T00:16:00.003+02:00</published><updated>2009-08-25T11:58:39.136+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='philosophical'/><category scheme='http://www.blogger.com/atom/ns#' term='backdoors'/><title type='text'>More Thoughts on CPU backdoors</title><content type='html'>I've recently exchanged a few emails with Loic Duflot about CPU-based backdoors. It turned out that he recently wrote a paper about hypothetical 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 &lt;a href="http://www.springerlink.com/content/jp07870p24560678/"&gt;here&lt;/a&gt;. (Loic is an academic, and so he must follow some of the strange customs in the academic world, one of them being that papers are not freely published, but rather being sold on a publisher website… Heck, even we, the ultimately commercialized researchers, still publish our papers and code for free).&lt;br /&gt;&lt;br /&gt;Let me stress that what Loic writes about in the paper are only hypothetical 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 then he simulate this process by using QEMU and implementing those backdoors inside QEMU.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;The backdoors Loic considers are somewhat similar in principle to the simple pseudo-code one-liner backdoor I used in &lt;a href="http://theinvisiblethings.blogspot.com/2009/03/trusting-hardware.html"&gt;my previous post&lt;/a&gt; about hardware backdoors, only more complicated in the actual implementation, as he took care about a few important details, that I naturally didn't concern. (BTW, the 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).&lt;br /&gt;&lt;br /&gt;Some people believe that processor backdoors do not exist in reality, because if they did, the competing CPU makers would be able to find them in each others' products, and later would likely cause a "leak" to the public about such backdoors (think: Black PR). Here people make an assumption that AMD or Intel is technically capable of reversing each others processors, which seems to be a natural consequence of them being able to produce them.&lt;br /&gt;&lt;br /&gt;I don't think I fully agree with such an assumption though. Just the fact that you are capable of designing and producing a CPU, doesn't mean you can also reverse engineer it. Just the fact that Adobe can write a few hundred megabyte application, doesn't mean they 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 the electronic elements from the processor, there is still a problem of interpreting of how all those hundreds of millions of transistors actually work. &lt;br /&gt;&lt;br /&gt;Anyway, a few more thoughts about properties of a hypothetical backdoors that Intel or AMD might use (be using).&lt;br /&gt;&lt;br /&gt;First, I think that in such a backdoor scenario everything besides the "trigger" would be encrypted. The trigger is something that you must execute first, in order to activate the backdoor (e.g. the CMP instruction with particular, i.e. magic, values of some registers, say EAX, EBX, ECX, EDX). Only then the backdoor gets activated and e.g. the processor auto-magically escalates into Ring 0. Loic considers this in more detail in his paper. So, my point is that all the attacker's code that executes afterwards, think of it as of a shellcode for the backdoor, that is specific for the OS, is fetched by the processor in an encrypted form and decrypted only internally inside the CPU. That should be trivial to implement, while at the same time should complicate any potential forensic analysis afterwards — it would be highly non-trivial to understand what the backdoor actually have done.&lt;br /&gt;&lt;br /&gt;Another 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 the network traffic, and also all the executables that ever got executed on the host, chances are that he or she would catch the triggering code and the shellcode (which might be encrypted, but still). So, no matter how subtle the 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).&lt;br /&gt;&lt;br /&gt;Eventually the curious admin will find out that strange CPU instruction (the trigger) after which all the strange things had happened. Now, if the admin was able to take this code and replicate it, post it to Daily Dave, then, assuming his message would pass through the Moderator (Hi Dave), he would effectively compromise the processor vendor's reputation.&lt;br /&gt;&lt;br /&gt;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:&lt;br /&gt;&lt;br /&gt;Magic = MAGIC (Date, IntelSecretKey).&lt;br /&gt;&lt;br /&gt;The obvious problem is how the processor can obtain current date? It would have to talk to the south-bridge at best, which is 1) nontrivial, and 2) observable on a bus, and 3) spoof'able.&lt;br /&gt;&lt;br /&gt;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 there when leaving the factory. Now, in order to trigger the backdoor, the processor vendor (or backdoor operator, think: NSA) would have to do the following:&lt;br /&gt;&lt;br /&gt;1) First execute some code that would read this unique value stored in eeprom for the particular target processor, and send this back to them,&lt;br /&gt;&lt;br /&gt;2) Now, they could generate the actual magic for the trigger:&lt;br /&gt;&lt;br /&gt;Magic = MAGIC (UniqeValueInEeprom, IntelSecretKey)&lt;br /&gt;&lt;br /&gt;3) ...and send the actual code to execute the backdoor and shellcode, with the correct trigger embedded, based on the magic value.&lt;br /&gt;&lt;br /&gt;Now, the point is that the processor will automatically increment the unique number stored in the eeprom, so the same backdoor-exploiting code would not work twice for the same processor (while at the same time it would be easy for NSA to send another exploit, as they know what the next value in the eeprom should be). Also, such a customized exploit would not work on any other CPU, as the assumption was that each CPU gets a different value at the factory, so again it would not be possible to replicate the attack and proved that the particular code has ever done something wrong.&lt;br /&gt;&lt;br /&gt;So, the moment I learn that processors have built-in eeprom memory, I will start thinking seriously there are backdoors out there :)&lt;br /&gt;&lt;br /&gt;One thing that bothers me with all those divagations about hypothetical backdoors in processors is that I find them pretty useless in at the end of the day. After all, by talking about those backdoors, and how they might be created, we do not make it any easier to protect against them, as there 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 the 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 they have already spent much more time thinking about it, and chances are they 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 :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24586388-2058775943106512545?l=theinvisiblethings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theinvisiblethings.blogspot.com/feeds/2058775943106512545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24586388&amp;postID=2058775943106512545' title='25 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/2058775943106512545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/2058775943106512545'/><link rel='alternate' type='text/html' href='http://theinvisiblethings.blogspot.com/2009/06/more-thoughts-on-cpu-backdoors.html' title='More Thoughts on CPU backdoors'/><author><name>joanna</name><uri>http://www.blogger.com/profile/07657268181166351141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07162675826515680775'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>25</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24586388.post-6453215149663280165</id><published>2009-05-28T00:58:00.004+02:00</published><updated>2009-08-01T19:36:41.267+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='trusted computing'/><category scheme='http://www.blogger.com/atom/ns#' term='philosophical'/><title type='text'>Thoughts About Trusted Computing</title><content type='html'>&lt;a href="http://invisiblethingslab.com/resources/misc09/trusted_computing_thoughts.pdf"&gt;Here&lt;/a&gt; are the slides about Trusted Computing I used for my presentations at the &lt;a href="http://eusecwest.com/agenda.html"&gt;EuSecWest&lt;/a&gt; today, and at the &lt;a href="http://2009.confidence.org.pl/agenda"&gt;Confidence&lt;/a&gt; conference last week.&lt;br /&gt;&lt;br /&gt;As this was supposed to be a keynote, the slides are much less technical then our other slides, and also there are no new attacks presented there. Still, I hope they might be useful as some sort of an "alternative" introduction to Trusted Computing :)&lt;br /&gt;&lt;br /&gt;A cool presentation I saw today was about &lt;a href="http://eusecwest.com/agenda.html"&gt;PCI-based backdoors&lt;/a&gt; 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 the state machine was to wait until its DMA engine gets initialized and then to modify certain bytes in the host memory, that happened to be part of the winlogon.exe process (IIRC they changed &lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;XOR AL, AL&lt;/span&gt;&lt;/span&gt; into &lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;MOV AL, 1&lt;/span&gt;&lt;/span&gt;, or something like that, at the end of some password verification function inside the winlogon.exe process). The slides should be available soon on the conference website. I also hope they will publish all the source code needed to flash your own personal "winlogon unlocker".&lt;br /&gt;&lt;br /&gt;The live demo was really impressive — they showed a winlogon screen, tried to login a few times with wrong passwords, of course all the attempts failed, then they inserted their magic, $300 worth, PC-card, and… 2 seconds later they could log in using any password they wanted.&lt;br /&gt;&lt;br /&gt;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 the technical details (FPGA-related), and also showed how to implement it with a cheap generic "reflashable" hardware without using a soldering iron.&lt;br /&gt;&lt;br /&gt;Of course I have also discussed in my presentation how to prevent PCI-based backdoors (like the 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, there 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 :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24586388-6453215149663280165?l=theinvisiblethings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theinvisiblethings.blogspot.com/feeds/6453215149663280165/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24586388&amp;postID=6453215149663280165' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/6453215149663280165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/6453215149663280165'/><link rel='alternate' type='text/html' href='http://theinvisiblethings.blogspot.com/2009/05/thoughts-about-trusted-computing.html' title='Thoughts About Trusted Computing'/><author><name>joanna</name><uri>http://www.blogger.com/profile/07657268181166351141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07162675826515680775'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24586388.post-2606319367477937236</id><published>2009-03-25T14:37:00.008+01:00</published><updated>2009-06-05T12:19:15.291+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='trusted computing'/><category scheme='http://www.blogger.com/atom/ns#' term='philosophical'/><category scheme='http://www.blogger.com/atom/ns#' term='backdoors'/><title type='text'>Trusting Hardware</title><content type='html'>So, you're a decent paranoid person, running only open source software on your box: Linux, GNU, etc. You have the 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 &lt;a href="http://www.openfirmware.info/"&gt;open source BIOS&lt;/a&gt;. You feel satisfied and cannot understand all those stupid people running closed source systems like e.g. Windows. Right?&lt;br /&gt;&lt;br /&gt;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…&lt;br /&gt;&lt;br /&gt;So, if we buy a laptop from vendor X, that might be based in some not-fully-democratic country, how do we know they didn't put backdoors there? And not only to spy on Americans, also to spy on their own citizens? When was the last time you reverse-engineered all the PCI devices on your motherboard?&lt;br /&gt;&lt;br /&gt;Scared? Good!&lt;br /&gt;&lt;br /&gt;Enters the game-changer: IOMMU (known as VT-d on Intel). With proper OS/VMM design,  this technology can address the very problem of most of the 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 the memory region occupied by its own driver.&lt;br /&gt;&lt;br /&gt;The network card's microcontroller can still compromise the network card driver, but nothing else. Assuming we are using only encrypted communication, there is not much an attacker can gain by compromising this network card driver, besides doing a DoS. Similarly for the disk driver — if we use full disk encryption (which is a good idea anyway), there is not much an attacker can gain from compromising the low-level disk driver.&lt;br /&gt;&lt;br /&gt;Obviously the 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.&lt;br /&gt;&lt;br /&gt;It seems than, that we could protect ourselves against potentially malicious hardware. With one exception however… we still need to trust the CPU and also the memory controller (AKA northbridge AKA chipset), that implements that IOMMU.&lt;br /&gt;&lt;br /&gt;On AMD systems, the memory controller has long been integrated into the processor. Also Intel's recent Nehalem processors integrate the memory controller on the same die.&lt;br /&gt;&lt;br /&gt;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 them? After all it would be trivial for Intel or AMD to build in a backdoor into their processor. Even something as simple as:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;if (rax == MAGIC_1 &amp;amp;&amp;amp; rcx == MAGIC_2) jmp [rbx]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Just a few more gates in the CPU I guess (there 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).&lt;br /&gt;&lt;br /&gt;And this is just the 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 the CPU vendor, it is trivial for you to build in an effective backdoor.&lt;br /&gt;&lt;br /&gt;It's funny how various people, e.g. European government institutions, are afraid of using closed source software, e.g. Windows, because they are afraid of Microsoft putting backdoors there. Yet, they are not concerned about using processors made by some other 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.&lt;br /&gt;&lt;br /&gt;So, I wonder whether various government and large corporate customers from outside the US will start asking Intel and AMD to provide them with the exact blueprints of their processors. After all they already require Microsoft to provide them with the source code under an NDA, right? So, why not the "source code" for the processor?&lt;br /&gt;&lt;br /&gt;Unfortunately there is nothing that could stop a processor vendor to provide its customers with a different blueprints than those that are used to actually "burn" the processors. So, the additional requirement would be needed that they also allow to audit their manufacturing process. Another solution would be to hire some group of independent researchers, equip them with an electron microscope and let them reverse engineer some randomly chosen processors… Hmmm, I even know a team that would love to do that ;)&lt;br /&gt;&lt;br /&gt;A quick summary in case you get lost already:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;On most systems we are not protected against hardware backdoors, e.g. in the network card controller.&lt;/li&gt;&lt;li&gt;New technologies, e.g. Intel VT-d, can allow to protect against potentially malicious hardware (requires specially designed OS, e.g. specially configured Xen)…&lt;/li&gt;&lt;li&gt;… except for the potential backdoors in the processor.&lt;/li&gt;&lt;li&gt;If we don't trust Microsoft, why should we trust Intel or AMD?&lt;/li&gt;&lt;/ol&gt;BTW, in May I will be speaking at the &lt;a href="http://2009.confidence.org.pl/agenda"&gt;Confidence conference&lt;/a&gt; in Krakow, Poland. This is gonna be a keynote, so don't expect new attacks to be revealed, but rather some more philosophical stuff about trusted computing (why it is not evil) and problems like the one discussed today. See you there!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24586388-2606319367477937236?l=theinvisiblethings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theinvisiblethings.blogspot.com/feeds/2606319367477937236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24586388&amp;postID=2606319367477937236' title='33 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/2606319367477937236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/2606319367477937236'/><link rel='alternate' type='text/html' href='http://theinvisiblethings.blogspot.com/2009/03/trusting-hardware.html' title='Trusting Hardware'/><author><name>joanna</name><uri>http://www.blogger.com/profile/07657268181166351141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07162675826515680775'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>33</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24586388.post-6224623698776609952</id><published>2009-03-20T17:20:00.003+01:00</published><updated>2009-06-05T12:18:45.340+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='philosophical'/><category scheme='http://www.blogger.com/atom/ns#' term='fighting for a better world'/><title type='text'>The Sky Is Falling?</title><content type='html'>A few reporters asked me if our &lt;a href="http://theinvisiblethings.blogspot.com/2009/03/attacking-smm-memory-via-intel-cpu.html"&gt;recent paper on SMM attacking&lt;/a&gt; via CPU cache poisoning means the sky is really falling now?&lt;br /&gt;&lt;br /&gt;Interestingly, not many people seem to have noticed that this is the 3rd attack against SMM our team has found in the last 10 months. OMG :o&lt;br /&gt;&lt;br /&gt;But anyway, does the fact we can easily compromise the SMM today, and write SMM-based malware, does that mean the sky is falling for the average computer user?&lt;br /&gt;&lt;br /&gt;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 — these are the main reasons we cannot trust our systems today.  And those pathetic 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 themselves properly…&lt;br /&gt;&lt;br /&gt;It's also funny how so many people focus on solving the security problems by &lt;a href="http://theinvisiblethings.blogspot.com/2008/09/three-approaches-to-computer-security.html"&gt;"Security by Correctness" or "Security by Obscurity"&lt;/a&gt;  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).&lt;br /&gt;&lt;br /&gt;On the other hand, there are some emerging technologies out there that could allow us to implement effective &lt;a href="http://theinvisiblethings.blogspot.com/2008/09/three-approaches-to-computer-security.html"&gt;"Security by Isolation"&lt;/a&gt; approach. Such technologies as VT-x/AMD-V, VT-d/IOMMU or Intel TXT and TPM.&lt;br /&gt;&lt;br /&gt;So we, at ITL, &lt;a href="http://invisiblethingslab.com/itl/Resources.html"&gt;focus on&lt;/a&gt; analyzing those new technologies, even though almost nobody uses them today. Because those technologies could actually make the difference. Unlike A/V programs or Patch Tuesdays, those technologies can change the level of sophistication required for the attacker dramatically.&lt;br /&gt;&lt;br /&gt;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 there is no such protection, which sucks. SMM rootkits sound sexy, but, frankly, the bad guys are doing just fine using traditional kernel mode malware (due to the fact that A/V is not effective). Of course, SMM rootkits are just yet another annoyance for the traditional A/V programs, which is good, but they might not be the most important consequence of SMM attacks.&lt;br /&gt;&lt;br /&gt;So, should the average Joe Dow care about our SMM attacks? Absolutely not!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24586388-6224623698776609952?l=theinvisiblethings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theinvisiblethings.blogspot.com/feeds/6224623698776609952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24586388&amp;postID=6224623698776609952' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/6224623698776609952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/6224623698776609952'/><link rel='alternate' type='text/html' href='http://theinvisiblethings.blogspot.com/2009/03/sky-is-falling.html' title='The Sky Is Falling?'/><author><name>joanna</name><uri>http://www.blogger.com/profile/07657268181166351141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07162675826515680775'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24586388.post-7397577755549629314</id><published>2009-03-19T17:02:00.001+01:00</published><updated>2009-03-25T15:08:59.440+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='attack'/><category scheme='http://www.blogger.com/atom/ns#' term='smm'/><category scheme='http://www.blogger.com/atom/ns#' term='exploit'/><title type='text'>Attacking SMM Memory via Intel® CPU Cache Poisoning</title><content type='html'>As &lt;a href="http://theinvisiblethings.blogspot.com/2009/03/independent-attack-discoveries.html"&gt;promised&lt;/a&gt;, the paper and the proof of concept code has just been posted on the ITL website &lt;a href="http://invisiblethingslab.com/itl/Resources.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A quote from the paper:&lt;br /&gt;&lt;blockquote&gt;In this paper we have described practical exploitation of the CPU cache poisoning in order to read or write into (otherwise protected) SMRAM memory. We have implemented two working exploits: one for dumping the content of SMRAM and the other one for arbitrary code execution in SMRAM. This is the third attack on SMM memory our team has found within the 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.&lt;br /&gt;&lt;br /&gt;The potential consequence of attacks on SMM might include SMM rootkits [9], hypervisor compromises [8], or OS kernel protection bypassing [2].&lt;br /&gt;&lt;/blockquote&gt;Don't worry, the shellcode we use in the 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 the 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 &lt;a href="http://www.eecs.ucf.edu/%7Eczou/research/SMM-Rootkits-Securecom08.pdf"&gt;Black Hat paper&lt;/a&gt; and try writing something they describe there.&lt;br /&gt;&lt;br /&gt;The attack presented in the paper has been fixed on some systems according to Intel. We have however found out that even the relatively new boards, like e.g. &lt;a href="http://www.intel.com/products/desktop/motherboards/DQ35JO/DQ35JO-overview.htm"&gt;Intel DQ35&lt;/a&gt; are still vulnerable (the very recent &lt;a href="http://www.intel.com/products/desktop/motherboards/DQ45CB/DQ45CB-overview.htm"&gt;Intel DQ45&lt;/a&gt; doesn't seem to be vulnerable though). The exploit attached is for DQ35 board — the offsets would have to be changed to work on other boards (please do not ask how to do this).&lt;br /&gt;&lt;br /&gt;Keep in mind this is a different SMM attack than the one we mentioned during our last month's Black Hat presentation on &lt;a href="http://invisiblethingslab.com/resources/bh09dc/Attacking%20Intel%20TXT%20-%20slides.pdf"&gt;TXT bypassing&lt;/a&gt; (the VU#127284). We are planning to present that other attack at the upcoming Black Hat Vegas. Hopefully this will not be the 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 the show, so cross your fingers!&lt;br /&gt;&lt;br /&gt;And good luck to Loic with &lt;a href="http://cansecwest.com/agenda.html"&gt;his presentation&lt;/a&gt; that is about to start just now...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24586388-7397577755549629314?l=theinvisiblethings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theinvisiblethings.blogspot.com/feeds/7397577755549629314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24586388&amp;postID=7397577755549629314' title='22 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/7397577755549629314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/7397577755549629314'/><link rel='alternate' type='text/html' href='http://theinvisiblethings.blogspot.com/2009/03/attacking-smm-memory-via-intel-cpu.html' title='Attacking SMM Memory via Intel® CPU Cache Poisoning'/><author><name>joanna</name><uri>http://www.blogger.com/profile/07657268181166351141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07162675826515680775'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>22</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24586388.post-8073648126971577076</id><published>2009-03-13T13:22:00.004+01:00</published><updated>2009-03-19T22:18:53.049+01:00</updated><title type='text'>Independent Attack Discoveries</title><content type='html'>Next week's Thursday, March 19th, 1600 UTC, we will publish a paper (+ exploits) on exploiting Intel® CPU cache mechanisms.&lt;br /&gt;&lt;br /&gt;The attack allows for privilege escalation from Ring 0 to the SMM on many recent motherboards with Intel CPUs. Interestingly,&lt;span style="font-style: italic;"&gt; the very same attack&lt;/span&gt; will be presented by another researcher, Loic Duflot, at the CanSecWest conference in Vancouver, Canada, on... &lt;a href="http://cansecwest.com/agenda.html"&gt;Thursday 19th, 1600 UTC&lt;/a&gt;. BTW, this is a &lt;span style="font-style: italic;"&gt;different &lt;/span&gt;SMM-targeting attack than the one we mentioned during our recent &lt;a href="http://invisiblethingslab.com/itl/Resources.html"&gt;TXT talk&lt;/a&gt; and that is scheduled to be presented later this year.&lt;br /&gt;&lt;br /&gt;Here's the full story (there is also a moral at the end) …&lt;br /&gt;&lt;br /&gt;Just after our presentation at the 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 — there were some ca. 30 people willing to ask us questions after the talk, so it's hard to remember all the 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 the attacks and one of the questions, that was asked to both me and Rafal, was if the 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 the end of the dinner we have sketched out the 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 parenthesis in this paragraph).&lt;br /&gt;&lt;br /&gt;So, being the good and responsible guys that we are, we immediately reported the new bug to Intel (actually talking to Intel's PSIRT is getting more and more routined for us in the recent months ;). And this is how we learnt that Loic came up with the same attack (back then there was no talk description at the 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 the CanSecWest conference in March. So, we contacted Loic and agreed to do coordinated disclosure next Thursday.&lt;br /&gt;&lt;br /&gt;Interestingly, however, none of us was even close to being the first discoverer of the underlying problem that our attacks exploit. In fact, the first mention of the possible attack using caching for compromising SMM has been discussed in certain documents authored as early as the end of 2005 (!) by nobody else than... Intel's own employees. Stay tuned for the details in our upcoming paper.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Conclusion&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;If there 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 they find and publish information about bugs — they actually do a favor to our society. Remember the 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 the vendor. Hmm, what they might have been doing with the exploit? When was the last time you scanned your system for SMM rootkits? ;)&lt;br /&gt;&lt;br /&gt;Anyways, congrats to Loic for being the first one who wrote exploits for this bug. Also congrats to Intel employees who originally noticed the problem back in 2005.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24586388-8073648126971577076?l=theinvisiblethings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theinvisiblethings.blogspot.com/feeds/8073648126971577076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24586388&amp;postID=8073648126971577076' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/8073648126971577076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/8073648126971577076'/><link rel='alternate' type='text/html' href='http://theinvisiblethings.blogspot.com/2009/03/independent-attack-discoveries.html' title='Independent Attack Discoveries'/><author><name>joanna</name><uri>http://www.blogger.com/profile/07657268181166351141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07162675826515680775'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24586388.post-6448095799043943721</id><published>2009-02-19T22:23:00.005+01:00</published><updated>2009-03-19T22:23:04.772+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='attack'/><category scheme='http://www.blogger.com/atom/ns#' term='tpm'/><category scheme='http://www.blogger.com/atom/ns#' term='trusted execution technology'/><category scheme='http://www.blogger.com/atom/ns#' term='trusted computing'/><category scheme='http://www.blogger.com/atom/ns#' term='smm'/><category scheme='http://www.blogger.com/atom/ns#' term='exploit'/><title type='text'>Attacking Intel TXT: paper and slides</title><content type='html'>The new press release covering the basic details about our TXT attack is &lt;a href="http://invisiblethingslab.com/press/itl-press-2009-02.pdf"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The paper is &lt;a href="http://invisiblethingslab.com/resources/bh09dc/Attacking%20Intel%20TXT%20-%20paper.pdf"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The slides converted to a PDF format are &lt;a href="http://invisiblethingslab.com/resources/bh09dc/Attacking%20Intel%20TXT%20-%20slides.pdf"&gt;here&lt;/a&gt;. There is also an original version of slides in the Keynote format &lt;a href="http://invisiblethingslab.com/resources/bh09dc/Attacking%20Intel%20TXT%20-%20slides.key.zip"&gt;here&lt;/a&gt; for the Mac people. And for all the other people who don't use Mac, but still value the aesthetics (?!), I have also generated a QuickTime clickable movie out from the Keynote slides -- it can be found &lt;a href="http://invisiblethingslab.com/resources/bh09dc/Attacking%20Intel%20TXT%20-%20slides.mov"&gt;here&lt;/a&gt;, but it weighs 80MB.&lt;br /&gt;&lt;br /&gt;Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24586388-6448095799043943721?l=theinvisiblethings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theinvisiblethings.blogspot.com/feeds/6448095799043943721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24586388&amp;postID=6448095799043943721' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/6448095799043943721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/6448095799043943721'/><link rel='alternate' type='text/html' href='http://theinvisiblethings.blogspot.com/2009/02/attacking-intel-txt-paper-and-slides.html' title='Attacking Intel TXT: paper and slides'/><author><name>joanna</name><uri>http://www.blogger.com/profile/07657268181166351141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07162675826515680775'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24586388.post-8942873381242351403</id><published>2009-02-10T18:30:00.007+01:00</published><updated>2009-03-19T22:19:50.619+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xen hacking'/><category scheme='http://www.blogger.com/atom/ns#' term='nested virtualization'/><title type='text'>Nesting VMMs, Reloaded.</title><content type='html'>Besides &lt;a href="http://theinvisiblethings.blogspot.com/2009/01/attacking-intel-trusted-execution.html"&gt;breaking the Intel's stuff&lt;/a&gt;, we have also been doing other 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 the pic is: Windows XP running inside Virtual PC, that runs inside Vista, which itself runs inside a Xen's HVM VM. Both the Virtual PC and Xen are using the Intel's hardware virtualization (VT-x is always used for HVM guests on Xen).&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Ti3q3Hdvels/SZG7hylIacI/AAAAAAAAAD4/hjm246CQygk/s1600-h/XP+inside+VPC+inside+Vista+inside+Xen.001.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 200px;" src="http://3.bp.blogspot.com/_Ti3q3Hdvels/SZG7hylIacI/AAAAAAAAAD4/hjm246CQygk/s320/XP+inside+VPC+inside+Vista+inside+Xen.001.png" alt="" id="BLOGGER_PHOTO_ID_5301224425579375042" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24586388-8942873381242351403?l=theinvisiblethings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theinvisiblethings.blogspot.com/feeds/8942873381242351403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24586388&amp;postID=8942873381242351403' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/8942873381242351403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/8942873381242351403'/><link rel='alternate' type='text/html' href='http://theinvisiblethings.blogspot.com/2009/02/nesting-vmms-reloaded.html' title='Nesting VMMs, Reloaded.'/><author><name>joanna</name><uri>http://www.blogger.com/profile/07657268181166351141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07162675826515680775'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Ti3q3Hdvels/SZG7hylIacI/AAAAAAAAAD4/hjm246CQygk/s72-c/XP+inside+VPC+inside+Vista+inside+Xen.001.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24586388.post-5520926602674392865</id><published>2009-01-26T17:56:00.004+01:00</published><updated>2009-03-19T22:19:30.493+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='philosophical'/><title type='text'>Closed Source Conspiracy</title><content type='html'>Many people in the industry have an innate fear of closed source (AKA proprietary software), which especially applies to everything crypto-related.&lt;br /&gt;&lt;br /&gt;The usual arguments go this way: this (proprietary) crypto software is bad, because the vendor might have put some backdoors in there. And: only the open source crypto software, which can be reviewed by anyone, can be trusted! So, after my &lt;a href="http://theinvisiblethings.blogspot.com/2009/01/why-do-i-miss-microsoft-bitlocker.html"&gt;recent post&lt;/a&gt;, 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?&lt;br /&gt;&lt;br /&gt;I personally think this way of reasoning sucks. In majority of cases, the fact something is distributed without the accompanying source code does not prevent others from analyzing the code. We do have advanced disassemblers and debuggers, and it is really not that difficult to make use of them as many people think.&lt;br /&gt;&lt;br /&gt;Of course, some heavily obfuscated programs can be extremely difficult to analyze. Also, analyzing a chipset's firmware, when you do not even know the underlying CPU architecture and the I/O map might be hard. But these are special cases and do not apply to majority of software, that usually is not obfuscated at all.&lt;br /&gt;&lt;br /&gt;It seems like the argument of Backdoored Proprietary Software usually comes from the open-source people, who are used to unlimited accesses to the source code, and consequently do not usually have much experience with advanced reverse engineer techniques, simply because they do not need them in their happy "Open Source Life". It's all Darwinism, after all ;)&lt;br /&gt;&lt;br /&gt;On the other hand, some things are hard to analyze, regardless of whether the 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 the source code? Anyone?&lt;br /&gt;&lt;br /&gt;You might be thinking — maybe I haven't looked at the source code myself, but because it is open source, &lt;span style="font-style: italic;"&gt;zillions&lt;/span&gt; of other users already have reviewed it. And if there was some backdoor in there, they would undoubtedly have found it already! Well, for all those open source fetishists, who blindly negate the value of anything that is not open source, I have only one word to say: &lt;a href="http://metasploit.com/users/hdm/tools/debian-openssl/"&gt;Debian&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Keep in mind:&lt;/span&gt; I do not say closed source is more secure than open source — I only resist the open-source fundamentalism, that defines every proprietary software as inherently insecure, and everything open source as ultimately secure.&lt;br /&gt;&lt;br /&gt;So, how should one (e.g. a government institution) verify security-level of a given crypto software, e.g. to ensure there are no built-in backdoors in there? I personally doubt it could be performed by one team, as it just usually happens that the same people who might be exceptionally skilled in code review, system-level security, etc, at the same time are average cryptographers and vice-versa.&lt;br /&gt;&lt;br /&gt;Imagine e.g. that you need to find out if there are any weaknesses in your system drive encryption software, something like BitLocker. Even if you get access to the source code, you still would have to analyze a lot of system-level details — how is the trusted boot implemented (SRTM? DRTM? TPM interaction?), which system software is trusted, how the implementation withstands various not-crypto-related attacks (e.g. some of the attacks I described in my &lt;a href="http://theinvisiblethings.blogspot.com/2009/01/why-do-i-miss-microsoft-bitlocker.html"&gt;previous post&lt;/a&gt;), etc…&lt;br /&gt;&lt;br /&gt;But this all is just system-level evaluation. What should come later is to analyze the 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 other team, the crypto experts.&lt;br /&gt;&lt;br /&gt;So, no doubt, it is not an easy task, and the fact if there is or there is not C/C++ source code available, is usually one of the minor headaches (a good example is our &lt;a href="http://theinvisiblethings.blogspot.com/2009/01/attacking-intel-trusted-execution.html"&gt;attack on TXT&lt;/a&gt;, where we were able to discover bugs in Intel's &lt;span style="font-style: italic;"&gt;specific system software&lt;/span&gt;, which, of course, is not open source).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24586388-5520926602674392865?l=theinvisiblethings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theinvisiblethings.blogspot.com/feeds/5520926602674392865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24586388&amp;postID=5520926602674392865' title='25 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/5520926602674392865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/5520926602674392865'/><link rel='alternate' type='text/html' href='http://theinvisiblethings.blogspot.com/2009/01/closed-source-conspiracy.html' title='Closed Source Conspiracy'/><author><name>joanna</name><uri>http://www.blogger.com/profile/07657268181166351141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07162675826515680775'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>25</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24586388.post-104514077420707012</id><published>2009-01-21T18:52:00.009+01:00</published><updated>2009-03-19T22:20:07.269+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bitlocker'/><category scheme='http://www.blogger.com/atom/ns#' term='disk encryption'/><category scheme='http://www.blogger.com/atom/ns#' term='tpm'/><category scheme='http://www.blogger.com/atom/ns#' term='trusted computing'/><title type='text'>Why do I miss Microsoft BitLocker?</title><content type='html'>In the &lt;a href="http://theinvisiblethings.blogspot.com/2009/01/attacking-intel-trusted-execution.html"&gt;previous post&lt;/a&gt;, I wrote the only one thing I really miss after I've switched from Vista to Mac is the &lt;a href="http://www.microsoft.com/windows/windows-vista/features/bitlocker.aspx"&gt;BitLocker Driver Encryption&lt;/a&gt;. I thought it might be interesting for others to understand my position, so below I describe why I think BitLocker is so cool, and why I think other system disk encryption software sucks.&lt;br /&gt;&lt;br /&gt;So, it's all about the &lt;span style="font-style: italic;"&gt;Trusted Boot&lt;/span&gt;. BitLocker does make use of a trusted boot process, while all the other system encryption software I'm aware of, does not. But why the trusted boot feature is so useful? Let's start with a quick digression about what the trusted boot process is…&lt;br /&gt;&lt;br /&gt;Trusted boot can be implemented using either a &lt;span style="font-style: italic;"&gt;Static Root of Trust&lt;/span&gt;  or a &lt;span style="font-style: italic;"&gt;Dynamic Root of Trust&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;The Static Root of Trust approach (also known as Static Root of Trust Measurement or SRTM) is pretty straightforward — the system starts booting from some immutable piece of firmware code that we assume is always trusted (hence the static root) and that initiates the measurement process, in which each component measures the next one in a chain. So, e.g. this immutable piece of firmware will first calculate the hash of the BIOS and &lt;a href="http://www.cs.bham.ac.uk/%7Emdr/teaching/modules/security/lectures/TrustedComputingTCG.html"&gt;extend &lt;/a&gt;a TPM's PCR register with the value of this hash. Then the BIOS does the same with the PCI EEPROMs and the MBR, before handling execution to them. Then the bootloader measures the OS loader before executing it. And so on.&lt;br /&gt;&lt;br /&gt;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 &lt;a href="http://www.intel.com/technology/security/"&gt;TXT technology&lt;/a&gt;, formerly LaGrande, is an example of a DRTM (more precisely: TXT is more than just DRTM, but DRTM is the central concept on which TXT is built). We will be &lt;a href="http://www.blackhat.com/html/bh-dc-09/bh-dc-09-speakers.html#Wojtczuk"&gt;talking a lot about TXT&lt;/a&gt; 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 the challenges with both.&lt;br /&gt;&lt;br /&gt;Essentially, both SRTM and DRTM, in the context of a trusted boot, are supposed to provide the same: assurance the system that just booted is actually the system that we wanted to boot (i.e. the trusted one) and not some modified system (e.g. compromised by an MBR virus).&lt;br /&gt;&lt;br /&gt;BitLocker uses the Static Root of Trust Measurement. SRTM can really make sense when we combine it with either TPM &lt;span style="font-style: italic;"&gt;sealing &lt;/span&gt;or &lt;span style="font-style: italic;"&gt;attestation &lt;/span&gt;feature. BitLocker uses the former to make sure that only the trusted system can get access to the disk decryption key. In other words: BitLocker relies on the TPM that it will unseal (release) the decryption key (needed to decrypt the system partition) when and only when the state of chosen PCR registers is the same is it was when the decryption key was sealed into the TPM.&lt;br /&gt;&lt;br /&gt;Ok, why is this trusted boot process so important for the system disk encryption software? Because it protects against a simple two-stage attack:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;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 the power button. The system starts and boots from the USB. An Evil version of something similar to our &lt;a href="http://invisiblethingslab.com/resources/bh08/part3.pdf"&gt;BluePillBoot &lt;/a&gt;gets installed into the MBR (or to a &lt;a href="http://www.ngssoftware.com/research/papers/Implementing_And_Detecting_A_PCI_Rootkit.pdf"&gt;PCI EEPROM&lt;/a&gt;). This Evil Program has only one task — to sniff out the encryption software's password/PIN and then report it back to the maid next time she comes...&lt;/li&gt;&lt;li&gt;So, you come back to your room to brush your teeth after the 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 the prompt, like if nothing happened. After all how could it possibly know the Evil Program, like BluePillBoot, has just been loaded a moment ago from the MBR or a PCI EEPROM? It can not! So, you enter the valid password, your system gets the decryption key and you can get access to your encrypted system...&lt;/li&gt;&lt;li&gt;But then you have an appointment at the 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 the 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 the Evil Program displaying the sniffed decryption password. Now, depending on their level of subtleness, she could either steal your whole laptop or only some more important data from the laptop. Your system disk encryption software is completely useless against her now.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;(Yes, I know that's 3 bullets, but the Evil Maid had to sneak into your room only twice:)&lt;br /&gt;&lt;br /&gt;So, why the BitLocker would not allow for this simple attack? Because the BitLocker software should actually be able to know that the system gets compromised (by the Evil Program) since the last boot. BitLocker should then refuse to display a password prompt. And even if it didn't and asked the user for the password, still it should not be able to get the actual decryption key out from the TPM, because the values in the certain PCR register(s) will be wrong (they will now account for the modified hashes of the MBR or PCI EEPROM or BIOS). The bottom line is: the maid is not getting the decryption key (just as the user now), which is what this is all about.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Ti3q3Hdvels/SXdjHwkIqMI/AAAAAAAAADo/l3tgqzzQ4Es/s1600-h/evil+maid.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 130px;" src="http://1.bp.blogspot.com/_Ti3q3Hdvels/SXdjHwkIqMI/AAAAAAAAADo/l3tgqzzQ4Es/s200/evil+maid.jpg" alt="" id="BLOGGER_PHOTO_ID_5293808871944005826" border="0" /&gt;&lt;/a&gt;At least this is how the BitLocker should work. I shall add a disclaimer here, that neither myself, nor anybody from my team, have looked into the BitLocker implementation. We have not, because, as of yet, there 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 other vendors, like e.g. &lt;a href="http://www.truecrypt.org/"&gt;TrueCrypt &lt;/a&gt;(Hi David!), or Apple, to add SRTM or, better yet, DRTM, to their system encryption products.&lt;br /&gt;&lt;br /&gt;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), then probably all system disk encryption software would be just good enough (assuming it doesn't have any bugs in the crypto code).&lt;br /&gt;&lt;br /&gt;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 the BIOS using a password (i.e. using the Power-On password, not just the BIOS supervisor password), then the above two-stage attacks should not be feasible. Those people might argue, that even if the Evil Maid had cleared the CMOS memory (by removing the CMOS battery from the motherboard), still they would be able to notice that something is wrong — the BIOS would not longer be asking for the password, or the password would be different from what they used before.&lt;br /&gt;&lt;br /&gt;That is a valid point, but relaying on the BIOS password to provide security for all your data might not be such a good idea. First problem is that all the BIOSes have had a long history of various default or "maintenance" passwords (I actually do not know how the situation looks today with those default passwords). Another problem is that the attacker might first clear the CMOS memory, and then modify her Evil MBR program to also display a fake BIOS password prompt, that would accept anything the user enters. This way the user will not be alerted that something is wrong and will be willing to provide the real password for drive decryption when prompted later by the actual drive encryption software.&lt;br /&gt;&lt;br /&gt;One might ask why can't the attacker use the similar attack against BitLocker? Even if the real BitLocker uses trusted boot process, we can still infect the MBR, display the fake BitLocker PIN prompt and this way get into the possession of the user's PIN.&lt;br /&gt;&lt;br /&gt;This attack, however, can be spotted by an inquisitive user — after all, if he or she knows they provided the correct PIN, then it would be suspicious not to see the system being booted (and it won't boot, because the fake BitLocker will not be able to retrieve the password from the TPM). If the fake BitLocker wanted to boot the OS (so that user didn't suspect anything), it would have to remove itself from the system and then reboot the system. Again this should alert the user that something wrong is going on.&lt;br /&gt;&lt;br /&gt;There is also a much more elegant way of defending against the above attack (with fake BitLocker prompt) — but I'd rather let Microsoft to figure it out by themselves ;)&lt;br /&gt;&lt;br /&gt;By the way, contrary to a popular belief the 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 the first edition of &lt;a href="http://invisiblethingslab.com/itl/Services.html"&gt;our Understanding Stealth Malware training&lt;/a&gt; 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 the running Vista, to re-seal the BitLocker key to arbitrary new system firmware/MBR configuration. Everybody can try it by going to Control Panel/BitLocker Driver Encryption, then clicking on the "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 then to enable BitLocker again (this would generate a new key and seal it to the TPM with the new PCR values).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Ti3q3Hdvels/SXdlSzniIcI/AAAAAAAAADw/GtVHjoUqCvs/s1600-h/disabling+bitlocker.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 254px;" src="http://3.bp.blogspot.com/_Ti3q3Hdvels/SXdlSzniIcI/AAAAAAAAADw/GtVHjoUqCvs/s320/disabling+bitlocker.png" alt="" id="BLOGGER_PHOTO_ID_5293811260765381058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;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. the BitLocker's PIN). It just enough that you are the default user with admin rights or some malware running in this context. Pity they decided on the simplest solution here. But still BitLocker is simply the one coolest thing in Vista and something I really miss on all other OSes...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24586388-104514077420707012?l=theinvisiblethings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theinvisiblethings.blogspot.com/feeds/104514077420707012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24586388&amp;postID=104514077420707012' title='23 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/104514077420707012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/104514077420707012'/><link rel='alternate' type='text/html' href='http://theinvisiblethings.blogspot.com/2009/01/why-do-i-miss-microsoft-bitlocker.html' title='Why do I miss Microsoft BitLocker?'/><author><name>joanna</name><uri>http://www.blogger.com/profile/07657268181166351141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07162675826515680775'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Ti3q3Hdvels/SXdjHwkIqMI/AAAAAAAAADo/l3tgqzzQ4Es/s72-c/evil+maid.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>23</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24586388.post-1619925805743086461</id><published>2009-01-05T16:30:00.005+01:00</published><updated>2009-03-19T22:20:19.253+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='attack'/><category scheme='http://www.blogger.com/atom/ns#' term='trusted execution technology'/><category scheme='http://www.blogger.com/atom/ns#' term='trusted computing'/><category scheme='http://www.blogger.com/atom/ns#' term='exploit'/><title type='text'>Attacking Intel® Trusted Execution Technology</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Ti3q3Hdvels/SWI4MzG1jdI/AAAAAAAAADU/xaj6gqT72bQ/s1600-h/processor+padlock.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 213px;" src="http://1.bp.blogspot.com/_Ti3q3Hdvels/SWI4MzG1jdI/AAAAAAAAADU/xaj6gqT72bQ/s320/processor+padlock.jpg" alt="" id="BLOGGER_PHOTO_ID_5287850705014853074" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Press people: please read &lt;a href="http://invisiblethingslab.com/press/itl-press-2009-01.pdf"&gt;our press release&lt;/a&gt; first and also refer to the disclaimer at the end of this blog post. Thank you!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Update: 1/5/2009 19:21 CEST: minor typos/spelling corrections. Thanks to Jarred for point out some of the typos.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A word about Trusted Computing&lt;/span&gt;&lt;br /&gt;The term Trusted Computing and related technologies, like Palladium, Trusted Platform Module, LaGrande, have always caused lots of controversy in the IT world. Most of the fear, however, has been a result of the lack of understanding of how a particular technology really works.&lt;br /&gt;&lt;br /&gt;Nevertheless, Trusted Computing is becoming part of our lives, whether 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 the recent years, that probably even people working at Microsoft are confused now. Nevertheless, some of the Palladium technologies made their way into Vista, and Microsoft BitLocker is, without doubt, the most successful, widely deployed product that is based on the idea of Trusted Computing. (In fact the Bitlocker is the &lt;span style="font-style: italic;"&gt;only &lt;/span&gt;one thing that I really have been missing since I switched from Vista to Mac some time ago).&lt;br /&gt;&lt;br /&gt;On the hardware side, besides the famed TPM, we also have had the LaGrande technology, that is often connected with things such as Remote Attestation, Protected Execution and other scary terms…&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A word about Trusted Execution Technology&lt;/span&gt;&lt;br /&gt;LaGrande, recently renamed &lt;a href="http://www.intel.com/technology/security/"&gt;Trusted Execution Technology (TXT)&lt;/a&gt;, is Intel's response to the Trusted Computing trend. TXT is currently part of the &lt;a href="http://www.intel.com/products/vpro/index.htm"&gt;vPro™ brand&lt;/a&gt;, and for about a year now users can buy a vPro/TXT compatible hardware in regular computer stores (the first one was the &lt;a href="http://www.intel.com/products/desktop/motherboards/dq35jo/dq35jo-overview.htm"&gt;DQ35J desktop board&lt;/a&gt; with certain Core 2 Duo processors, which I was able to buy at the end of 2007 — remember that TXT requires support from both the CPU and the chipset).&lt;br /&gt;&lt;br /&gt;TXT is not an alternative to TPM, in fact TXT heavily relies on the TPM to provide basic services like e.g. secure storage of measurements done by the TXT. Also, Palladium, or whatever it is called these days, is not a competition to TXT. Intel TXT can provide building blocks to e.g. Vista Bitlocker, arguably making it more secure then it is now (Current Bitlocker implementation, AFAIK, relies on a so called Static Root of Trust for Measurement, which requires TPM, but not TXT).&lt;br /&gt;&lt;br /&gt;What kind of measurement would TXT like to store in our TPM? Well, the whole TXT is, in fact, all about making and storing software measurements, or, using a more familiar language, secure hashes of certain software components.&lt;br /&gt;&lt;br /&gt;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 the state of the system before loading the software, thus making it possible for a user to ensure secure load of an OS or VMM, even in a potentially compromised machine.&lt;br /&gt;&lt;br /&gt;In other 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 the system in a moment just before the load process. This TXT-supported load process is called Late Launch, and is implemented via a special new CPU instruction called SENTER.&lt;br /&gt;&lt;br /&gt;It's a good place to mention that AMD has its own version of the late launch implemented via SKINIT instruction. We haven't looked at the AMD technology thoroughly yet, so I will refrain from commenting on this.&lt;br /&gt;&lt;br /&gt;The late launch is a pretty amazing thing, when we think about. It promises to effectively provide all the benefits of a computer restart without actually restarting it.&lt;br /&gt;&lt;br /&gt;It is hard to overemphasize the potential impact that a technology such as TXT could have on computer security. One can immediately see that it could eliminate all the system-level persistent malware — in other 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 the system right from the bootloader or BIOS. Combining this with VT-x and VT-d technologies, system developers (for the first time, at least as far as the "PC" platform is considered) have gotten extremely strong tools into their hands that should allow them to create really secure VMMs and OSes…&lt;br /&gt;&lt;br /&gt;Hopefully by now, my Dear Reader, you should have the feeling what kind of an animal Intel TXT  is and how desperately the world needs it...&lt;br /&gt;&lt;br /&gt;And now, we are going to move on and show practical attacks on current TXT implementations... :)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Attacking Intel TXT!&lt;/span&gt;&lt;br /&gt;Ok, not in this post today, but rather at the &lt;a href="http://blackhat.com/html/bh-dc-09/bh-dc-09-speakers.html#Wojtczuk"&gt;upcoming Black Hat conference&lt;/a&gt; in Washington, DC in February. Over the recent months, Rafal and I have been looking at the 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 there are also some issues…&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;Tboot, which is also &lt;a href="http://lxr.xensource.com/lxr/source"&gt;part of&lt;/a&gt; (scroll down to the end of the page) the Xen hypervisor, can be though of as a reference implementation of TXT-based system loader, that could be used to securely load either the Xen hypervisor or the Linux kernel, when run on a vPro/TXT compatible hardware.&lt;br /&gt;&lt;br /&gt;[copy-and-paste from &lt;a href="http://invisiblethingslab.com/press/itl-press-2009-01.pdf"&gt;the press release&lt;/a&gt; follows]&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Our attack comprises two stages. The first stage requires an implementation flaw in a specific system software. The second stage of the attack is possible thanks to a certain design decision made in the current TXT release.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;While evaluating the effectiveness of the Intel® TXT technology, as part of a work done for a customer, we have identified several implementation flaws in the Intel's system software, which allowed to conduct the above mentioned stage-one attack. We have provided Intel with extensive description of the flaws in December 2008, and Intel is currently working on fixing those vulnerabilities.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;We have also been in touch with Intel about the possibility of conducting the second-stage attack since November 2008. In December, after providing Intel with the details about the first-stage attack, Intel promised to release, in the coming weeks, an updated TXT specification for developers that would explain how to design their TXT-based loaders in such a way that they are immune to our attack. Intel claims the current Intel® TXT release does contain the basic building blocks that could be used to prevent our second-stage attack and the release of the additional specification would make it feasible in practice. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;More details in February in DC :)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TXT useless?&lt;/span&gt;&lt;br /&gt;Some people are skeptical about the TXT technology, and not only because of the Irrational Fear of the Trusted Computing (IFTC),  but rather because they point out to the complexity of the whole technology. The complexity is bad, because 1) it leaves more space for potential attacks, and 2) it discourages developers (ISVs) from using the technology in their products (e.g. neither Microsoft, nor VMWare make use of TXT in any of their bare-metal hypervisors, even though TXT is very well suited for this kind of software).&lt;br /&gt;&lt;br /&gt;It is true that TXT is a very complex technology (the SENTER instruction is probably the masterpiece of the CISC architecture!), but I personally like it. In my opinion this is the first technology available for the PC platform that has the potential to really change something, much more then the NX-feature did a few years ago. Before people will run to the comment box — if you would like to argue about the usefulness/uselessness of Trusted Computing/TXT, please base your opinions on technical facts (read the spec!) and not on your feelings!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Disclaimer (for press)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Starting January 2009, we (at Invisible Things Lab), decided to issue &lt;a href="http://invisiblethingslab.com/itl/News.html"&gt;press releases&lt;/a&gt; in addition to this blog. The general rule is: press releases are written for journalists, while the blog is mainly written for other researchers, security enthusiast, etc.&lt;br /&gt;&lt;br /&gt;The wording of our press releases is carefully chosen to minimize the 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.&lt;br /&gt;&lt;br /&gt;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, they indeed might be very exciting, which might not be the case for a general audience. I sometimes might also use shortcuts, metaphors, or irony, and other figures of speech, that might not necessarily be obvious for a more general public.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;Thank you for your cooperation.&lt;br /&gt;Joanna Rutkowska,&lt;br /&gt;Founder and CEO,&lt;br /&gt;Invisible Things Lab.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24586388-1619925805743086461?l=theinvisiblethings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theinvisiblethings.blogspot.com/feeds/1619925805743086461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24586388&amp;postID=1619925805743086461' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/1619925805743086461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/1619925805743086461'/><link rel='alternate' type='text/html' href='http://theinvisiblethings.blogspot.com/2009/01/attacking-intel-trusted-execution.html' title='Attacking Intel® Trusted Execution Technology'/><author><name>joanna</name><uri>http://www.blogger.com/profile/07657268181166351141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07162675826515680775'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Ti3q3Hdvels/SWI4MzG1jdI/AAAAAAAAADU/xaj6gqT72bQ/s72-c/processor+padlock.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24586388.post-718012832586397028</id><published>2008-09-07T09:54:00.004+02:00</published><updated>2009-03-25T16:01:39.482+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bad guys attacking joanna'/><category scheme='http://www.blogger.com/atom/ns#' term='fighting for a better world'/><title type='text'>Microsoft executive "rebuts" our research!</title><content type='html'>Ah, there is no feeling like seeing your name in the news when drinking your morning coffee... In this &lt;a href="http://news.zdnet.com/2424-9595_22-219814.html"&gt;piece&lt;/a&gt; some Steve Riley, a senior security strategist at Microsoft, decided to "rebute" &lt;a href="http://theinvisiblethings.blogspot.com/2008/08/our-xen-0wning-trilogy-highlights.html"&gt;our recent Black Hat presentations&lt;/a&gt; research results.&lt;br /&gt;&lt;br /&gt;Mr. Riley had been quoted by ZDnet as saying:&lt;br /&gt;&lt;br /&gt;"Her [Joanna Rutkowska] insistence is that you can replace the hypervisor without anybody knowing... Our assertion is that this is incorrect," Riley told the audience. "First of all, to do these attacks you need to become administrator at the root. So that's going to be, on an appropriately configured machine, an exceedingly difficult thing to happen."&lt;br /&gt;&lt;br /&gt;Apparently, Mr. Riley has never seen our Black Hat presentations (or slides at least) that he is referring to (oh, wait, that is the typical case with all our "refuters", how come?)... &lt;br /&gt;&lt;br /&gt;First, &lt;a href="http://theinvisiblethings.blogspot.com/2008/08/teamwork-crediting.html"&gt;we&lt;/a&gt; never said anything about &lt;span style="font-style:italic;"&gt;replacing&lt;/span&gt; the hypervisor. I really have no idea how this idea was born in Mr. Riley's head? Replacing the hypervisor - that would indeed be insane for us to do!&lt;br /&gt;&lt;br /&gt;Second, &lt;span style="font-style:italic;"&gt;it is not true&lt;/span&gt; that the attacker needs to become an administrator "at the root" (he mean the root partition or administrative domain here I assume). The attack we presented in our second speech, that exploited a heap overflow in the Xen hypervisor FLASK module, could have been conducted from the unprivileged domain, as we demonstrated during the presentation.&lt;br /&gt;&lt;br /&gt;Mr. Riley continues with his vision:&lt;br /&gt;&lt;br /&gt;"Because you [the attacker] didn't subject your own replacement hypervisor through the thorough design review that ours did, I'll bet your hypervisor is probably not going to implement 100 percent of the functionality as the original one," Riley said. "There will be a gap or two and we will be able to detect that."&lt;br /&gt;&lt;br /&gt;Well, if he only took the effort of looking into our slides, he would realize that, in case of XenBluePill, we were slipping it beneath (not replacing!) the original hypervisor, and then run the original one as nested. So, all the functionality of the original hypervisor was preserved.&lt;br /&gt;&lt;br /&gt;Mr. Riley also shares some other ground breaking thoughts in this article, but I think we can leave them uncommented ;)&lt;br /&gt;&lt;br /&gt;This situation is pretty funny actually - we have here &lt;span style="font-style:italic;"&gt;the words and feelings&lt;/span&gt; of some Microsoft executive vs. our &lt;a href="http://invisiblethingslab.com/bh08/"&gt;three technical presentations&lt;/a&gt;, all the &lt;a href="http://invisiblethingslab.com/bh08/code/"&gt;code&lt;/a&gt; that we released for those presentations, and also a few of our &lt;a href="http://invisiblethingslab.com/bh08/demos/"&gt;demos&lt;/a&gt;. Yet, it's apparently still worth getting into the news and reporting what the feeling of Mr. Riley are...&lt;br /&gt;&lt;br /&gt;Let me, however, write one more time, that I'm (still) not a Microsoft hater. There are many people at Microsoft that I respect: Brandon Baker, Neil Clift, the LSD guys, Mark Russinovich, and probably a few more that I just haven't had occasion to meet in person or maybe forgot about at the moment. It's thus even more sad that people like Mr. Riley are also associated with Microsoft, even more they are the face of Microsoft for the majority of people. Throwing a party in Vegas and Amsterdam once a year certainly is not enough to change the Microsoft's image in this case...&lt;br /&gt;&lt;br /&gt;Interestingly, if Mr. Riley only attended our Xen 0wning Trilogy at Black Hat, then he would notice that we were actually very positive about Hyper-V. Of course, I pointed out that Xen 3.3 certainly has a more secure architecture right now, but I also said that I knew (from talking to some MS engineers from the virtualization group) that Hyper-V is going to implement similar features in the next version(s) and that this is very good. I also prized the fact it has only about 100k LOC (vs. about 300k LOC in Xen 3.3).&lt;br /&gt;&lt;br /&gt;So, Mr. Senior Security Strategist, I suggest you do your homework more carefully next time before throwing mud at others and trying to negate the value of their work (and all the efforts of Microsoft's PR people).&lt;br /&gt;&lt;br /&gt;On a separate note, I found it quite unprofessional that ZDNet's Liam Tung and Tom Espiner, the authors of the news, didn't ask me for a commentary before publishing this. Not to mention that they also misspelled Rafal's name and forgot to mention about Alex, the third co-author of the presentations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24586388-718012832586397028?l=theinvisiblethings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theinvisiblethings.blogspot.com/feeds/718012832586397028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24586388&amp;postID=718012832586397028' title='16 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/718012832586397028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/718012832586397028'/><link rel='alternate' type='text/html' href='http://theinvisiblethings.blogspot.com/2008/09/microsoft-executive-rebuts-our-research.html' title='Microsoft executive &quot;rebuts&quot; our research!'/><author><name>joanna</name><uri>http://www.blogger.com/profile/07657268181166351141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07162675826515680775'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24586388.post-7367970431147576824</id><published>2008-09-06T13:59:00.001+02:00</published><updated>2009-03-25T16:01:52.715+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hypervisor rootkits'/><category scheme='http://www.blogger.com/atom/ns#' term='xen hacking'/><category scheme='http://www.blogger.com/atom/ns#' term='xen heap exploiting'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualization based rootkits'/><title type='text'>Xen 0wning Trilogy: code, demos and q35 attack details posted</title><content type='html'>We have posted all the code that we used last month during &lt;a href="http://theinvisiblethings.blogspot.com/2008/07/0wning-xen-in-vegas.html"&gt;our Black Hat presentations&lt;/a&gt; about Xen security, and you can get it &lt;a href="http://invisiblethingslab.com/bh08/"&gt;here&lt;/a&gt;. This includes the full source code for:&lt;br /&gt;1) The generic Xen Loadable Modules framework&lt;br /&gt;2) Implementation of the two Xen Hypervisor Rootkits&lt;br /&gt;3) The Q35 exploit&lt;br /&gt;4) The FLASK heap overflow exploit&lt;br /&gt;5) The BluePillBoot (with nested virtualization support on SVM)&lt;br /&gt;6) The XenBluePill (with nested virtualization support on SVM)&lt;br /&gt;&lt;br /&gt;Beware the code is by far not user-friendly, it requires advanced Linux/Xen, C and system-level programming skills in order to tweak some constants and run it successfully on your system. Do not send us questions how to compile/run it, as we don’t have time to answer such questions. Also do not send questions how the code works – if you can’t figure it out by reading our slides and the source code, then it means you should probably spend more time on this yourself. On the other hand, we would appreciate any constructive feedback.&lt;br /&gt;&lt;br /&gt;The code is our gift to the research community. There is no warranty and Invisible Things Lab takes no responsibility for any potential damage that this code might cause (e.g. by rebooting your machine) or any potential malicious usage of this code, or any other code built on top of this code. We believe that by publishing this code we help to create more secure systems in the future.&lt;br /&gt;&lt;br /&gt;Additionally, we also posted the full version of our second Black Hat talk, which now includes all the slides about the Q35 bug and how we exploited it. Those slides had to be previously removed during our Black Hat presentation, as &lt;a href="http://theinvisiblethings.blogspot.com/2008/08/intel-patches-q35-bug.html"&gt;the patch&lt;/a&gt; was still unavailable during that time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24586388-7367970431147576824?l=theinvisiblethings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theinvisiblethings.blogspot.com/feeds/7367970431147576824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24586388&amp;postID=7367970431147576824' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/7367970431147576824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/7367970431147576824'/><link rel='alternate' type='text/html' href='http://theinvisiblethings.blogspot.com/2008/09/xen-0wning-trilogy-code-demos-and-q35.html' title='Xen 0wning Trilogy: code, demos and q35 attack details posted'/><author><name>joanna</name><uri>http://www.blogger.com/profile/07657268181166351141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07162675826515680775'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24586388.post-7438465495915995582</id><published>2008-09-02T13:39:00.002+02:00</published><updated>2009-03-25T16:02:02.252+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='philosophical'/><title type='text'>The three approaches to computer security</title><content type='html'>If we looked at the computer systems and how they try to provide security, I think we could categorize those attempts into three broad categories:&lt;br /&gt;&lt;br /&gt;1) Security by Correctness&lt;br /&gt;2) Security by Isolation&lt;br /&gt;3) Security by Obscurity&lt;br /&gt;&lt;br /&gt;Let's discuss those categories in more detail below.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Security by Correctness&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;The assumption here is obvious: if we can produce software that doesn't have bugs (nor any maliciously behaving code), then we don't have security problems at all. The only problem is that we don't have any tools to make sure that a given code is correct (in terms of implementation, design and ethical behavior). But if we look at various efforts in computer science, we will notice a lot of effort has been made to achieve Security by Correctness: "safe" languages, code verifiers (although not sound ones, just heuristic based), developer's education, manual code audit, etc. Microsoft's famed Secure Development Life-cycle is all about Security by Correctness. The only problem is: all those approaches sometimes work and sometimes do not, sometimes they miss some bug and also there are problems that I simple don't believe can be addresses by automatic code verifiers or even safe languages, like e.g. logic/design bugs or deciding on wheatear a given code behaves maliciously or not (after all this is an ethical problem in many cases, not a computer science problem).&lt;br /&gt;&lt;br /&gt;To sum it: I think that in some more or less distant future (some people think abuout a timeframe of 50 years or so), we would get rid of all the implementation bugs, thanks to safe languages and/or sound code verifiers. But I don't believe we could assure correctness of software on any higher level of abstraction then implementation level.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Security by Isolation&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Because of the problems with effectively implementing Security by Correctness approach, people, from the very beginning, has also taken another approach, which is based on isolation. The idea is to split a computer system into smaller pieces and make sure that each piece is separated from the other ones, so that if it gets compromised/malfunctions, then it cannot affect the other entities in the system. Early UNIX's user accounts and separate process address spaces, things that are now present in every modern OS, are examples of Security by Isolation.&lt;br /&gt;&lt;br /&gt;Simple as it sound, in practice the isolation approach turned out to be very tricky to implement. One problem is how to partition the system into meaningful pieces and how to set permissions for each piece. The other problem is implementation - e.g. if we take a contemporary consumer OS, like Vista, Linux or Mac OSX, all of them have monolithic kernels, meaning that a simple bug in any of the kernel components (think: hundreds of 3rd party drivers running there), allows to bypass of the isolation mechanisms provided by the kernel to the rest of the system (process separation, ACLs, etc).&lt;br /&gt;&lt;br /&gt;Obviously the problem is because the kernels are monolithic. Why not implement Security by Isolation on a kernel level then? Well, I would personally love that approach, but the industry simply took another course and decided that monolithic kernels are better then micro-kernels, because it's easier to write the code for them and (arguably) they offer better performance.&lt;br /&gt;&lt;br /&gt;Many believe, including myself, that this landscape can be changed by the virtualization technology. Thin bare-metal hypervisor, like e.g. Xen, can act like a micro kernel and enforce isolation between other components in the system - e.g. we can move drivers into a separate domain and isolate them from the rest of the system. But again there are challenges here on both the design- as well as the implementation-level. For example, we should not put all the drivers into the same domain, as this would provide little improvement in security. Also, how to make sure that the hypervisor itself is not buggy?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Security by Obscurity (or Security by Randomization)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Finally we have the Security by Obscurity approach that is based on the assumption that we cannot get rid of all the bugs (like in Security by Isolation approach), but at least we can make exploitation of those bugs very hard. So, it's all about making our system unfriendly to the attacker.&lt;br /&gt;&lt;br /&gt;Examples of this approach include Address Space Layout Randomization (ASLR, present in all newer OSes, like Linux, Vista, OSX), StackGuard-like protections (again used by most contemporary OSes), pointer encryption (Windows and Linux) and probably some other mechanisms that I can't remember at the moment. Probably the most extreme example of Security by Obscurity would be to use a compiler that generates heavily obfuscated binaries from the source code and creates a unique (on a binary level) instances of the same system. Alex did his PhD on this topic and his an expert on compilers and obfuscators.&lt;br /&gt;&lt;br /&gt;The obvious disadvantage of this approach is that it doesn't prevent the bugs from being exploited - it only make the meaningful exploitation very hard or even impossible. But if one is concerned also about e.g. DoS attacks, then Security by Obscurity will not prevent them in most cases. The other problem with obfuscating the code is the performance (compiler cannot optimize the code for speed) and maintenance (if we got a crash dump on an "obfuscated" Windows box, we couldn't count on help from the technical support). Finally there is a problem of proving that the whole scheme is correct and that our obfuscator (or e.g. ASLR engine) doesn't introduce bugs to the generated code and that we will not get random crashes later (that we would be most likely unable to debug, as the code will be obfuscated).&lt;br /&gt;&lt;br /&gt;I wonder if the above categorization is complete and if I haven't forgotten about something. If you know an example of a security approach that doesn't fit here (besides blacklisiting), please let me know!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24586388-7438465495915995582?l=theinvisiblethings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theinvisiblethings.blogspot.com/feeds/7438465495915995582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24586388&amp;postID=7438465495915995582' title='16 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/7438465495915995582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/7438465495915995582'/><link rel='alternate' type='text/html' href='http://theinvisiblethings.blogspot.com/2008/09/three-approaches-to-computer-security.html' title='The three approaches to computer security'/><author><name>joanna</name><uri>http://www.blogger.com/profile/07657268181166351141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07162675826515680775'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24586388.post-5145355901555942752</id><published>2008-08-31T23:09:00.001+02:00</published><updated>2009-03-25T16:02:48.376+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='company news'/><title type='text'>Teamwork &amp; Crediting</title><content type='html'>As the technology is getting more and more complex, security research, especially offensive security research on a system level, becoming more and more difficult to be done by one person. NX/XD, ASLR, various StackGuard-like things, VT-d, TXT, etc... - all those technologies leave less and less space for the interesting system-level attacks. On the other hand, the widespread "deployment" of Web 2.0 creates a whole new area to explore, but that is a whole different world (plus there are still all those "human factor" attacks that exploit user stupidity, but again, this is a different area).&lt;br /&gt;&lt;br /&gt;Our &lt;a href="http://theinvisiblethings.blogspot.com/2008/07/0wning-xen-in-vegas.html"&gt;Xen 0wning Trilogy&lt;/a&gt; is a good example of how a team of researchers can still come up with interesting new system-level attacks against the very recent and securely design system. Take XenBluePill as an example. &lt;br /&gt;&lt;br /&gt;It has first been months of research and coding done by Alex and myself to support nested hardware virtualization on AMD. Then there was months of Rafal's research about how to load code into the running Xen on the fly ("Xen Loadable Modules"). That required ability to access Xen's memory in the first place and Rafal's way for doing that was to use the DMA attack. But then it turned out that the Xen 3.3 uses VT-d protection to protect against this very kind of attacks. So then I came up with the "Q35 attack" that exploited a problem with recent Intel BIOSes on recent motherboards (details are coming this week). But I based my attack on a similar SMM attack that Rafal came up with a few months earlier on a different chipset, when he was looking into ways to compromise SMM handler, as we started thinking about HyperGuard project back then and Rafal was curious  reliable the SMM protection is. In the meantime, Alex "converted" our working New Blue Pill that had full support for nested virtualization but was essentially a Windows driver, into a piece of code that was completely OS-independent (own memory management, etc.). Then I finally took Rafal's XLM framework, added a few minor things that were needed to load our "Windows-independent Windows driver" into Xen using XLM, fixed some minor stuff and... it finally worked! But that was possible only because of the joint work by all the three people together.&lt;br /&gt;&lt;br /&gt;So, it is simply unfair to attribute all the glory and fame for our research to "Rutkowska" or "Rutkowska and team", as many news portals did. Please don't forget to credit all the co-authors! If you really would like to use a generic term, then "Invisible Things Lab team" would probably serve better. &lt;br /&gt;&lt;br /&gt;Speaking of our team, I also have an announcement that starting this month our team has officially been extended by yet another person: Rong Fan from Beijing, China.&lt;br /&gt;&lt;br /&gt;Rong is a software engineer, focusing on Intel's hardware virtualization technology (VT). A few months ago he wrote to me with some advanced questions regarding the implementation of our New BluePill that we published after the last year's Black Hat. Turned out that Rong, as part of his after-hour activity, is porting Bluepill to VT-x. After he succeeded, we decided to share our &lt;a href="http://theinvisiblethings.blogspot.com/2008/03/kick-ass-hypervisor-nesting.html"&gt;nested virtualization code for AMD&lt;/a&gt; with him so that he could investigate how to do it on VT-x. And about 2 months ago Rong succeeded with implementing full nested virtualization support for our NBP on Intel VT-x! During that time Rong has had an opportunity to find out that working with ITL is quite fun, so he decided to quit his job at Lenovo and joined ITL full time. Right now Rong is busy adding nested VT-x support to a normal Xen hypervisor.&lt;br /&gt;&lt;br /&gt;So, Invisible Things Lab is all about the team work. The whole idea behind ITL is to gather together a bunch of smart people, so that we could all work on the most exciting problems together. Problems that might be too complex or time-consuming for just one person to solve. But it takes more then just money to get people to be creative and devote themselves to work. Getting recognition is one of the additional factors often needed. That's why ITL is not interested in "hiding" its employees, but rather in promoting their work and fairly crediting them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24586388-5145355901555942752?l=theinvisiblethings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theinvisiblethings.blogspot.com/feeds/5145355901555942752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24586388&amp;postID=5145355901555942752' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/5145355901555942752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/5145355901555942752'/><link rel='alternate' type='text/html' href='http://theinvisiblethings.blogspot.com/2008/08/teamwork-crediting.html' title='Teamwork &amp; Crediting'/><author><name>joanna</name><uri>http://www.blogger.com/profile/07657268181166351141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07162675826515680775'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24586388.post-2529149620297733085</id><published>2008-08-26T09:41:00.001+02:00</published><updated>2009-03-25T16:03:19.027+01:00</updated><title type='text'>Intel patches the Q35 bug</title><content type='html'>Yesterday Intel has published an &lt;a href="http://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00017&amp;languageid=en-fr"&gt;official advisory&lt;/a&gt; that addresses the Q35 bug and attack, that we used during Black Hat as one of the ways to subvert Xen 3.3 on a VT-d enabled system (the alternative way was to use the Xen-specific FLASK exploit, that worked even from an unprivileged domain).&lt;br /&gt;&lt;br /&gt;One small clarification though: in the advisory they stated that: "Software running administrative (ring 0) privilege can under certain circumstances change code running in System Management Mode." But in fact an attacker might also use this bug to directly modify the hypervisor memory, without jumping into the SMM first, just as we did it with our exploit. Also, in case of e.g. Linux systems, the Ring0 access is not strictly required to perform the attack, as it's just enough for the attacker to get access to the PCI config space of the device 0:0:0, which e.g. on Linux can be granted to usermode applications via the iopl() system call.&lt;br /&gt;&lt;br /&gt;You can download a new firmware for your motherboard from &lt;a href="http://downloadcenter.intel.com/Filter_Results.aspx?strTypes=all&amp;ProductID=2783&amp;OSFullName=OS+Independent&amp;lang=eng&amp;strOSs=38&amp;submit=Go!"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Intel did a good job on handling this bug - not only they recognized the importance of the attack, but also released the patch promptly. Quite positively surprising as for such a big company.&lt;br /&gt;&lt;br /&gt;So, now we're free to publish all the missing slides about how we exploit this vulnerability that we had to remove from our Black Hat presentation, as well as the exploit code. However, as I'm going to give 2 presentations at the upcoming &lt;a href="http://isf.no/index_net.htm"&gt;ISF conference&lt;/a&gt; in Sweden early next week, I thought it would be logical to wait with disclosing this material and present it at this conference, during my technical speech (I will also deliver the keynote for this conference). Of course, as soon as I will get back home (Thursday next week), we will publish the full slides, exploit codes and all the demos, as promised earlier.&lt;br /&gt;&lt;br /&gt;Speaking of speaking: also next month, Rafal will fly to Oregon, to Intel campus, for the Intel Virtualization Security Summit, where he will deliver a "compressed" version of our Xen 0wning Trilogy to the technical crowd of Intel employees. Rafal will provide some more details about the HyperGuard project that we do in cooperation with Phoenix Technologies. Also, in October, Alex will visit Kuala Lumpur and present an updated Bluepilling the Xen Hypervisor talk at the Hack In The Box conference.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24586388-2529149620297733085?l=theinvisiblethings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theinvisiblethings.blogspot.com/feeds/2529149620297733085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24586388&amp;postID=2529149620297733085' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/2529149620297733085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24586388/posts/default/2529149620297733085'/><link rel='alternate' type='text/html' href='http://theinvisiblethings.blogspot.com/2008/08/intel-patches-q35-bug.html' title='Intel patches the Q35 bug'/><author><name>joanna</name><uri>http://www.blogger.com/profile/07657268181166351141</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07162675826515680775'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>