Remove default_dispvm from qubes that don't need it
Opened this issue · 0 comments
Brief summary
The qube property default_dispvm
can cause network leaks and allows qubes that create it to run commands on other qubes.
Steps to reproduce
Create a qube from any formula (most) that doesn't unset default_dispvm
and run qubes.VMShell
.
Expected behavior
No dispvm can be created from qubes that don't need it according to the Qube connections design.
Actual behavior
Qube with no network can run commands on on networked qube or from a different network.
Note this is not a degradation over Qubes default settings, it is the same default setting as upstream. Also not that if you have the reader
formula, the dvm-reader
becomes the global default_dispvm
, which is non-networked and makes things less dangerous.
This change can be somewhat difficult to convey for users depending on how they use the formula, but we must enforce it for security reasons. Let's give some exampels:
-
Should vault, sys-pgp or sys-ssh-agent have it? No, it only manages passwords and keys created in it. But there may be cases in the future where the split-gpg2 opens a message to be signed in a disposable qube that will be created by sys-pgp, so a default_dispvm must be set. But until that is the case, unset it.
-
Should a disposable, a disposable template or a template have it? In most cases, again, no. Avoid chains of disposable qubes.
-
Should qubes that runs applications that manages files have it (browser, element, signal)? Yes, this is the targetted use case.
-
Should system qubes have it? In most cases, no, sys-net, sys-firewall, sys-pihole don't really need it, but other qubes that store files may need it, such as sys-syncthing, sys-rsync, to open the files securely in a disposable.
-
What about the other cases? To be decided how to handle it.