
From: Wang, Zhi A Sent: Wednesday, August 22, 2018 2:43 AM
Are there any suggestions how we can deal with security issues? Allowing userspace to provide a data stream representing the internal state of a virtual device model living within the kernel seems troublesome. If we need to trust the data stream, do we need to somehow make the operation more privileged than what a vfio user
might
have otherwise? Does the data stream need to be somehow signed and how might we do that? How can we build in protection against an untrusted restore image? Thanks,
imo it is not necessary. restoring mdev state should be handled as if guest is programming the mdev. Then all the audits/security checks enforced in normal emulation path should still apply. vendor driver may choose to audit every state restore operation one-by-one, and do it altoghter at a synchronization point (e.g. when the mdev is re- scheduled, similar to what we did before VMENTRY).
What a good point!
I dig the kernel module security case, which seems similar with this case. The security of loading kernel module relies on root privilege and signature.
For root privilege, QEMU could run as non root in libvirtd. So this wouldn't be an option.
For signature, I am wondering if there is any similar cases in other kernel components, like KVM or another modules which provides ioctls to userspace. Maybe they don't even load some binary from userspace, but they could suffer from DDOS flood from userspace. Maybe some ioctls or interfaces in kernel should only allow signed/trusted userspace application to call. (previously it's "allow signed kernel module to load")
Thanks, Zhi.
Alex