-- Theo de Raadt (on the statement "Virtualization seems to have a lot of security benefits")
-- Theo de Raadt (on the statement "Virtualization seems to have a lot of security benefits")
The attack surface of Xen is much smaller than a traditional kernel like linux. I'm guessing the same can be said for OpenBSD after looking at the number of system calls.
The Xen attack surface is then reduced to about 20 hypercalls (even less for ARM). http://xenbits.xen.org/docs/unstable/hypercall/index.html
As examples:
There is a full x86 instruction decoder which is technically not part of the hypercall interface. x86 instruction encoding is surprisingly complicated. There was a vulnerability in that code: http://xenbits.xen.org/xsa/advisory-123.html
Handling x86 page tables and all of the various feature bits is also surprisingly complicated. This is part of the hypercall interface, but there was also a vulnerability in that code: http://xenbits.xen.org/xsa/advisory-148.html
I'm sure their product will have plenty more vulnerabilities as she lacked foundational knowledge in building secure systems. Meanwhile, with little labor, GenodeOS was incorporating many well-designed components from the start such as L4 work, Muen, seL4, Nova microhypervisor, Nitpicker GUI, etc. They're still alpha quality due to clean-slate work needed in that approach but moving on steadily. Check them out.
Note: For appliances and embedded, JX Operating System is also worth Googling. Remember that JVM can be replaced with Ada, Go, etc runtime or Rust.
"and the GUI has always been in DOM0 with no networking."
I'm clearly not a Qubes user. I'm basing my statement on what articles or comments here described as relatively recent work isolating the GUI stack further from attack. If that didn't happen, I retract it. The Xen, Dom0, and driver risks she ignored and countered directly so I was sure they'd be a problem.
EDIT to add: Btw, she later did a one-side rebuttal countering various things here on her blog while censoring my rebuttal of course. One real problem she identified was my use of "military-grade:" commonly a buzzword indicating snake oil. I read lots of defense stuff back then but forgot to translate. I meant Type 1 certified by NSA for high-assurance use in military. It's a rigorous process identifying and often preventing... many issues people found in proprietary and FOSS products designed without high assurance practices. ;) So, I started saying NSA Type 1 certified from that point on to avoid confusion.
I've only used it on mid-high end systems though. You should easily be able to launch a few small VMs (each AppVM is tunable) on a dual core machine with 4 GB of RAM though.
What de Raadt means to say is, generally speaking, you can't build security on top of bad code. No amount of patching, sandboxing, or whatever will help. Security comes from quality and Xen (like Linux) is very lacking in quality.
http://lukemuehlhauser.com/wp-content/uploads/Karger-et-al-A...
If we're talking experience and lineage, then we should ignore Theo on this issue immediately as he's never constructed a provably secure system. They don't even address covert channels much less be able to tell me every successful and failed execution trace of their OS w/ argument they obey security policy. Of course, if you look at Karger's design and assurance sections, you'll know the minimum required to get close to secure, predictable operation disqualifies Xen, KVM, VMware, etc from the picture as well.
Only the separation kernels (eg INTEGRITY-178B or LynxSecure), Nizza architecture, GenodeOS, JX OS, CHERIBSD, etc are consistently applying the lessons of the high-assurance community. One of them is that microkernels and core VMM's are the easiest to secure with other stuff running on top mediated by a security policy. Many such systems survived NSA and private pentesting. Monoliths and UNIXen rarely do.
Here's the context: https://marc.info/?l=openbsd-misc&m=119318909016582
The message is that people writing the linux kernel make a lot of mistakes, and it result in security holes. Those same people (or the same kind of people) also write X (Docker, x86 virtualization, whatevs...), so mistakes and security holes are to be expected.
I do not necessarily agree with the message, but this is how I understand it.