Monday, December 06, 2010

Update on Qubes

It's been a bit quiet on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Qubes development front for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last 2 months. The reason for this was that Rafal and myself got fully engaged in a new commercial research project. After all, we do need to make money somehow, so that we could later spend cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m on funding Qubes development :)

But this new engagement is actually closely related to what we do with Qubes (i.e. how new hardware technologies allow to build more secure OSes), so it's not like we're abandoning Qubes, as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 experience we get with this research project will surely be useful for us when designing and implementing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Qubes 2.0 architecture.

In order to continue with Qubes, we've decided to hire some Linux programmers, while Rafal and I will continue with our research project over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 coming months. We've decided to start a cooperation with anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r Polish computer outfit, TLS Technologies, who specializes in advanced systems design and implementation.

There are a couple of people people from TLS engaged in Qubes, and you will soon "meet" cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m on qubes-devel, in our wiki, and of course, you will see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir contributions in our git repos.

The plan is to have Beta 1 released sometime in January 20102011. The two important features that will be implemented first, and that will make it into Beta 1 (apart for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 long-awaited installer) are: Firewall VMs, and support for templates for service VMs. Stay tuned for more details soon!

If everything goes smoothly, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n we should expect Qubes 1.0 sometime at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 end of Q1 2011...

Wednesday, October 06, 2010

Qubes Alpha 3!

We have just uploaded cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new packages for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Qubes Alpha 3 milestone. A lot of under cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hood work went into this release, including:
  • Redesigned networking and NetVM support (for VT-d system)
  • Reasonably stable S3 sleep support (suspend-to-RAM), that works even with a NetVM!
  • Improved GUI virtualization (all known bugs fixed finally!)
Disposable VMs are really a killer feature IMO. The screenshot below shows cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user's experience:

The user righ-clicks on a PDF file, chooses "Open in Disposable VM", and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n waits 1... 2... 3... 4 seconds (assuming a reasonably modern laptop) and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 document automagically opens in a fresh new Disposable VM. If you make some changes to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 document (e.g. if it was a PDF form, and you edited it), those changes will propagate back to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original file in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original AppVM.

So, within 4-5 seconds, Qubes creates a new VM, boots it up (actually refreshes from a savefile), copies cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 file in question to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VM, and finally opens cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 application that is a registered MIME handler for this type of documents, e.g. a PDF viewer. We're pretty confident this time could be furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r decreased down to some 2 seconds, or maybe even less. This is planned for some later Beta release.

Dynamic memory balancing allows to better utilize system physical memory by moving it between running AppVMs in realtime, according to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VM's real needs. This allows to run more VMs, compared to a scheme with static memory allocation, and also dramatically eliminates system hiccups, that ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rwise occur often in a static scheme when one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VMs is short of memory and initiates swapping.

The screenshot above shows cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 memory usage on my 6GB laptop when writing this blog post. As you can see I can easily run a dozen of AppVMs (most users will not need that many, but I'm a bit more paranoid I guess ;) and could probably even start a few more if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re was such a need (e.g. open some Disposable VMs). Of course, this all depends on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual type of workload cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user runs in each VM - most of my AppVMs run just one or two applications, usually a Web browser (Firefox), but some, e.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 work, and personal AppVMs run much more memory-hungry applications such as Open Office, or Picasa Photo Browser. I very rarely see more than 1 GB of memory allocated to a single VM, though. Generally speaking, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new memory management in Qubes works pretty nice.

Currently, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 biggest slow-down factor for Qubes is somehow poor disk performance, most likely caused by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 joint impact of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Xen backend, Linux dm, and kcryptd (we use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 simplest possible Xen block backend for security reasons, will move to more sophisticated backends when we introduce untrusted storage domain in Qubes 2.0).

Now, most of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 under-cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365-hood work for Qubes 1.0 seems to be complete, and now it time for all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 polishing of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user experience, which will be cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 main focus of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 upcoming Beta development. Just reminding that we're currently looking to hire developers for this effort.

The Installation instructions can be found here. Enjoy!

Tuesday, September 28, 2010

ITL is hiring!

We're looking to hire one or two full time developers, who will be working on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 open source version of Qubes OS, with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 primary task of advancing it from Alpha to Beta stage, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n finally to a production quality version.

We're looking to hire developers, not necessarily security researchers! Specifically we expect cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following from candidates:
  • Many years of experience with Linux/GNU development, including system-level and kernel-level Linux development, documented by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual projects,
  • Familiarity with virtualization technologies, and specifically with Xen hypervisor,
  • Basic understanding of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Qubes architecture and excitement about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 project :)
  • Product-oriented approach (polishing, testing, packaging, understanding of user needs),
  • Good communication skills in written English
In return we offer cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following benefits:
  • Decent, full-time salary,
  • Opportunity to be part of a renown security team,
  • Opportunity to work on an exciting product,
  • Work on a GPLed project with all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 benefits it gives to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 developer (visibility, rights to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code)
If you're interested in joining our team, please send a message to joanna at invisiblethingslab.com.

Please do not send typical resumes: don't write about schools you finished, certificates you obtained, driving license, scuba trainings, etc. We are only interested in a short bio (keep it below 100 words please), and links to your past or current projects. Include your geographic location.

While it would be great if you were based in Warsaw (or somewhere in Poland), as it would allow for regular face-to-face meetings, this is not a critical factor. ITL doesn't have a physical office, and everybody work from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir apartments, so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is no need to relocate to Warsaw, in case you happened to be based somewhere else.

