Tuesday, June 02, 2009

More Thoughts on CPU backdoors

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

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

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

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

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

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

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

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

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

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

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

Magic = MAGIC (Date, IntelSecretKey).

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

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

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

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

Magic = MAGIC (UniqeValueInEeprom, IntelSecretKey)

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

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

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

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

25 comments:

Fred said...

The paper you refer to is available *freely* at this following location ;)

http://actes.sstic.org/SSTIC08/Bogues_Piegeages_Processeurs_Consequences_Securite/SSTIC08-article-Duflot-Bogues_Piegeages_Processeurs_Consequences_Securite.pdf

However, it's in french.

vierito5 said...

Same thoughts here, I think cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r more effective backdoor approachments. Definetely a CPU backdoor would be leaked one way or anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r.

engur said...

Anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r good presentation about this.

http://usacac.army.mil/CAC2/CEW/repository/presentations/6_%20ICS-2008-SNL-Berg.pdf

Joanna Rutkowska said...

@vierito5: your statement seems to be incoherent: if you believe cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are even more sophisticated backdoors than I propose, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n why are you so sure cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y would be leaked out? How would you approach "detection" even of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 backdoors I proposed?

vierito5 said...

I didn't mean to say more sophisticated only more effective in a real world without people bocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ring about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m. I think hardware backdoors will increase in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 future and a lot of people will become interested in this field but we already are full of software backdoors.

As you say, Intel and AMD should take very careful steps if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y pretend to include such technologies because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are studying each ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r's designs despite cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can't probably fully reverse engineer cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m.

Hardware reverse engineering and chip analyzing is growing, so I'm sure cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se kind of 'features' would be leaked some time if existed.

Let's propose cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 example that Intel could probably had included a hardware backdoor but AMD doesn't, that would reach front page on digg.com.
If an "average user" knows that, although not being sure of it he's gonna jump and buy AMD CPUs, he bocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs about it and he can choose. But here's cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 point, that "average user" also knows that very often trojans and backdoors are included in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cracks he uses every day to make his Windows non-genuine apps work, and he doesn't care at all!! He is still gonna use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m.

What I want to say is, that for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 backdoor operator, let's say... NSA, is more effective (not more sophisticated of course) to include one in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bittorrent of a non-genuine version of Windows than making, let's say Intel, to include a backdoor in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir chips. It is just easier! and people would still download and install that Windows version. There are tons of cracks filled with malware, average user doesn't care, he only wants to use that software for free. That's what make that kind of backdoors more effective.

On your approachment to CPU backdoors, I do think cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y would need something like a built-in eeprom as you have great explained.

Owen said...

Don't most modern processors have reprogrammable microcodes? I think that interface is usually cryptographically protected, but if you can reprogram cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 microcode for unprivileged instructions into performing privileged operations, isn't that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same thing? Isn't that *already* a backdoor for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 vendor?

Joanna Rutkowska said...

@Ownen: No, because you need to execute a privileged instruction (WRMSR IIRC) in order to load a new microcode.

Anonymous said...

King (http://www.usenix.org/event/leet08/tech/full_papers/king/king_html/) implemented backdoors on real hardware (yes, an FPGA counts as hardware).

Joanna Rutkowska said...

@anon: FPGA device is hardware indeed, but if you create something *for* an FPGA device, this something is a "program" for how FPGA should configure cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual gates. So, an FPGA-based application is more of a software cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n hardware to me (with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 difference that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is no instruction interpretation being done by any CPU).

Also what King at el. did was again just a simulation -- it wasn't a processor that you could put into people's machines (replacing mainstream CPUs). There is a very long road from what cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y did to producing a *real* CPU -- road counted in billions of dollars.

Othman Esoul said...

Chip maker have always implemented undocumented features in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir processors.cpu bugs, back doors, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is no reason not to believe that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y cannot embed such disguised features or backdoors. The question is has to with this: Can we determine whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se features malicious or not.

However, I believe smart card chips can make cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se cpu-based backdoors more realistic in our world. RAM, ROM, EEPROM all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re lol..

Joanna Rutkowska said...

@Othman: Why do you believe "smart card chips can make cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se cpu-based backdoors more realistic in our world"?

Let me point out here, that this blog is not about any religion or something that could be based on a *belief*. No ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r Gods besides logical reasoning are allowed on this website!

Othman Esoul said...

It's not a religious belief lol... I am saying (based on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 information I know) that certain chips on smart cards may offer better hardware resources and motivations to implement cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se backdoors. and this my be more realistic based on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 daily use of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se chips in every aspect of our life. However, maybe it is worth knowing more about smart and turn this belief into reality. Additionally, don't forget cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are many papers and arguments (some you referred to) are actually based on hypocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365tical situations...

Othman Esoul said...

Frankly, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 answer to your question will be part of a research addressing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 possibility of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 logical and physical attacks on certain chips on smart cards.

Eric Filiol said...

Hi Joanna
Well about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Springer policy it is just acadmic way of management of scientific results. Papers must be reviewed in order to be sure that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 results are valid and it has a cost for Springer(note that authors, reviewers and editors are working for free. Ultimately it is not your case -:).
I remember cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time when yourself was asking for US $ 200 000 to disclose your code. Can you assert that you have published everthing at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 present time -:)

By cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 way, aside some useless buzz I really appreciate your work

Eric Filiol
Journal in Computer Virology
Editor-in-chief

Joanna Rutkowska said...

@eric:

"I remember cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time when yourself was asking for US $ 200 000 to disclose your code."

This is incorrect -- I asked for money to *develop* cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code, not to disclose something I had!

I don't work for free! Yet, I still have managed to publish lots of code I, and my team, have been working on in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recent years. Almost no ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r security researchers do cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 similar!

Eric Filiol said...

Hi Joanna
Well I must have been victim of some buzz once again -:)
Thanks for your answer again

Regards
Eric

Martin T said...

Thanks for a good post and interesting thoughts.

I like cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 idea of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 challenge-respond aspect. I have anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r proposal for a CPU backdoor that could also be implemented in this fashion.

Instead of implementing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU backdoor in terms of magic register values/instructions which require you to be able to execute code on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 target machine (unfortunately not that hard with all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bugs out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re...) one could perhaps implement it in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 memory fetch mechanism of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU. The CPU fetches data and code from memory in 16-byte blocks. At cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 simplest, one could define a special, magic 16-byte block that when fetched by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU would cause it to do something special, like entering ring 0.

Such a mechanism might be more easily exploited than cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code/register approach. For instance, one might be able to trigger it simply by submitting a TCP/IP packet containing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 properly aligned prefix. One might even be able to trigger it via a web form.
Firewall software would probably not offer any protection, since cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 firewall would have to fetch cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TCP/IP packet from memory in order to inspect it, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365reby triggering cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 exploit itself, even if it rejects cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 packet. Automatic prefetching by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU's make this much more difficult (if not impossible) for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 software to control. Alignment of data shouldn't be a problem since one can simply submit 16 different packets with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 magic value aligned in different ways. Or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 values could be defined so that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y work even if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are rotated or split over a memory boundary (a simple state machine inside cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU could keep track of it).

If one was to implement such a mechanism, one might as well make it more flexible ;) The mechanism could cause cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU to enter a special attack mode where cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 data stored in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 memory addresses that follow would be executed in ring 0, or it could be a more complicated protocol where cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 contents of magic values would get accumulated in a memory store in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU that would get executed when a final trigger prefetch was encountered. Likely, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual magic values wouldn't be a specific value. Racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r, it might be that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are many magic values, all identified by having some special cryptographic structure. For instance, it could be that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last 8 bytes of a block would have to be a MAC over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first 8 bytes etc. using a special MAC key contained inside of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU. The first 8 bytes (likely encrypted cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365mselves) could cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n be used for transmitting information to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual exploit, enabling a more complex behavior (i.e. logging of 'interesting' data over longer periods of time, with support for some type of back channel).

Of course, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system has to be made so that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 mechanism is never triggered accidentally. This could be achived in many ways. Since an attacker will likely be able to feed essentially an unlimited number of fetches to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 victim CPU (due to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ease of getting memory fetched on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 victim CPU) one could make a protocol requiring several specific magic values to be sent after anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r to make cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU enter cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 mode where it would permit execution of functional magic values.

It doesn't even stop at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU. One could imagine similar exploits in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chipset - cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chipset could have a mini-CPU inside that is activated by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se memory patterns. Since cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chipset has access to all hardware (including network card) and memory it would be easy for it to transmit a memory dump to anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r computer etc.

Just some thought. I agree that it is in some sense useless to talk about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se things since it's hard to detect cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m, at least as long as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are not activated.
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, it is good to create awareness of what is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365oretically possible. I don't have reason to believe that this has been or has not been implemented in commercial CPU's (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are many concerns in addition to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 technical), but since it is definitely technically possible it seems likely that it will happen some day. Maybe all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se blog posts about it might actually make it happen sooner racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r than later ;)

Joanna Rutkowska said...

@Martin:

Thanks for a good comment.

BTW, while reading it, I had a feeling that I already read about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 idea of memory-based triggering somewhere else... probably in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 King's paper.

Martin T said...

@Joanna: Intersting, will try and find it!

I have an idea for a possible remedy - at least in security critical setups. A CPU can not really do any damage in itself (after all, it is just a piece of silicon with some pins!), it relies on having ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r hardware around it to carry out its commands. If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 behaviour of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU was specified (as it used to be) down to exactly how it behaves in response to different programs (i.e. in which order does it fetch memory, when does it prefetch etc.) it should be possible for independent manufacturers to produce identical CPU's that could run at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same time. A computer would have to be equipped with at least two CPU's from different vendors. A couple of extra "surveillance chips" (from different vendors) could monitor cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 behaviour of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU's - both CPU's take cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same input so should always give cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same output if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are bugfree and honest. The chips should have a way to halt execution and warn cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 operator in case of discrepancy.
To avoid this happening too often due to honest bugs, all new CPU's should be carefully screened against reference CPU's etc. with a wide range of workloads to make sure cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are in fact close to bug free at least under most use. This is much easier to show than to show cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y don't have deliberate exploits which by design would be hard to create a test case for without knowing it.

