docs: Fix dm_restrict documentation

Remove "chatty" and redundant information from the xl man page;
restrict it to functional descriptions only, and point instead to
qemu-depriv.pandoc and SUPPORT.md as locations for "canonical"
information.

Add a man page entry for device_model_user.

Update qemu-deprivilege.pandoc:

Changes in missing feature list:
- Migration is functional
- But qdisk backends are not

Add a missing restriction list.

The following statements from the man page are dropped:
- Mentioning PV; PV guests never have a device model.
- Drop the confusing statement about stdvga and cirrus vga options.
- Re-used domain IDs are now handled.
- Device models should no longer be able to create world-readable
  files on dom0's filesystem.

Signed-off-by: George Dunlap <george.dunlap@citrix.com>
Acked-by: Wei Liu <wei.liu2@citrix.com>
Release-acked-by: Juergen Gross <jgross@suse.com>
This commit is contained in:
George Dunlap authored and Wei Liu committed 2019-01-25 17:09:04 +00:00
1 parent 3389a8dc8c
commit 3ec62664bd
2 files changed
+15 -95

No files matched your search

+7 -3
View File
@@ -110,10 +110,14 @@ See docs/design/qemu-deprivilege.md for technical details.
The following features still need to be implemented:
* Inserting a new cdrom while the guest is running (xl cdrom-insert)
* Migration / save / restore
* Support for qdisk backends
dm_restrict is totally unsupported and may have unexpected security
problems if used with a dom0 Linux kernel earlier than 2.6.18.
A number of restrictions still need to be implemented. A compromised
device model may be able to do the following:
* Delay or exploit weaknesses in the toolstack
* Launch "fork bombs" or other resource exhaustion attacks
* Make network connections on the management network
* Break out of the restrictions after migration
Additionally, getting PCI passthrough to work securely would require a
significant rework of how passthrough works at the moment. It may be
+8 -92
View File
@@ -1316,104 +1316,20 @@ connectors=id0:1920x1080;id1:800x600;id2:640x480
Restrict the device model after startup,
to limit the consequencese of security vulnerabilities in qemu.
With this feature enabled,
a compromise of the device model,
via such a vulnerability,
will not provide a privilege escalation attack on the whole system.
See docs/features/qemu-depriv.pandoc for more information
on Linux and QEMU version requirements, device model user setup,
and current limitations.
This feature is a B<technology preview>.
There are some significant limitations:
See SUPPORT.md for a security support statement.
=over 4
=item B<device_model_user=USERNAME>
=item
When running dm_restrict, run the device model as this user.
This is not likely to work at all for PV guests
nor guests using qdisk backends for their block devices.
NOTE: Each domain MUST have a SEPARATE username.
=item
You must have a new enough qemu.
In particular,
if your qemu does not have the commit
B<xen: restrict: use xentoolcore_restrict_all>
the restriction request will be silently ineffective!
=item
The mechanisms used are not effective against
denial of service problems.
A compromised qemu can probably still impair
or perhaps even prevent
the proper functioning of the whole system,
(at the very least, but not limited to,
through resource exhaustion).
=item
It is not known whether the protection is
effective when a domain is migrated.
=item
Some domain management functions do not work.
For example, cdrom insert will fail.
=item
You should say C<vga="none">.
Domains with stdvga graphics cards to not work.
Domains with cirrus vga may seem to work.
=item
You must create user(s) for qemu to run as.
Ideally, set aside a range of 32752 uids
(from N to N+32751)
and create a user
whose name is B<xen-qemuuser-range-base>
and whose uid is N
and whose gid is a plain unprivileged gid.
libxl will use one such user for each domid.
Alternatively, either create
B<xen-qemuuser-domid$domid>
for every $domid from 1 to 32751 inclusive,
or
B<xen-qemuuser-shared>
(in which case different guests will not
be protected against each other).
=item
There are no countermeasures taken against reuse
of the same unix user (uid)
for subsequent domains,
even if the B<xen-qemuuser-domid$domid> users are created.
So a past domain with the same domid may be able to
interferer with future domains.
Possibly, even after a reboot.
=item
A compromised qemu will be able to read world-readable
files in the dom0 operating system.
=item
Because of these limitations, this functionality,
while it may enhance your security,
should not be relied on.
Any further limitations discovered in the current version
will B<not> be handled via the Xen Project Security Process.
=item
In the future as we enhance this feature to improve the security,
we may break backward compatibility.
=back
See docs/features/qemu-depriv.pandoc for more information.
=item B<vsnd=[ VCARD_SPEC, VCARD_SPEC, ... ]>
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.