Monday, September 13, 2010

On Thin Clients Security

I'm constantly being asked about it, and so I thought I would write a handy blog post, so I could just referrer to it in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 future, when yet ancá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r person asks me if I think cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 use of Thin Clients is a game-changer to desktop security...

It is not! Thin Clients do not improve your desktop security in any way, and that's because:

  1. You still run a regular full-blown OS, such as Widows and all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 regular applications, such as those buggy PDF readers, Web browsers, etc - it's just you run cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m all on some corporate server, racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r on your laptop. The fact that you run cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 corporate server, doesn't make it any less prone to compromises, compared to if you run it locally on your laptop.


  2. A compromise of your laptop, even if it's just a dump terminal, is still fatal! This is because if your laptop's kernel (or MBR, or BIOS, or some PCI device's firmware, or GPU) is compromised, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker can intercept/steal/spoof all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 data that you work on remotely, because it is still your laptop that processes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 input (keystrokes, mouse events) and output (pixels). So, an Evil Maid attack on your laptop when you use it as a Thin Client, would be just as devastating, as it is ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rwise (and don't fool yourselves that crypto tokens can help)

We really need secure end-user systems, even if we just want to use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m as dump terminals only! There is really no way we could skip this step (and e.g. focus only on infrastructure, or services security).

Thursday, September 09, 2010

(Un)Trusting your GUI Subsystem

Why do we need secure desktop systems? Why support from hardware is necessary to build secure desktop OSes? Does virtualization make things more, or less complex? Why Dynamic RTM (Intel TXT) is better than Static RTM? Can we have untrusted GUI domain/subsystem?

I tried to cover those questions in my recent keynote at ETISS, and you can grab cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 slides here.

Particularly, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 slide #18 presents cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 idealistic view of an OS that could be achieved through cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 use of hardware virtualization and trusted boot technologies. It might look very similar to many ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r pictures of virtualized systems one can see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se days, but what makes it special is that all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 dark gray boxes represent untrusted domains (so, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir compromise is not security-critical, except for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 potential of a denial-of-service).

No OS currently implements this architecture, even Qubes. We still have Storage and GUI subsystem in Dom0 (so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are both trusted), although we already know (we think) how to implement cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 untrusted storage domain (this is described in detail in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 arch spec), and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 main reason we don't have it now is that TXT market adoption is so poor, that very few people could make use of it.

The GUI subsystem is, however, a much bigger challenge. When we think about, it should really feel impossible to have an untrusted GUI subsystem, because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GUI subsystem really "sees" all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 pixmaps that are to be displayed to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user, so also all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 confidential emails, documents, etc. The GUI is different in nature than cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 networking subsystem, where we can use encrypted protocols to prevent cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 netvm from sniffing or meaningfully intercepting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 application-generated traffic, or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 storage subsystem, where we can use fs-encryption and trusted boot technologies to keep cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 storage domain off from reading or modifying cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 files used by apps in a meaningful ways. We cannot really encrypt cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 pixmaps (in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 apps, or AppVMs), because for this to work we would need to have graphics cards that would be able to do cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 decryption and key exchange (note how this is different from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 case of an untrusted storage domain, where cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is no need for internal hardware encryption!), and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 idea of putting, essentially an HTTPS webserver on your GPU is doubtful at best, because it would essentially move cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 target from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GUI domain to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GPU, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is really no reason why lots-of-code in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GPU were any harder to attack than lots-of-code in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GUI domain...

So we came out recently with an idea of a Split I/O model that is also presented in my slides, where we separate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user input (keyboard, mouse), and keep it still in dom0 (trusted domain), from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 output (GUI, audio), which is moved into an untrusted GUI domain. We obviously need to make sure that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GUI domain cannot "talk" to ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r domains, to make sure it cannot "leak out" cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 secrets that it "sees" while processing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 various pixmaps. For this we need to have cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hypervisor ensure that all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 inter-domain shared pages mapped into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GUI domain are read-only for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GUI domain, and this would imply that we need cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GUI protocol, exposed by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GUI domain to ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r AppVMs, to be unidirectional.

There are more challenges though, e.g. how to keep cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bandwith of timing covert channels, such as those through cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU caches, between cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GUI domain and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r AppVMs on a reasonably low level (please note cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 distinction between a covert channel, which require cooperation of two domains, and a side-channel, which requires just one domain to be malicious - cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 latter are much more of a cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365oretical problem, and are of a concern only in some very high security military systems, while cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 former are easy to implement in practice usually, and present a practical problem in this very scenario).

Anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r problem, that was immediately pointed out by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ETISS audience, is that an attacker, who compromised cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GUI domain, can manipulate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 pixmaps that are being processed in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GUI subsystem to present false picture to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user (remember, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker should have no way to send cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m out anywhere). This includes attacks such as button relabeling ("OK" becomes "Cancel" and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r way around), content manipulation ("$1,000,000" instead of "$100", and vice-versa), security labels spoofing ("red"-labeled windows becoming "green"-labeled), and so on. It's an open question how practical cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se attacks are, at least when we consider automated attacks, as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y require ability to extract some semantics from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 pixmaps (where is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 button, where is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 decoration), as well as understanding cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user's actions, intentions, and behavior (just automatically relabeling my Friefox label to "green" would be a poor attack, as I would immediately realize something is going wrong). Nevercá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365less this is a problem, and I'm not sure how this could be solved with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 current hardware architecture.

But do we really need untrusted GUI domain? That depends. Currently in Qubes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GUI subsystem is located in dom0, and thus it is fully trusted, and this also means that a potential compromise of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GUI subsystem is considered fatal. We try to make an attack on GUI as hard as possible, and this is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 reason we have designed and implemented special, very simple GUI protocol that is exposed to ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r AppVMs (instead of e.g. using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 X protocol or VNC). But if we wanted to add some more "features", such as 3D hardware acceleration for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 apps (3D acceleration is already available to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Window Manager in Qubes, but not for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 apps), cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n we would not be able to keep cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GUI protocol so simple anymore, and this might result in introducing exploitable fatal bugs. So, in that case it would be great to have untrusted GUI domain, because we would be able to provide feature-rich GUI protocols, with all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OpenGL-ish like things, without worrying that somebody might exploit cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GUI backend. We would also not need to worry about putting all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 various 3rd party software in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GUI domain, such as KDE, Xorg, and various 3rd party GPU drivers, like e.g. NVIDIA's closed source ones, and that some of it might be malicious.

So, generally, yes, we would like to have untrusted GUI domain - we can live without it, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n we will not have all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fancy 3D acceleration for games, and also need to carefully choose and verify cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GUI-related software (which is lots of software).

But perhaps in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 next 5 years everybody will have a computer with a few dozens of cores, and also cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU-to-DRAM bandwidth will be orders of magnitude faster than today, and so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re will be no longer a need to offload graphic intensive work to a specialized GPU, because one of our 64 cores will happily do cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 work? Wouldn't that be a nicer architecture, also for many ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r reasons (e.g. better utilization of power/circuit real estate)? In that case nobody will need OpenGL, and so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re will be no need for a richer GUI protocol than what is already implemented in Qubes...

It's quite exciting to see what will happen (and what we will come up for Qubes) :)

BTW, some people might confuse X server de-privileging efforts, i.e. making cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 X server run without root privileges, which is being done in some Linux distros and BSDs, with what had been described in this article, namely making cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GUI subsystem untrusted. Please note that a de-priviliged X server doesn't really solve any major security problems related to GUI subsystem, as whoever controls ("0wns") cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 X server (depriviliged or not) can steal or manipulate all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 data that this X server is processing/displaying. Apparently cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are some reasons why people want to run Xorg as non-root, but in case of typical desktop OSes this provides little security benefit (unless you want to run a few X servers with different user accounts, and on different vt's, which most people would never do anyway).

Thursday, September 02, 2010

Qubes, Qubes Pro, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Future...

The work on Qubes OS has been extremely exciting and also very challenging for us. While most of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 work we have been doing so far relates to solving various technical, under-cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365-hood challenges, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 more important goals in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 long-term are related more to mitigating cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 so called "human factor", i.e. making cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system not only easy to use, but tolerant to user absentmindedness. This includes e.g. ensuring cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user uses a correct AppVM (e.g. do cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 banking in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "banking" AppVM, and not in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "random web browsing" AppVM, and also not 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 way around: don't do random surfing in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "banking" AppVM), and generally making cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole isolation between AppVMs as seamless as possible, but without sacrificing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same time.

This is becoming very important, as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 technical level of security in Qubes is already very high, and so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "human factor" might easily become a low hanging fruit for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker. (In contrast to ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r OSes)

But for Qubes to become something more than just an interesting OS for Linux geeks and security enthusiasts, it is also critical to have better application support. Right now Qubes lets users run Linux apps, because each AppVM is Linux-based. But, and let's not be afraid to admit this: Linux sucks when it comes to application support! (Take Open Office as an example - it not only looks like MS Office 97, but is also terribly user-unfriendly, especially cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir presentation program, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Impress. Why is it so difficult to make it look and behave more like Apple Keynote?)

There is only one way to provide better application support to Qubes: make it support Windows-based, or Mac-based, AppVMs. Just imagine that: being able to run most of your Windows (or Mac) applications, but at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same time benefit from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Qubes strong isolation and seamless integration on one common desktop...

In order to implement support for Windows-based AppVMs (or alternatively Mac-based AppVM) we would need to engage significant resources (5+ very skilled developers, working full time for 1+ year), and so we're currently looking for an investor that would be able to provide funding for such an endeavor. The idea is to create a dedicated spin-off company that would focus entirely on Qubes and Qubes Pro, and in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 future will make a profit from selling Qubes Pro licenses. Qubes Pro will become a commercial product, still based on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 open source Qubes, but adding support for Windows-based or Mac-based AppVMs. I would be happy to discuss cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 details and business plan via email with interested potential investors.

Speaking about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 future of Qubes: next week I will speak at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 European Trusted Infrastructure Summer School, where I will talk about some general stuff like why we need secure desktop systems and why trusted computing might be a way to go, but will also dive a little bit into some new things we plan for Qubes 2.0, such as storage domain and split I/O graphics model. The conference features some very reputable speakers in system-level security field, such as David Grawrock (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 facá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r of Intel TXT and TPM), and Loic Duflot (our venerable competitor in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 filed of offensive system-level research), so I consider a honour to deliver an opening keynote cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re (Check cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 agenda here).

I will have my Qubes laptop with me, of course, so if anybody is interested to see Qubes OS live (including Disposable VMs!), I would be happy to do a quick demo on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 spot.

Thursday, August 19, 2010

The MS-DOS Security Model

Back in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 '80s, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re was an operating system called MS-DOS. This ancient OS, some readers might not even remember it today, had a very simple security model: every application had access to all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user files and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r applications.

Today, over two decades later, overwhelming majority of people still use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 very same security model... Why? Because on any modern, mainstream OS, be that Linux, Mac, or Windows, all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user applications still have full access to all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user's files, and can manipulate all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r user's applications.

Does it mean we haven't progressed anywhere from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 MS-DOS age? Not quite. Modern OSes do have various anti-exploitation mechanisms, such as ASLR, NX, guard pages (well, Linux has it since last week at least), and even some more.

But in my opinion cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re has been too much focus on anti-exploitation, and on bug finding, (and on patching, of course), while almost nothing has been done on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS architecture level.

Does anybody know why Linux Desktops offer ability to create different user accounts? What a stupid question, I hear you saying - different accounts allow to run some applications isolated from user's ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r applications! Really? No! The X server, by design, allows any GUI application to mess with all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r GUI applications being displayed by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same X server (on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same desktop). So, what good it is to have a "random_web_browsing" user, if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Firefox run under this user account would still be able to sniff or inject keystrokes to all my ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r GUI applications, take screenshots of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m, etc...?

[Yes, I know, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user accounts allows also to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365oretically share a single desktop computer among more than one physical users (also known as: people), but, come on, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se days it's that a single person has many computers, and not 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 way around.]

One might argue that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 progress in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 anti-exploitation, and also safe languages, would make it nearly impossible to e.g. exploit a Web browser in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 next few years, so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re would be no need to have a "random_web_browsing" user in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first place. But, we need isolation not only to protect ourselves when somebody exploits one of our application (e.g. a Web Browser, or a PDF viewer), but also, and perhaps most importantly, to protect from maliciously written applications.

Take summer holiday example: imagine you're a scuba diver - now, being also a decently geeky person, no doubt you will want to have some dive log manager application to store cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 history of your dives on a computer. There are a dozen of such applications on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 web, so all you need to do is to pick one (you know, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 one with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 nicest screenshots), and... well you need to install it on your laptop now. But, hey, why this little, made by nobody-knows-who, dive application should be given unlimited access to all your personal files, work email, bank account, and god-know-what-else-you-keep-on-your-laptop? Anti-exploitation technology would do exactly nothing to prevent your files in this case.

Aha, it would be so nice if we could just create a user "diving", and run cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 app under this account. In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 future, you could throw in some advanced deco planning application into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same account, still separated from all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r applications.

But, sorry, that would not work, because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 X server doesn't provide isolation on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GUI-level. So, again, why should anybody bocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r creating any additional user accounts on a Linux Desktop?

Windows Vista made a little step forward in this area by introducing integrity levels, that, at least cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365oretically, were supposed to prevent GUI applications from messing with each ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r. But cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y didn't scale well (IIRC cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re were just 3 or 4 integrity levels available), and it still isn't really clear if Microsoft treats cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m seriously.

So, why do we have user accounts on Linux Desktops and Macs is beyond me (I guess Mac's X server doesn't implement any GUI-level isolation eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r - if I'm wrong, please point me out to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 appropriate reference)?

And we haven't even touched cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problems that might arise from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker exploiting a bug in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 (over-complex) GUI server/API, or in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 (big fat) kernel (with hundreds of drivers). In order for those attacks to become really interesting (like cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Rafal's attack we presented yesterday), cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user would have to already be using e.g. different X servers (and switch between cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m using Ctrl-Shift-Fn), or some sandboxing mechanisms, such as SELinux sandbox, or, in case of Vista, a scheme similar to this one.

Tuesday, August 17, 2010

Skeletons Hidden in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Linux Closet: r00ting your Linux Desktop for Fun and Profit

A couple of months ago, while working on Qubes GUI virtualization, Rafal has come up with an interesting privilege escalation attack on Linux (a user-to-root escalation), that exploits a bug in... well, actually it doesn't exploit any concrete bug, which makes it so much more interesting.

The attack allows a (unpriviliged) user process that has access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 X server (so, any GUI application) to unconditionally escalate to root (but again, it doesn't take advantage of any bug in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 X server!). In ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r words: any GUI application (think e.g. sandboxed PDF viewer), if compromised (e.g. via malicious PDF document) can bypass all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Linux fancy security mechanisms, and escalate to root, and compromise cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole system. The attack allows even to escape from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SELinux's "sandbox -X" jail. To make it worse, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack has been possible for at least several years, most likely since cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 introduction of kernel 2.6.

You can find cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 details of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack, as well as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 discussion of possible solutions, including cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 one that has eventually been implemented, in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Rafal's paper.

One important aspect cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack demonstrates, is how difficult it is to bring security to a desktop platform, where one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 biggest challenges is to let applications talk to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GUI layer (e.g. X server in case of Linux), which usually involves a very fat GUI protocol (think X protocol, or Win32 GUI API) and a very complex GUI server, but at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same time keep things secure. This was one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 key priories for us when designing Qubes OS architecture. (So, we believe Qubes is much more secure than ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r sandboxing mechanisms, such as BSD jails, or SELinux-based sandboxes, because it not only eliminates kernel-level exploits, but also dramatically slims down GUI-level attacks).

The kernel-level "patch" has been implemented last week by Linus Torvalds, and pushed upstream into recent stable kernels. RedHat has also released an advisory for this attack, where cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y rated its severity as "high".

ps. Congrats to Brad Spengler for some good guessing :)

Thursday, July 01, 2010

Qubes Alpha 2 released!

The Alpha 2 is out!
New screenshots are here :)

Tuesday, June 01, 2010

Disposable VMs

While we're still busy with some last few tickets left for Qubes Alpha 2 milestone, Rafal has already started working on a new feature for Qubes Beta 1: on Disposable VMs. I think this is really gonna be a killer feature, and I wanted to say a few words about it.

Disposable VMs will be very lightweight VMs that can be created and booted in a very short time, say < 1s, with a sole purpose of hosting only one application, e.g. a PDF viewer, or a Media Player.

To understand why Disposable VMs are important, imagine cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following situation -- you receive an email from a customer that contains a PDF attachment, say an invoice or a contract. Obviously you're opening and reading cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 message in an email client running in your "work" AppVM (or "work-email" AppVM, if you're paranoid), just because it is a work-related correspondence, arriving at your professional email address (for many reasons it is good to use different email addresses for job-related activities and for personal life).

