Monday, September 23, 2013

Thoughts on Intel's upcoming Software Guard Extensions (Part 2)


In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first part of this article published a few weeks ago, I have discussed cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 basics of Intel SGX technology, and also discussed challenges with using SGX for securing desktop systems, specifically focusing on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problem of trusted input and output. In this part we will look at some ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r aspects of Intel SGX, and we will start with a discussion of how it could be used to create a truly irreversible software.

SGX Blackboxing – Apps and malware that cannot be reverse engineered?

A nice feature of Intel SGX is that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor automatically encrypts cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 content of SGX-protected memory pages whenever it leaves cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor caches and is stored in DRAM. In ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r words cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code and data used by SGX enclaves never leave cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor in plaintext.

This feature, no doubt influenced by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DRM industry, might profoundly change our approach as to who controls our computers really. This is because it will now be easy to create an application, or malware for that matter, that just cannot be reversed engineered in any way. No more IDA, no more debuggers, not even kernel debuggers, could reveal cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual intentions of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 EXE file we're about to run.

Consider cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following scenario, where a user downloads an executable, say blackpill.exe, which in fact logically consists of three parts:

  1. A 1st stage loader (SGX loader) which is unencrypted, and which task is to setup an SGX enclave, copy cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rest of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re, specifically cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 2nd stage loader, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n start executing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 2nd stage loader...
  2. The 2nd stage loader, which starts executing within cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 enclave, performs remote attestation with an external server and, in case cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 remote attestation completes successfully, obtains a secret key from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 remote server. This code is also delivered in plaintext too.
  3. Finally cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 encrypted blob which can only be decrypted using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 key obtained by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 2nd stage loader from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 remote server, and which contains cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual logic of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 application (or malware).

We can easily see that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is no way for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user to figure out what cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 encrypted blob is going to do on her computer. This is because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 key will be released by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 remote server only if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 2nd stage loader can prove via remote attestation that it indeed executes within a protect SGX enclave and that it is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original unmodified loader code that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 application's author created. Should one bit of this loader be modified, or should it be attempted to run outside of an SGX enclave, or within a somehow misconfigured SGX enclave, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 remote attestation would fail and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 key will not be obtained.

And once cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 key is obtained, it is available only within cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SGX enclave. It cannot be found in DRAM or on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 memory bus, even if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user had access to expensive DRAM emulators or bus sniffers. And cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 key cannot also be mishandled by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code that runs in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SGX enclave, because remote attestation also proved that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 loader code has not been modified, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 author wrote cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 loader specifically not to mishandle cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 key in any way (e.g. not to write it out somewhere to unprotected memory, or store on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 disk). Now, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 loader uses cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 key to decrypt cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 payload, and this decrypted payload remains within secure enclave, never leaving it, just like cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 key. It's data never leaves cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 enclave eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r...

One little catch is how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 key is actually sent to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SGX-protected enclave so that it could not be spoofed in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 middle? Of course it must be encrypted, but to which key? Well, we can have our 2nd stage loader generate a new key pair and send cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 public key to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 remote server – cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server will cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n use this public key to send cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual decryption key encrypted with this loader's public key. This is almost good, except for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact that this scheme is not immune to a classic main in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 middle attack. The solution to this is easy, though – if I understand correctly cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 description of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new Quoting and Sealing operations performed by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Quoting Enclave – we can include cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 generated public key hash as part of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 data that will be signed and put into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Quote message, so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 remote sever can be assured also that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 public key originates from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual code running in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SGX enclave and not from Mallory somewhere in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 middle.

So, what does cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 application really do? Does it do exactly what has been advertised by its author? Or does it also “accidentally” sniffs some system memory or even reads out disk sectors and sends cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 gacá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365red data to a remote server, encrypted, of course? We cannot know this. And that's quite worrying, I think.

One might say that we do accept all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 proprietary software blindly anyway – after all who fires up IDA to review MS Office before use? Or MS Windows? Or any ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r application? Probably very few people indeed. But cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 point is: this could be done, and actually some brave souls do that. This could be done even if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 author used some advanced form of obfuscation. Can be done, even if taking lots of time. Now, with Intel SGX it suddenly cannot be done anymore. That's quite a revolution, complete change of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rules. We're no longer masters of our little universe – cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 computer system – and now somebody else is.

