From: Joanna Rutkowska <joanna@invisiblethingslab.com>
To: Avi Kivity <avi@redhat.com>
Cc: Anthony Liguori <anthony@codemonkey.ws>, kvm@vger.kernel.org
Subject: Re: A few KVM security questions
Date: Mon, 07 Dec 2009 18:33:35 +0100 [thread overview]
Message-ID: <4B1D3C6F.8040806@invisiblethingslab.com> (raw)
In-Reply-To: <4B1D38EB.7000409@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 1954 bytes --]
Avi Kivity wrote:
> On 12/07/2009 07:15 PM, Joanna Rutkowska wrote:
>>>>
>>>> But the difference is that in case of Xen one can *easily* move the
>>>> backends to small unprivileged VMs. In that case it doesn't matter the
>>>> code is in kernel mode, it's still only in an unprivileged domain.
>>>>
>>>>
>>>>
>>> They're not really unprivileged, one can easily program the dma
>>> controller of their assigned pci card to read and write arbitrary host
>>> memory.
>>>
>>>
>> That's not true if you use VT-d.
>>
>
> AFAIK VT-d is only supported in Xen for fully virtualized guests. Maybe
> it changed while I wasn't watching, though.
>
Negative. VT-d can be used to contain PV DomUs as well. We actually
verified it.
>>>> Sandboxing a process in a monolithic OS, like Linux, is generally
>>>> considered unfeasible, for anything more complex than a hello world
>>>> program. The process<-> kernel interface seem to be just too fat. See
>>>> e.g. the recent Linux kernel overflows by Spender.
>>>>
>>>>
>>> What about seccomp? You can easily simplify qemu to just a bunch of
>>> calculations served over a pipe.
>>>
>>>
>> But the qemu must somehow communicate with the external world too, no?
>> You said you provide e.g. net backend via the qemu process...
>>
>
> It can use read() and write() (and shared memory) to communicate, just
> like Xen stub domains.
>
Well, but the read() and write() syscalls, on a system like Linux, it's
a gate to *lots* of code. These are very powerful system calls.
> It's a lot of surgery, but it can be done.
>
And then you have the code with whom this qemu communicates (e.g. the
network stack). You said we could somehow use IPC to delegate it to some
VM (that would have VT-d assigned NIC). But then this VM would need to
use qemu again (of course this time not for net emulation). Looks
non-trivial.
joanna.
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 163 bytes --]
next prev parent reply other threads:[~2009-12-07 17:33 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-07 13:05 A few KVM security questions Joanna Rutkowska
2009-12-07 13:17 ` Avi Kivity
2009-12-07 13:30 ` Joanna Rutkowska
2009-12-07 13:38 ` Avi Kivity
2009-12-07 14:06 ` Joanna Rutkowska
2009-12-07 14:09 ` Avi Kivity
2009-12-07 16:44 ` Anthony Liguori
2009-12-07 17:09 ` Joanna Rutkowska
2009-12-07 17:13 ` Avi Kivity
2009-12-07 17:15 ` Joanna Rutkowska
2009-12-07 17:18 ` Avi Kivity
2009-12-07 17:33 ` Joanna Rutkowska [this message]
2009-12-07 18:34 ` Avi Kivity
2009-12-09 10:43 ` Pasi Kärkkäinen
2009-12-07 17:38 ` Anthony Liguori
2009-12-07 17:45 ` Joanna Rutkowska
[not found] ` <20091207181556.GM4679@tyrion.haifa.ibm.com>
2009-12-07 19:58 ` Anthony Liguori
2009-12-07 17:33 ` Anthony Liguori
2009-12-07 17:58 ` Joanna Rutkowska
2009-12-07 17:47 ` Daniel P. Berrange
2009-12-07 13:55 ` Joanna Rutkowska
2009-12-07 14:01 ` Avi Kivity
2009-12-07 16:47 ` Anthony Liguori
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4B1D3C6F.8040806@invisiblethingslab.com \
--to=joanna@invisiblethingslab.com \
--cc=anthony@codemonkey.ws \
--cc=avi@redhat.com \
--cc=kvm@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox