News, tips, partners, and perspectives for the Oracle Linux operating system and upstream Linux kernel work

Multiprocess QEMU: Breaking up is hard to do

QEMU is the backbone of virtualization on Linux, providing control plane and emulation services for guest VMs. One of the most common complaints about QEMU stems from its monolithic nature -- one process that does both control and emulation exposes more "surface area" that we, in turn, have to protect from security vulnerabilities. Well perhaps no longer, as multi-process QEMU has now been accepted into the QEMU code-base.

Congratulations to Jag Raman, Elena Ufimtseva and John Johnson on taking this code from idea to reality.

This patchset represents the culmination of more than two years of difficult work and a dozen patchset submissions, starting from the original conference submission by Konrad Wilk at KVM Forum in 2017, the first RFC in 2018, and the successful v12 patchset. This is a major accomplishment!

How does this help security? In addition to minimizing the attack surface for guests, it also isolates any emulated devices. If an attacker gains control of an emulated device, their access will be constrained by the strict SELinux controls on that device. This change also allows developers to write QEMU backends in their preferred language like Rust or Go.

Read the full patch submission and responses at lists.gnu.org/qemu-devel

From: 	Jagannathan Raman
Subject: 	[PATCH v12 00/19] Initial support for multi-process Qemu
Date: 	Tue, 1 Dec 2020 15:22:35 -0500

To touch upon the history of this project, we posted the Proof Of
Concept patches before the BoF session in 2018. Subsequently, we have
posted 11 versions on the qemu-devel mailing list. You can find them
by following the links below ([1] - [11]).Following people contributed
to the design and implementation of this project:
Jagannathan Raman 
Elena Ufimtseva 
John G Johnson 
Stefan Hajnoczi 
Konrad Wilk 
Kanth Ghatraju 

We would like to thank QEMU community for your feedback in the
design and implementation of this project.Qemu wiki page:

For the full concept writeup about QEMU multi-process, please
refer to docs/devel/qemu-multiprocess.rst. Also see
docs/qemu-multiprocess.txt for usage information. We welcome
all your ideas, concerns, and questions for this patchset.

Thank you!

[POC]: https://www.mail-archive.com/qemu-devel@nongnu.org/msg566538.html
[1]: https://www.mail-archive.com/qemu-devel@nongnu.org/msg602285.html
[2]: https://www.mail-archive.com/qemu-devel@nongnu.org/msg624877.html
[3]: https://www.mail-archive.com/qemu-devel@nongnu.org/msg642000.html
[4]: https://www.mail-archive.com/qemu-devel@nongnu.org/msg655118.html
[5]: https://www.mail-archive.com/qemu-devel@nongnu.org/msg682429.html
[6]: https://www.mail-archive.com/qemu-devel@nongnu.org/msg697484.html
[7]: https://patchew.org/QEMU/cover.1593273671.git.elena.ufimtseva@oracle.com/
[8]: https://www.mail-archive.com/qemu-devel@nongnu.org/msg727007.html
[9]: https://www.mail-archive.com/qemu-devel@nongnu.org/msg734275.html
[10]: https://www.mail-archive.com/qemu-devel@nongnu.org/msg747638.html
[11]: https://www.mail-archive.com/qemu-devel@nongnu.org/msg750972.html

Thank you!

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.