Unless cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re was a way for “Certified Antivirus companies” to get around SGX protection.... (see below for more discussion on this).

...And some good applications of SGX

The SGX blackboxing has, however, some good usages too, beyond protecting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Hollywood productions, and making malware un-analyzable...

One particularly attractive possibility is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 “trusted cloud” where VMs offered to users could not be eavesdropped or tampered by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cloud provider admins. I wrote about such possibility two years ago, but with Intel SGX this could be done much, much better. This will, of course, require a specially written hypervisor which would be setting up SGX containers for each of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VM, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VM could aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365nticate to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user and prove, via remote attestation, that it is executing inside a protected and properly set SGX enclave. Note how this time we do not require cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hypervisor to aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365nticate to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 users – we just don't care, if our code correctly attests that it is in a correct SGX, it's all fine.

Suddenly Google could no longer collect and process your calendar, email, documents, and medial records! Or how about a tor node that could prove to users that it is not backdoored by its own admin and does not keep a log of how connections were routed? Or a safe bitcoin web-based wallet? It's hard to overestimate how good such a technology might be for bringing privacy to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 wide society of users...

Assuming, of course, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re was no backdoor for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NSA to get around cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SGX protection and ruin this all goodness...(see below for more discussion on this).

New OS and VMM architectures

In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 paragraph above I mentioned that we will need specially written hypervisors (VMMs) that will be making use of SGX in order to protect cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user's VMs against cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365mselves (i.e. against cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hypervisor). We could go furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r and put ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r components of a VMM into protected SGX enclaves, things that we currently, in Qubes OS, keep in separate Service VMs, such as networking stacks, USB stacks, etc. Remember that Intel SGX provides convenient mechanism to build inter-enclave secure communication channels.

We could also take cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 “GUI domain” (currently this is just Dom0 in Qubes OS) and move it into a separate SGX enclave. If only Intel came up with solid protected input and output technologies that would work well with SGX, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n this would suddenly make whole lots of sense (unlike currently where it is very challenging). What we win this way is that no longer a bug in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hypervisor should be critical, as it would be now a long way for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker who compromised cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hypervisor to steal any real secret of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user, because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are no secrets in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hypervisor itself.

In this setup cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 two most critical enclaves are: 1) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GUI enclave, of course, and 2) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 admin enclave, although it is thinkable that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 latter could be made reasonably deprivileged in that it might only be allowed to create/remove VMs, setup networking and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r policies for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m, but no longer be able to read and write memory of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VMs (Anti Snowden Protection, ASP?).

And... why use hypervisors? Why not use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same approach to compartmentalize ordinary operating systems? Well, this could be done, of course, but it would require considerable rewrite of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 systems, essentially turning cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m into microkernels (except for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 microkernel would no longer need to be trusted), as well as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 applications and drivers, and we know that this will never happen. Again, let me repeat one more time: cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole point of using virtualization for security is that it wraps up all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 huge APIs of an ordinary OS, like Win32 or POSIX, or OSX, into a virtual machine that itself requires orders of magnitude simpler interface to/from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 outside world (especially true for paravirtualized VMs), and all this without cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 need to rewrite cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 applications.

Trusting Intel – Next Generation of Backdooring?

We have seen that SGX offers a number of attractive functionality that could potentially make our digital systems more secure and 3rd party servers more trusted. But does it really?

The obvious question, especially in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 light of recent revelations about NSA backdooring everything and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 kitchen sink, is whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r Intel will have backdoors allowing “privileged entities” to bypass SGX protections?

Traditional CPU backdooring

Of course cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y could, no question about it. But one can say that Intel (as well as AMD) might have been having backdoors in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir processors for a long time, not necessarily in anything related to SGX, TPM, TXT, AMT, etc. Intel could have built backdoors into simple MOV or ADD instructions, in such a way that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y would automatically disable ring/page protections whenever executed with some magic arguments. I wrote more about this many years ago.

The problem with those “traditional” backdoors is that Intel (or a certain agency) could be caught using it, and this might have catastrophic consequences for Intel. Just imagine somebody discovered (during a forensic analysis of an incident) that doing:

MOV eax, $deadbeef
MOV ebx, $babecafe
ADD eax, ebx

