[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC 1/4] libxl: Learned to send FD through QMP to QEMU
On Tue, Mar 27, 2018 at 11:29:35AM +0100, Ian Jackson wrote: > (George, CC'ing you wrt your depriv doc patch - see below.) > > Anthony PERARD writes ("[RFC 1/4] libxl: Learned to send FD through QMP to > QEMU"): > > + /* File descriptor to send to QEMU on the next command */ > > + int fd_to_send; > > I did wonder if this was a layering violation, or a poor API in some > other sense. AFAICT it isn't, and libxl__qmp_handler is completely > transparent to everything in libxl_qmp.c. > > I think this whole file would benefit from some doc comments about the > internal interfaces. Particularly, something describing the boundary > between operation-specific code and the generic qmp_send machinery > would help review of both (i) new operations and (ii) extensions of > the generic machinery. I'll try to write some documentation. > Looking at this and the next patch, I think (almost?) every user of > this new feature will need to tell qmp_send to call > qmp_fdset_add_fd_callback. Is that right ? Maybe this means we want > to provide a more cooked version. Not exactly. We can add a parameter to "add-fd" to use a specific "fdset-id". > Anthony PERARD writes ("[RFC 2/4] libxl: Have QEMU save its state to a file > descriptor"): > > In case QEMU have restricted access to the system, open the file for it, > > and QEMU will save its state to this file descritor. > > This 2nd patch looks reasonable, but it prompted to notice two new > kinds of hazard introduced by the deprivileging design goal: > > > int libxl__qmp_save(libxl__gc *gc, int domid, const char *filename, bool > > live) > > { > ... > > + rc = qmp_synchronous_send(qmp, "add-fd", NULL, > > + qmp_fdset_add_fd_callback, &new_fdset, > > + qmp->timeout); > > + if (rc) > > + goto out; > > By this point, a depriv'd qemu must be assumed to be compromised by > its guest - ie we must treat it as hostile. > > This is not consistent with use of qmp_synchronous_send, because > qmp_synchronous_send will block with both the domain and ctx locks > held. That is, a malicious qemu can deny service; it even has the > ability to prevent its serviced domain from being destroyed. > > Secondly, the point about qemu now being malicious means that we need > to audit the code which handles communications with qemu for safety. > > I think this means that: > > * George's todo list patch for the depriv doc should mention > the need to replace qmp_synchronous_send with qemp_send. > > * Likewise it should mention the need for this audit. > > * We should write a comment somewhere (near the top of libxl_qmp.c > perhaps) warning developers not to treat qemu as trusted. That > would usefully fit into your own series. > > I volunteer to do the audit. Some internal commentary about the > internal interfaces (as I discuss above) would be helpful for that. I think we would need to rewrite part of libxl_qmp.c to use the libxl__ev_*, so QEMU would not be able to block libxl. -- Anthony PERARD _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |