On Oct 04, 2016, at 07:45 pm, Marek Marczykowski-Górecki 
<marma...@invisiblethingslab.com> wrote:


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

On Tue, Oct 04, 2016 at 06:36:19PM +1000, ileyd wrote:



On 4 Oct. 2016, at 3:48 pm, ileyd <il...@icloud.com> wrote:



From: ileyd <il...@icloud.com>
Date: 4 October 2016 at 3:43:45 pm AEST
To: Marek Marczykowski-Górecki <marma...@invisiblethingslab.com>
Subject: Re: [qubes-devel] What prevents use of a storage driver domain?


On 3 Oct. 2016, at 6:33 pm, Marek Marczykowski-Górecki 
<marma...@invisiblethingslab.com> wrote:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

On Sun, Oct 02, 2016 at 01:25:19AM +0000, Adin Kapul wrote:
Hi,



I am curious what prevents (even if not completely untrusted) implementation of 
a storage driver domain.


It is discussed in the architecture document, and has been alluded to by 
Joanna, so I'd assume that this is an eventual aim of the Qubes project.



The process is relatively simple on stock Xen, and Qubes already supports using 
AppVMs as storage driver domains to serve locally-stored images (just as Dom0 
stores guest images) to other guests, so I'm curious what obstacles there are 
to implementing this for the main guest storage, or is it simply a case of it 
not being a priority and no one having worked on it?

Moving all the storage to separate domain means that dom0 have no direct
access to hard drive. This makes boot process much more complex - for
example dom0 also needs to be booted somehow - to start that storage
domain. This, to be meaningful in any way, require working trusted boot.
And given problems with Intel ME and TXT implementation, there is no
hardware providing it.

Could you elaborate on what you said?

Would the boot process really be made very much more complex? The storage 
domain root needs to be stored separately so that it may be accessed at boot 
time, and the storage domain would need to be started by the initramfs. Neither 
of these would be particularly challenging, would they? Dom0's storage would 
still appear as normal block devices to it, so it shouldn't affect the boot 
process after that. There is no need for a fully booted dom0; all the necessary 
bootstrapping could easily occur in a dom0 initramfs.

But you need things like boot configuration (what should be started as
storage domain, apply updates etc), key management (as explained in
architecture). Also fitting everything needed to start a domain in
initramfs will make that initramfs much larger (which can be a problem
in some cases[1]). And some components (like xenstored) cannot be
restarted, so you'll be left with processes still running with initramfs
as rootfs, even after switching to normal root (or you'll need to
implement switch root in such components).

This all is of course doable, but complex. So, we think it worth going
that way only if it's meaningful increase of system security.


Could you additionally elaborate on why full trusted boot is an absolute 
necessity for this to be meaningful at all? I am aware of course that without a 
separate encryption VM, this domain would be in a very trusted position, able 
to modify all root file systems.

Exactly. Including boot images (xen, dom0 kernel, initramfs etc) (*). This
means compromised storage domain is basically full system compromise. So
there will be no gain from separating it, besides making things more
complex.

Just to clarify - properly done storage domain would separate two things
out of TCB:
- disk backend drivers (xen-blkback), exposing disks to VMs
- storage subsystem (SATA controller, firmware, drivers)

Any of those can compromise storage domain, so it makes sense only when
compromised storage domain can not break into other components.


What do you mean by your comment on the problems with ME and TXT?

For example this list:
http://invisiblethingslab.com/itl/Resources.html
Or article linked here:
http://blog.invisiblethings.org/2015/10/27/x86_harmful.html


To clarify, how I imagine this working:


• dom0 initramfs contains minimal xen toolstack
• storage domain initramfs available as file in dom0 initramfs


Dom0 initramfs boots as normal up until where it would usually switch to new 
root
Dom 0 starts storage domain using the initramfs available
Storage domain boots as normal having full access to all disks, mounts root 
from disk
Dom0 mounts root from storage domain
Dom0 switches to new root and boots as normal

Something like this (but see my earlier comment).

(*) You could say - lets keep them on separate device, connected only at
boot time. Yes, this will improve some things, but will not solve all
the problems. For example such system would be still vulnerable to
backdoored SATA controller firmware (which can subvert boot process
using DMA, even when booting from other devices). Or malicious BIOS
(either backdoored by vendor, or reflashed later).
And you still need to connect this device sometimes, to apply updates,
modify configuration etc. At this time, whatever you use to sandbox
this subsystem (USB VM, storage domain etc), it can compromise that
device, which - without working trusted boot - may be left unnoticed.

[1]
https://github.com/QubesOS/qubes-issues/issues/794#issuecomment-135988806