...causes ring elevation for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 next 1000 cycles. All cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processors affected would suddenly became equivalents of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 old 8086 and would have to be replaced. Quite a marketing nightmare I think, no?

Next-generation CPU backdooring

But as more and more crypto and security mechanisms got delegated from software to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 more likely it becomes for Intel (or AMD) to insert really “plausibly deniable” backdoors into processors.

Consider e.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recent paper on how to plant a backdoor into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Intel's Ivy Bridge's random number generator (usable via cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new RDRAND instruction). The backdoor reduces cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual entropy of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 generator making it feasible to later brute-force any crypto which uses keys generated via cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 weakened generator. The paper goes into great lengths describing how this backdoor could be injected by a malicious foundry (e.g. one in China), behind cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Intel's back, which is achieved by implementing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 backdoor entirely below cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 HDL level. The paper takes a “classic” view on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 threat model with Good Americans (Intel engineers) and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Bad Chinese (foundry operators/employees). Nevercá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365less, it should be obvious that Intel could have planted such a backdoor without any effort or challenge described in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 paper, because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y could do so at any level, not necessarily below HDL.

But backdooring an RNG is still something that leaves traces. Even though cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 backdoored processor can apparently pass all external “randomness” testes, such as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NIST testsuite, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y still might be caught. Perhaps because somebody will buy 1000 processors and will run cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m for a year and will note down all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 numbers generated and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n conclude that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 distribution is quite not right. Or something like that. Or perhaps because somebody will reverse-engineer cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor and specifically cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 RNG circuitry and notice some gates are shorted to GND. Or perhaps because somebody at this “Bad Chinese” foundry will notice that.

Let's now get back to Intel SGX -- what is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual Root of Trust for this technology? Of course, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor, just like for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 old ring3/ring0 separation. But for SGX cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is additional Root of Trust which is used for remote attestation, and this is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 private key(s) used for signing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Quote Messages.

If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 signing private key somehow got into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hands of an adversary, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 remote attestation breaks down completely. Suddenly cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 “SGX Blackboxed” apps and malware can readily be decrypted, disassembled and reverse engineered, because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 adversary can now emulate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir execution step by step under a debugger and still pass cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 remote attestation. We might say this is good, as we don't want irreversible malware and apps. But cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n, suddenly, we also loose our attractive “trusted cloud” too – now cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is nothing that could stop cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 adversary, who has cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 private signing key, to run our trusted VM outside of SGX, yet still reporting to us that it is SGX-protected. And so, while we believe that our trusted VM should be trusted and unsniffable, and while we devote all our deepest secrets to it, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 adversary can read cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m all like on a plate.

And cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 worst thing is – even if somebody took such a processor, disassembled it into pieces, analyzed transitor-by-transitor, recreated HDL, analyzed it all, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n still it all would look good. Because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 backdoor is... cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 leaked private key that is now also in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hands of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 adversary, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is no way to prove it by looking at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor alone.

As I understand, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole idea of having a separate TPM chip, was exactly to make such backdoor-by-leaking-keys more difficult, because, while we're all forced to use Intel or AMD processors today, it is possible that e.g. every country can produce cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir own TPM, as it's million times less complex than a modern processor. So, perhaps Russia could use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir own TPMs, which cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y might be reasonably sure cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y use private keys which have not be handed over to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NSA.

However, as I mentioned in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first part of this article, sadly, this scheme doesn't work that well. The processor can still cheat cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 external TPM module. For example, in case of an Intel TXT and TPM – cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor can produce incorrect PCR values in response to certain trigger – in that case it no longer matters that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TPM is trusted and keys not leaked, because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TPM will sign wrong values. On cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r hand we go back now to using “traditional” backdoors in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processors, whose main disadvantage is that people might got cought using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m (e.g. somebody analyzed an exploit which turns out to be triggering correct Quote message despite incorrect PCRs).

So, perhaps, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 idea of separate TPM actually does make some sense after all?

What about just accidental bugs in Intel products?

Conspiracy cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ories aside, what about accidental bugs? What are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chances of SGX being really foolproof, at least against those unlucky adversaries who didn't get access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 private signing keys? The Intel's processor have become quite a complex beasts cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se days. And if you also thrown in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Memory Controller Hub, it's unimaginably complex beast.

Let's take a quick tour back discussing some spectacular attacks against Intel “hardware” security mechanisms. I wrote “hardware” in quotation marks, because really most of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se technologies is software, like most of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 things in electronics cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se days. Nevercá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365less cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 “hardware enforced security” does have a special appeal to lots of people, often creating an impression that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se must be some ultimate unbreakable technologies....

I think it all started with our exploit against Intel Q35 chipset (slides 15+) demonstrated back in 2008 which was cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first attack allowing to compromise, ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rwise hardware-protected, SMM memory on Intel platforms (some ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r attacks against SMM shown before assumed cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SMM was not protected, which was cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 case on many older platforms).

This was cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n shortly followed by anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r paper from us about attacking Intel Trusted Execution Technology (TXT), which found out and exploited a fact that TXT-loaded code was not protected against code running in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SMM mode. We used our previous attack on Q35 against SMM, as well as found a couple of new ones, in order to compromise SMM, plant a backdoor cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n compromise TXT-loaded code from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re. The issue highlighted in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 paper has never really been correctly patched. Intel has spent years developing something cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y called STM, which was supposed to be a thin hypervisor for SMM code sandboxing. I don't know if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Intel STM specification has eventually been made public, and how many bugs it might be introducing on systems using it, or how much inaccurate it might be.

In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following years we presented two more devastating attacks against Intel TXT (none of which depending on compromised SMM): one which exploited a subtle bug in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor SINIT module allowing to misconfigure VT-d protections for TXT-loaded code, and anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r one exploiting a classic buffer overflow bug also in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor's SINIT module, allowing this time not only to fully bypass TXT, but also fully bypass Intel Launch Control Policy and hijack SMM (several years after our original papers on attacking SMM cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 old bugs got patched and so this was also attractive as yet anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r way to compromise SMM for whatever ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r reason).

Invisible Things Lab has also presented first, and as far as I'm aware still cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 only one, attack on Intel BIOS that allowed to reflash cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS despite Intel's strong “hardware” protection mechanism to allow only digitally signed code to be flashed. We also found out about secret processor in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chipset used for execution of Intel AMT code and we found a way to inject our custom code into this special AMT environment and have it executed in parallel with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 main system, unconstrained by any ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r entity.

This is quite a list of Intel significant security failures, which I think gives something to think about. At cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 very least that just because something is “hardware enforced” or “hardware protected” doesn't mean it is foolproof against software exploits. Because, it should be clearly said, all our exploits mentioned above were pure software attacks.

But, to be fair, we have never been able to break Intel core memory protection (ring separation, page protection) or Intel VT-x. Rafal Wojtczuk has probably came closest with his SYSRET attack in an attempt to break cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ring separation, but ultimately cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Intel's excuse was that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problem was on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 side of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS developers who didn't notice subtle differences in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 behavior of SYSRET between AMD and Intel processors, and didn't make cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir kernel code defensive enough against Intel processor's odd behavior.

We have also demonstrated racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r impressive attacks bypassing Intel VT-d, but, again, to be fair, we should mention that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacks were possible only on those platforms which Intel didn't equip with so called Interrupt Remapping hardware, and that Intel knew that such hardware was indeed needed and was planning it a few years before our attacks were published.

So, is Intel SGX gonna be as insecure as Intel TXT, or as secure as Intel VT-x....?

The bottom line

Intel SGX promises some incredible functionality – to create protected execution environments (called enclaves) within untrusted (compromised) Operating System. However, for SGX to be of any use on a client OS, it is important that we also have technologies to implement trusted output and input from/to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SGX enclave. Intel currently provides little details about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 former and openly admits it doesn't have cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 later.

Still, even without trusted input and output technologies, SGX might be very useful in bringing trust to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cloud, by allowing users to create trusted VMs inside untrusted provider infrastructure. However, at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same time, it could allow to create applications and malware that could not be reversed engineered. It's quote ironic that those two applications (trusted cloud and irreversible malware) are mutually bound togecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r, so that if one wanted to add a backdoor to allow A/V industry to be able to analyze SGX-protected malware, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n this very same backdoor could be used to weaken cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 guarantees of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 trustworthiness of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user VMs in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cloud.