This would also lead to many ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r benefits - hopefully less buggy CPU's. The redundancy could also be used to guarentee against hardware failure as is done today, but with CPU's from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same vendor. If halted execution is undesirable cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 device could contain CPU's from 3 or more vendors so it could continue execution even if an exploit/bug was triggered.

Maybe not be realistic for common PC's but for certain use (military etc.) it might be useful.

Joanna Rutkowska said...

@Martin:

Loic, in his article (that I referred in my post) actually mentions this potential solution. In practice I don't expect this happening for any general-purpose processors, like e.g. IA32-based. When you look at AMD vs. Intel and comparable processor generations, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are dramatically different -- support different kind of extensions, etc.

Alfredo said...

FPGA CPUs are certainly not hardware, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are even called soft-cpus.

To be hardware, it must be at least a gate-level CMOS mask, but you can experiment and simulate it with an FPGA much faster than qemu...

If you are going to build a universal word-domination backdoor, I would look for something slightly more high-level than cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU.

Martin T said...

@Alfred: Isn't it just a question of how you define hardware? As such cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 discussion isn't very interesting. I don't see any "natural" definition that makes FPGA's distinct. "Standard" CMOS CPU's are made from masks that can be represented to full precision on a computer. The masks are derived from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same syncá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365sis languages used for FPGA's (of course with differences in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 type of syncá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365sis done). In both cases, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 richness of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 language in question is mapped to something simple, be it LUT configurations (FPGA's) or transistor configurations (CMOS). It's just a different set of primitives used for realizing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 design. Furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rmore, standard CPU's are filled with microcode and software cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365mselves, blurring cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 distinction even furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r.

@Joanna. I agree. If inspection with electron microscope truly was possible, it might be possible to audit cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VHDL code and syncá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365sis tools, repeat cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 syncá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365sis and compare cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 results to what was observed from random samples of different CPU batches (to verify cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are produced from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 correct VHDL code).

engur said...

Intel® atom™ processor core made FPGA-syncá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365sizable
check it, http://portal.acm.org/citation.cfm?id=1508128.1508160

Rob B said...

Actually all CPU’s have back doors (at least since I been in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 industry back to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 P1 days), The back doors are fully documented for those of us building / designing system boards and sign system manufacture NDEs. Their primary purposes are for debugging and wear leveling cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 boards. The back doors give you full access of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS, CPU firmware, all CPU states, and direct memory access out side of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS. The Back door access is actually hardware implemented, and by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 agreements that a manufactures sign cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hardware to access cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 back door is not supposed installed on production boards. That is why when you buy system boards (Evan cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 “Ultra Deluxe” models) you will see missing componentry around cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU. There have been some exceptions where a manufacture screwed up and left cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 required back door hardware implemented on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 production runs. There have been no publicly recorded screw ups like (that I know of) this since one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 old P4 Abit models (circa 2003-4).

To cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 guy above, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 micro codes you are thinking of are CPU specific extension for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS. It is never actually written to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU. By design cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU should be flashed only once in it existence, after cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 elctro-cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rmal diagnostics during manufacture. The BIOS micro codes tell cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system how to avoid run specific documented errata that would cause system issues.

Martin T said...

@Rob: Firstly, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se backdoors are hardware features, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can't (hopefully) be activated by software means as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ones discussed here. I think even on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 commercial boards you can put an ICE between CPU and socket to analyze bus/memory traffic etc. but it would require physical modification of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 machine. An ICE is quite expensive too! However, I wonder what would happen if an ICE'd machine was used for TXT, i.e. if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU would refuse to enter SMS mode with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ICE cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re or it would give different PCR values. If not, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n one could abuse e.g. remote attestation into believing you were running some code and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n modify it using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ICE. Same for DRAM "ICE's".


On microcode you are actually wrong. Since Pentium Pro, Intel's CPU's have had a microcode update feature allowing into Intel to correct various errata. In Intel's errata sheet you will sometimes notice cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sentence "The BIOS may carry a fix to this errata" or something like that.
These microcode updates are incorporated into BIOS updates that are installed by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 end user. The BIOS cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n updates cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU on every boot (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 effect only lasts till cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU is reset). Intel has fixed errata that way.

Unfortunately many mainboard manufacturers 'abandon' cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir boards quite quickly and don't produce new BIOS updates containing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 microcode updates. For this reason, both Linux and Windows has a microcode update driver that can even install cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 microcode updates after cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system is booted. The o/s simply has a big database of microcodes for various CPU's and will which if it has newer code than currently loaded.

The microcode itself is encrypted (at least on Intel) and probably signed or MAC'ed by some means to prevent unauthorized updates. I'm not aware of any exploits of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 feature.

AMD also has this feature, and at least in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 past (2004-ish) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 updates were not encrypted, and as far as I've read some researcher succeeded in loading custom upgrades sometimes causing erratic behaviour of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU, crashes etc. I don't think cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y succeeded in doing anything productive with it.