- --
Best Regards,
Marek Marczykowski-Górecki
Invisible Things Lab
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQEcBAEBCAAGBQJX83pKAAoJENuP0xzK19csLmIIAIpj//wMlnthHkplY+L/MM+H
m++9FjO5ahVWeQS50+0DEQRhrJws8koRdz0BvK716SooDYsJLzgpKnJrVxUmTx6+
7N31p4j3FHnxYhy5YQ8/QFjLUo+SBjlf4Q7tQUgs54FWGgYfXin68/0b0WVMJGTx
+B95PFcnt7PA+v1MqTUHL7kiS6ssaEgXxJVUwZTY2gaLYnh3BUWQ48Z7IzOPB+l+
m3m322GEpRIRm5+OibXu/+5S7JJWE6iuv2sf3gJ1rGcjX6/emSf/NXrIFNfjufKW
vrOXdE2G1oJUmtPzlUjubny+IyJIyfoYQm5D+6xVUvBqgUIrgvevuTeEryKVWa4=
=6lsD
-----END PGP SIGNATURE-----

--
You received this message because you are subscribed to the Google Groups 
"qubes-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to qubes-devel+unsubscr...@googlegroups.com.
To post to this group, send email to qubes-devel@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/qubes-devel/20161004094546.GL2436%40mail-itl.
For more options, visit https://groups.google.com/d/optout.


Hi,


Could you additionally elaborate on why full trusted boot is an absolute 
necessity for this to be meaningful at all? I am aware of course that without a 
separate encryption VM, this domain would be in a very trusted position, able 
to modify all root file systems.

Exactly. Including boot images (xen, dom0 kernel, initramfs etc) (*). This
means compromised storage domain is basically full system compromise. So
there will be no gain from separating it, besides making things more
complex.



That is true.  Though if the encryption domain is separated from the disk 
controller one, I still don't see why trusted boot is necessary, for there to 
be any benefit (making disk controller drivers untrusted; their compromise 
unable to lead to full system compromise) to this.    See below for what I mean 
by this, with dm-crypt running in a separate domain to that which has direct 
access to disks:








Just to clarify - properly done storage domain would separate two things
out of TCB:
- disk backend drivers (xen-blkback), exposing disks to VMs
- storage subsystem (SATA controller, firmware, drivers)

Any of those can compromise storage domain, so it makes sense only when
compromised storage domain can not break into other components.


Does the depiction above satisfy that?  In such a scenario, the domain with 
direct access to the disks, running the disk controller drivers, etc, would not 
be in a position to modify (authenticated encryption may be necessary to ensure 
this) nor read the contents.  Obviously though this raises questions as to how 
to handle key storage for the dm-crypt domain, perhaps making use of sealed 
secrets in the TPM.



What do you mean by your comment on the problems with ME and TXT?

For example this list:
http://invisiblethingslab.com/itl/Resources.html
Or article linked here:
http://blog.invisiblethings.org/2015/10/27/x86_harmful.html



Does this mean that the position taken by the Qubes project towards Intel ME 
and TXT, is that they are completely useless and there is not much point to 
making use of them?  If so, what benefits are afforded by AEM, and is it 
planned to be deprecated?  If not, considering it is the only form of trusted 
boot available an commodity hardware at the moment, would it not satisfy the 
requirements of trusted boot for a storage domain?



Something like this (but see my earlier comment).

(*) You could say - lets keep them on separate device, connected only at
boot time. Yes, this will improve some things, but will not solve all
the problems. For example such system would be still vulnerable to
backdoored SATA controller firmware (which can subvert boot process
using DMA, even when booting from other devices). Or malicious BIOS
(either backdoored by vendor, or reflashed later).
And you still need to connect this device sometimes, to apply updates,
modify configuration etc. At this time, whatever you use to sandbox
this subsystem (USB VM, storage domain etc), it can compromise that
device, which - without working trusted boot - may be left unnoticed.


I would imagine the initramfs would be stored on the normal /boot partition, 
with its integrity verified/enforced through Intel TXT (sealed secrets), and 
optionally UEFI Secure Boot (which some implementations of have been shown to 
have vulnerabilities allowing it to be bypassed, I am aware), though storing it 
on an external device like is suggested with AEM would limit the opportunity 
for the contents to be modified.  See above for comment on threat of initramfs 
compromise without working trusted boot.  With system and disk controller 
firmware backdooring, assuming signed firmware updating, surely a limited 
degree of implicit trust must be placed in the firmware vendors, considering 
these are threats that still presently apply to Qubes and potentially result in 
full system compromise?



I guess your central point here, is that the introduction of a storage domain 
would be a non-negligible development effort, and the perceived benefits of 
such are minimal if any.  The main benefit I see to this, is that it allows for 
the storage controller drivers to be removed from dom0, and so their compromise 
would no longer lead to a full system compromise, but a denial of service 
attack at worst.  This keeps with the aim of dom0 disaggregation, and removes 
an avenue for system compromise (this would leave only the audio, graphics, and 
input drivers in dom0, wouldn't it?).  A potential other benefit, though 
unlikely at the moment, would be that if dom0 were not permitted full control 
(this would likely require use of XSM policy as well; potentially see OpenXT 
for reference) over the encryption domain, it would allow for dom0 to never 
have access to key material, requiring a separate compromise of that domain to 
exfiltrate them.



Warm Regards.

ileyd

--
You received this message because you are subscribed to the Google Groups 
"qubes-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to qubes-devel+unsubscr...@googlegroups.com.
To post to this group, send email to qubes-devel@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/qubes-devel/1b43e947-6063-47ef-aba6-21fa6a328ad5%40me.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to