However, chances of somebody compromising your email client by just sending you a maliciously crafted message that would exploit your body or subject parsers are very small, if you have disabled full HTML parser for message bodies (which I think most security-concious people do anyway). Perhaps a more effective attack vector would be for somebody to 0wn your email server first, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n try to exploit IMAP/POP/SMTP protocol parser in your email client. But hey, in that case, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y already would get access to all your emails on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 corporate server, without exploiting your email client (well, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y could however gain access to your PGP keys this way -- if this bocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs you, you might want to use smartcards for PGP keys). There is also a possibility to do a Man-In-The-Middle attack and try to exploit SSL protocol early parsers, but this could be prevented using a separate VPN AppVM in Qubes.

But now you would like to open this PDF that a customer just sent you. It's quite reasonable to be afraid that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 PDF might be malicious and might try to exploit your PDF viewer, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n try to steal your emails or ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r things you keep in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "work" AppVM (or "work-email" AppVM). It doesn't matter if you trust cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sender, as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sender's OS might very well be compromised by some malware and might be infecting all outgoing PDFs without cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user consent.

You could try opening cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 PDF in one of your non-sensitive VMs, e.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "random" VM that you use for causal Web browsing, to make sure that even if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 PDF is malicious, that it won't get access to any sensitive data. But what if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 PDF is not malicious, and what if it contains some confidential data? In that case you might throw cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 baby out with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bath water (your "random" VM might have been already compromised and now it would be able to steal cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 secrets from your PDF file).

A disposable VM is an ideal solution here. You create a clean, disposable VM, just for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 purpose of viewing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 PDF. Then, once you're done, you just throw it away. If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 PDF was malicious it could done harm only to its own disposable VM, that doesn't contain anything except... this very PDF. At cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same time, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 disposable VM is always started in a clean state, so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is no way somebody could steal cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 document. Only cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 document can steal itself :)

That all sounds easy, but to make it practical we need a very efficient implementation of disposable VMs, and a good system integration, so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 experience was seamless to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user. E.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user should only be required to right-click on a file and choose "Open in a Disposable VM", and Qubes should take care about everything else: creating cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VM, starting it, copying cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 file to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VM, and starting a MIME-associated application for this type of file (e.g. PDF) in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VM. And this all in time below 1s!

Basic support for Disposable VMs is planned for Beta 1, which is scheduled sometime 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 summer holidays. But I can tell that's just cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 beginning. The ultimate goal, from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user's point of view, would be to make Qubes OS to look and behave just like a regular mainstream OS like Linux, or Windows, or even Mac, but still with all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 strong security that Qubes architecture provides, deployed behind cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 scene. Seamless support for Disposable VM is one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first steps to achieve this goal.

Special credits go to Matt Piotrowski, who just left Berkeley University, and whose recently published cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365sis was a direct inspiration to implement disposable VMs in Qubes. While we did mention "one-time" VMs in our architecture document back in January (see chapter 4.6), it really was Matt's paper that convinced me we should really have cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m in Qubes. Virtics, a proof-of-concept implementation written by Matt, shares lots of similarities with Qubes, like e.g. architecture and implementation of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GUI virtualiztion. There are also differences though, and I refer readers to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Matt's paper for more details.

Monday, May 03, 2010

On Formally Verified Microkernels (and on attacking cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m)

Update May 14th, 2010: Gerwin Klein, a project lead for L4.verified, has posted some insightful comments. Also it's worth reading cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir website here that clearly explains what assumptions cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y make, and what cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y really prove, and what cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y don't.

You must have heard about it before: formally verified microkernels that offer 100% security... Why don't we use such a microkernel in Qubes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n? (The difference between a micro-kernel and a type I hypervisor is blurry. Especially in case of a type I hypervisor used for running para-virtualized VMs, such as Xen used in Qubes. So I would call Xen a micro-kernel in this case, although it can also run fully-virtualized VMs, in which case it should be called a hypervisor I think.)

In order to formally prove some property of any piece of code, you need to first assume certain things. One such thing is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 correctness of a compiler, so that you can be sure that all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 properties you proved for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 source code, still hold true for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 binary generated from this source code. But let's say it's a feasible assumption -- we do have mature compilers indeed.

Anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r important assumption you need, and this is especially important in proving kernels/microkernels/hypervisors, is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 model of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hardware your kernel interacts with. Not necessarily all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hardware, but at least cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU (e.g. MMU, mode transitions, etc) and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Chipset.

While cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPUs are racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r well understood today, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir architecture (we're talking IA32 here) doesn't change so dramatically from season to season. The chipsets, however, are a whole different story. If you take a spec for any modern chipset, let's say only cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 MCH part, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 one closer to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor (on Core i5/i7 even integrated on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same die), cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are virtually hundreds of configuration registers cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re. Those registers are used for all sorts of different purposes -- cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y configure DRAM parameters, PCIe bridges, various system memory map characteristics (e.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 memory reclaiming feature), access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 infamous SMM memory, and finally VT-d and TXT configuration.

So, how are all those details modeled in microkernels formal verification process? Well, as far as I'm aware, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are not! They are simply ignored. The nice way of saying this in academic papers is to say that "we trust cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hardware". This, however, might be incorrectly understood by readers to mean "we don't consider physical attacks". But this is not equal! And I will give a practical example in a moment.

I can bet that even cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chipset manufactures (think e.g. Intel) do not have formal models for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir chipsets (again, I will give a good example to support this cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365sis below).

But why are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chipsets so important? Perhaps cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are configured "safe by default" on power on, so even if we don't model all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 configuration registers, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir effects on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system, and if we won't be playing with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m, maybe it's safe to assume all will be fine cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n?

Well, it might be that way, if we could have secure microkernels without IOMMU/VT-d and without some trusted boot mechanism.

But we need IOMMU. Without IOMMU cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is no security benefit of having a microkernel vs. having a good-old monolithic kernel. Let me repeat this statement again: cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is no point in building a microkernel-based system, if we don't correctly use IOMMU to sandbox all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 drivers.

Now, setting up IOMMU/VT-d permissions require programming cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chipset's registers, and is by no means a trivial task (see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Intel VT-d spec to get an impression, if you don't believe me). Correctly setting up IOMMU is one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most security-critical tasks to be done by a hypervisor/microkernel, and so it would be logical to expect that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y also formally prove that this part is done flawlessly...

The next thing is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 trusted boot. I will argue that without proper trusted boot implementation, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system cannot be made secure. And I'm not talking about physical attacks, like Evil Maid. I'm talking about true, remote, software attacks. If you haven't read it already, please go back and read my very recent post on "Remotely Attacking Network Cards". Building on Loic's and Yves-Alexis' recent research, I describe cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re a scenario how we could take cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir attack furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r to compromise even such a securely designed system as Qubes. And this could be possible, because of a flaw in TXT implementation. And, indeed, we demonstrated an attack on Intel Trusted Execution Technology that exploits one such flaw before.

Let's quickly sketch cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole attack in points:

  1. The attacker attacks a flaw in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 network card processing code (Loic and Yves-Alexis)

  2. The attacker replaces cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NIC's firmware in EEPROM to survive cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 reboot (Loic and Yves-Alexis)

  3. The new firmware attacks cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system trusted boot via a flaw in Intel TXT (ITL)

    • If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system uses SRTM instead, it's even easier -- see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 previous post (ITL)

    • If you have new SINIT module that patched our attack, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is still an avenue to attack TXT via SMM (ITL)

  4. The microkernel/hypervisor gets compromised with a rootkit and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker gets full control over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system:o

And this is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 practical example I mentioned above. I'm sure readers understand that this is just one example, of what could go wrong on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hardware level (and be reachable to a software-only attacker). Don't ignore hardware security! Even for software attacks!

A good question to ask is: would a system with a formally verified microkernel also be vulnerable to such an attack? And cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 answer is yes! Yes, unless we could model and prove correctness of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole chipset and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU. But nobody can do that today, because it is impossible to build such a model. If it was, I'm pretty sure Intel would already have such a model and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y would not release an SINIT module with this stupid implementation bug we found and exploited in our attack.

So, we see an example of a practical attack that could be used to fully compromise a well designed system, even if it had a formally verified microkernel/hypervisor. Compromise it remotely, over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 network!

So, are all those whole microkernel/hypervisor formal verification attempts just a waste of time? Are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y only good for academics so that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y could write more papers for conferences? Or for some companies to use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m in marketing?

Perhaps cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 formal verification of system software will never be able to catch up with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 pace of hardware development... By cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time people will learn how to build models (and how to solve cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m) for hardware used today, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hardware manufactures, in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 meantime, will present a few new generations of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hardware. For which cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 academics will need anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r 5 years to catch up, and so on.

Perhaps cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 industry will take a different approach. Perhaps in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 coming years we will get hardware that would allow us to create untrusted hypervisors/kernels that would not be able to read/write usermode pages (Hey Howard;)? This is currently not possible with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hardware we have, but, hey, why would a hypervisor need access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Firefox pages?

And how this all will affect Qubes? Well, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Qubes project is not about building a hypervisor or a microkernel. Qubes is about how to take a secure hypervisor/microkernel, and how to build 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 system in a secure, and easy to use, way, using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 isolation properties that this hypervisor/microkernel is expected to provide. So, whatever kernels we will have in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 future (better formally verified, e.g. including cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hardware in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 model), or based on some exciting new hardware features, still Qubes architecture would make perfect sense, I think.