Finally, a problem that is hard to ignore today, in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 post-Snowden world, is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ease of backdooring this technology by Intel itself. In fact Intel doesn't need to add anything to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir processors – all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y need to do is to give away cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 private signing keys used by SGX for remote attestation. This makes for a perfectly deniable backdoor – nobody could catch Intel on this, even if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor was analyzed transistor-by-transistor, HDL line-by-line.

As a system architect I would love to have Intel SGX, and I would love to believe it is secure. It would allow to furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r decompose Qubes OS, specifically get rid of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hypervisor from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TCB, and probably even more.

Special thanks to Oded Horowitz for turning my attention towards Intel SGX.

13 comments:

Anonymous said...

With regard to Intel giving keys to NSA, it is inconceivable that NSA would not subpoena cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m. Therefore, one can rest assured that NSA has cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y keys.

jake said...

"So, perhaps Russia could use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir own TPMs, which cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y might be reasonably sure cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y use private keys which have not be handed over to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NSA."

could an external device, e.g. USB-attached, work as an independent TPM? possibility of MITM seems generic to any TPM-like device, interested to hear your thoughts on this.

Joanna Rutkowska said...

@jake: I don't think a USB-based TPM could be of any use, especially in a dynamic scheme, such as TXT or SGX, becuase cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is no equivalent of a "special wire" from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 device which could be used to inform cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 device that a trusted event occurred (e.g. SENTER needs to inform cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TPM that is should reset certain PCR registers). In case of a USB device, I'm afraid, such signals could be just spoofed by malware.

Raoul Strackx said...

@jake: cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are also similar (hardware) attacks against independent TPMs were you spoof certain events (e.g. reboots) (check out this paper if you're interested)

@joanna: great paper about SGX!
It is indeed most likely that an enclave has complete control over all memory, with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 exception of ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r enclaves, and can snoop everything in memory. However, this is not required. In principle, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 untrusted OS could set up virtual memory where cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 enclave must reside. Besides, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 enclave only cares that it is loaded somewhere in memory and with it's pages in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 correct order. And that it's pages remain in that order. That way, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS, even though untrusted, can control what unprotected memory cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 loaded enclave can access and what not. This is similar to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Fides architecture (disclaimer: I'm a co-author of that paper). It'll be very interesting to see how enclaves are exactly implemented. Can't wait for some more details from Intel.

Mike cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 goat said...

Hi Joanna, excellent post on SGX. It remains to be seen just how well cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se extensions will work or how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y'll be implemented in real life. I personally believe we should throw out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole x86 architecture racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r than cobbling togecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r "trusted" extensions.

Anonymous said...

The Intel programming manual is available here:

http://software.intel.com/sites/default/files/329298-001.pdf

/CF

Anonymous said...

Great analysis :)
One thing about those enclaves is that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y run at ring 3 and anything cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y do with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 external world is visible to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS. You noted this regarding cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 I/O, but if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is malware in an enclave - you can know exactly what it is doing (beside reading memory probably). every system call can be tracked, so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 risk of malware is not that big (maybe a 'sleeping' malware that wait for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 right moment is a problem, but still you can monitor this).

Anonymous said...

I wonder if SGX can protect against buffer overflow control-hijack attacks or ret-2-libc attacks.

Anonymous said...

Have I missed something or is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 only thing which stops me from emulating cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor that I don't know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 secret signing key?

If so this would mean that when this technology is used widely this key would be targeted by many groups.
And in contrast to software keys cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re would be no change to replace it.

Anababa said...
This comment has been removed by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 author.
Anababa said...

SGX is now in Intel SDM.

Anababa said...

A question, Joanna, you mentioned that we're not sure if VT-x has a flaw that lead to EPT or functionalities bypassed.

Recently actually some of ideas are coming out in my mind to consider if we can break VT-x or get something internals for VT-x behaviors. Do you think it is valid thinking? see my blog -
http://hypervsir.blogspot.com/2014/09/thoughts-on-vmxon-and-vmcs-regions-in.html

nolandda said...

I'm sure you are up on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 newest research, but just in case you missed it here is an interesting paper/presentation from Microsoft Research attempting, with some success, to use SGX to create a "trusted cloud" execution environment.