Saturday, May 01, 2010

Evolution

If you have been following my research over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last several years (even in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 days before ITL), you will undoubtedly notice how much I have changed cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 profile over that time...

Several years ago, myself and Alex Tereshkin (who later became ITL employee #1), were known mostly as rootkit researchers. It was back in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 days when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 word "rootkit" was not as much well known as it is today (It became well known sometime in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 late 2005, and I remember when I was applying for a US Visa that year, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 immigration officer in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Warsaw embassy asked me what I did professionally and when I replied that I was a security researcher specializing in rootkits, he was very happy to tell me that he just read about those "rootkits" somewhere, although he was not very much worried about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m, because he was a Mac user...)

But cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n, in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 coming years, we decided to explore ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r areas, like virtualization, trusted computing, chipset security, and even touched on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU security briefly. Many valuable contributions in those areas have come from Rafal Wojtczuk, who joined our team some two years ago.

And cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n, finally, we became ready to actually build something meaningful. Not just yet anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r nonsense trivial-to-break "security product", but something that have had a potential to really improve user's security. And so, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Qubes project idea has been born, and soon it became ITL's highest priority project.

So, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se days we don't do any reverse engineering or malware analysis any more. We'd racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r design systems so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y be immune to rootkits by design (e.g. by significant TCB reduction), racá 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ý bet365n analyze each and every new rootkit sample caught in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 wild and try to come up with a detector for it.

Of course, this all doesn't mean we're giving up on our offensive research. There is still a chance you will hear about some new attacks from us. But this would surely be limited only to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacks that we consider relevant in an environment that is already designed with security in mind, like Qubes :) So, e.g. an attack against VT-d, or some CPU exploit, or a Xen exploit, might be extremely interesting. But don't expect to see any research on how to e.g. compromise Windows 7 or Mac kernel or break out of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir primitive sandboxes -- cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se systems are so badly designed from a security standpoint, that coming up with a yet-anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r attack against cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m makes little sense from a scientific point of view.

Naturally, I'm all excited about this all: that I've been exploring new areas, and that my work has eventually started becoming meaningful. But that is, of course, only mine subjective opinion. Specifically, this turned out not be cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 case for Alex, who simply enjoys reverse engineering and compiler hacking just for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sake of doing it (Alex did some excellent job on metamorphic code generators, that are years ahead of what you can read at public conferences). Unfortunately, with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 current new course we took at ITL, Alex started getting less and less chances to apply his skills, and faced a decision whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r to stay at ITL and do ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r things, i.e. ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r than reversing or compiler hacking, or to quit and continue doing what he has always liked to do.

The reader has probably figured out by now that Alex decided to quit ITL. I fully understand his decision and wish him all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 best in his new adventures!

You should still be able to reach Alex using his old ITL's email address (alex@), or directly via his new email: alex.tereshkin at gmail.com.

Friday, April 30, 2010

Remotely Attacking Network Cards (or why we do need VT-d and TXT)

I've finally found some time to study Loic Duflot's and Yves-Alexis Perez's recent presentation from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last month on remotely attacking network cards. You can get cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 slides here.

In short, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y're exploiting a buffer overflow in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 network card's firmware by sending malicious packets to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 card, 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ý bet365y gain full control over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 card's firmware, so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can e.g. issue DMA to/from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 host memory, effectively fully controlling cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 host (that's anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r example of "Ring -3 rootkit" I would say). The buffer overflow is in some exotic management protocol (that I think is disabled by default, but that's irrelevant) implemented by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NIC's firmware (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NIC has its own RISC processor, and memory, and stack, which cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y overflow, etc.).

I like this research very much, because it demonstrates several important things:

First, it shows that it is definitely a good idea to isolate/sandbox all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS networking code using IOMMU/VT-d. And this is exactly what we do in Qubes.

Second, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack provides a real-world example of why Static Root for Trust Measurement (SRTM) is inferior to Dynamic RTM (DRTM), e.g. Intel TXT. To understand why, let's make cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following assumptions:
1) The OS/VMM properly uses IOMMU to isolate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 network card(s), just like e.g. Qubes does.
2) Once cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker got control over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NIC firmware, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker can also modify cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 persistent storage (EEPROM) where this firmware is kept. This has been confirmed by Loic in a private email exchange.
3) The system implements trusted boot via SRTM, i.e. using just BIOS and TPM, without Intel TXT.

Now, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker can modify cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 firmware in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 EEPROM and this will allow cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker to survive cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 platform reboot. The card's firmware will start executing early in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 boot process, definitely before cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS/VMM gets loaded. Now, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 compromised NIC, because it is capable of doing DMA to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 host memory, can compromise cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 image of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VMM in a short time window between cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time it got measured and loaded by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 (trusted) OS loader, e.g. Trusted GRUB, but still before cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time VMM had a chance to setup proper IOMMU/VT-d protections for itself.

Of course, in practice, it might be tricky for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 compromised NIC firmware to precisely know this time window when it should send a compromising DMA write request. If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DMA was issued too early, 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 trusted OS loader would calculate a wrong hash and put a wrong value into a PCR register, which would later prevent cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system from completing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 boot, and prevent cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack. If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DMA was issued too late, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 IOMMU/VT-d protections would already be in-place, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack would again be unsuccessful. But, hey, much harder obstacles have been worked around by smart exploit writes in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 past, so don't comfort yourself that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack is hard. If it's possible, it means this technology is flawed, period.

And this is where DRTM, AKA Intel TXT, shows its advantage over simple SRTM. When you load a hypervisor using TXT, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SENTER instruction would first apply cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VT-d protections around cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hypervsior image, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n do cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 measurements, and only cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n load it, with VT-d protections still in-place.

The above is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ory. A few months ago we demonstrated an attack against this scheme, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack was exploiting a flaw in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TXT implementation, not in its design, so it didn't render TXT useless as a technology.

A much bigger problem with Intel TXT is, that Intel still has done nothing to prevent SMM-based attacks against TXT. This is what we demonstrated about 1.5 years(!) ago. Our research stressed that TXT without protection from SMM is essentially useless. Intel cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n promised to come up with a spec on how to write an STM, and how TXT should work with STM (when to measure/load it, etc), but nothing has been released by Intel for all this time AFAIK...

Now, without STM (which is supposed to provide protection from potentially compromised SMM), cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TXT cannot really prevent Loic and friends from owning cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system, even if it uses such a securely designed OS as Qubes. This is because Loic would be able to modify e.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 MBR while cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system boots (thanks to DMA ability of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 infected NIC firmware), and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n attack an SMM from this MBR (I can bet lots of money Loic & co. would easily find a few ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r SMM exploits in any recent BIOS if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y only wanted to), and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n having infected cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SMM, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y will be able to compromise TXT-loaded hypervisor, and finally compromise cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole system.

I know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are some people from various governments reading this blog. If you really want to have secure systems, consider pushing on Intel to finally do something about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SMM-based attacks against TXT. Beware, Intel will try to tell you that, using TXT LCP you can seal your secrets to only "trusted" SMM images and would try to convince you it's a way to prevent SMM attacks on TXT. It is not. Only true SMM sandboxing is a proper way to address this problem.

Anyway, congrats to Loic and colleagues for yet anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r very interesting and meaningful system-level research!

Wednesday, April 07, 2010

Introducing Qubes OS

For cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last 6 months we have been busy with a new project: Qubes. Qubes is an open source OS based on Xen, X, and Linux, designed to provide strong isolation for desktop computing. The link to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 project website is 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 post.

The system is currently in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 alpha stage, but if you're determined it's actually usable. For example I have switched to Qubes around a month ago, and two weeks ago I even decided to wipe and reinstall my Mac Book, which used to be my primary laptop previously. Now I use my old Mac Book only for making cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 slides (Apple Keynote really has no competition) and Web page for Qubes :) And I use Qubes for pretty much all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r daily tasks, from work, shopping, banking, random browsing, to Qubes development itself (it takes part in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "qubes" AppVM).

Just remember to make backups regularly if you decided to use Qubes for anything else than testing and development.

So, enough of introduction, you will find lots of details (including a 40-page PDF describing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system architecture) at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Qubes project website. Enjoy!

Update 7-Apr-2010 15:56 CEST: The server seems to be overloaded a bit by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 traffic... If you are planning to install cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS, I guess it would be wise to postpone downloading cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 installation packages until later this week, when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first wave of visitors goes away.

Update 7-Apr-2010 16:31 CEST: The Wiki doesn't work due to lack of free memory... Talking to my provider about buying some more RAM. Sorry for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 inconvenience.

Update 7-Apr-2010 18:28 CEST: The server has been brought offline for RAM upgrade. Should be back online in some 15 minutes...


Saturday, January 16, 2010

Priorities

It’s interesting how many people don’t realize what are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 priorities in computer security... There are many fields to secure: server security, web applications security, network security, and finally desktop security. Over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last years I met SO many people that always expressed surprise why I would like to focus on desktop systems security? They usually argue that today, as everybody knows, it is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Network that is what computing is all about and that we should focus on securing infrastructure, and forget about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 desktops, which are always to be insecure. The network is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 computer, as somebody said.

What those people forget about, is that it is always cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 desktop that ultimately gets access to all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user’s secretes -- all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 passwords, all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 keys, all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 corporate documents, all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 nude holiday pictures, all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 secret love letters, all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 credit card numbers, and many more.

However secure were all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 services (remote servers and network protocols) that we use, if our desktop gets compromised it’s all lost. The recent incident with Google is just yet anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r example of that. Our desktop systems are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most crucial piece of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole puzzle.

It’s funny how many people think that by using some thin client solution on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir desktops cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can solve cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problem. Of course cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y cannot! Just cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact that your OS executes on a server, racá 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ý bet365n on your hardware, doesn’t make it any less prone to all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacks that were ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rwise possible when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 software executed on your system.

The attempts to secure desktops have been failing for so many years. While recently cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is some attempt to minimize likelihood of remote attacks via Web browsers (or generally to focus on application security), this is still just cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 tip of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 iceberg -- cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are so many ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r attack avenue that none of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 popular OSes even tries to address, that I consider myself a brave person (not to say stupid) that I actually use my laptop everyday and keep some sensitive information on it ;)

Ok, so that’s a nice piece of complaining you say, but what are we, at ITL, gonna do about it? Well, we just gonna sit and patiently wait for better OSes to appear some day... Oh, hell, we won’t!

Happy New Year :)


9933 F096 8820 0E23 1AF4 078D 8BDB D97D BDEA 9E9D