app-emulation/qemu: add rule to fix permissions on /dev/vfio/vfio
authorMatthias Maier <tamiko@gentoo.org>
Tue, 27 Mar 2018 15:10:52 +0000 (10:10 -0500)
committerMatthias Maier <tamiko@gentoo.org>
Tue, 27 Mar 2018 15:44:04 +0000 (10:44 -0500)
commit2fc1bc6c7b1f41a3a7df74ce8e170996eb7e36d9
tree3a86f795a150620a8120b14f952a57cff5d9325e
parent190b1a61ae287c47f2bcd4bee4cb620d6facaecd
app-emulation/qemu: add rule to fix permissions on /dev/vfio/vfio

The device node /dev/vfio/vfio gets created on modprobing the vfio*
modules. This happens in particular on demand when a qemu vm with PCI
passthrough is started up. The default permissios for the freshly
created device node is

  crw-rw-rw-  1 root root 10, 196 Mar 27 08:44 /dev/vfio/vfio

This is terrible.

This patch adds an udev rules and makes sure that the device node has rw
permissions for user root, and group kvm (and no permissions for all).
This fixes

 - startup when a qemu-kvm is started as non-root (provided the user is
   in group kvm, which is our current policy for accessing /dev/kvm, etc.,
   anyway).

 - work around this security vulnerability, where /dev/vfio/vfio is
   created with world writable permissions upon modprobe. [1]

Thanks to username234, Kash Pande, Ted Rodgers for discovery and patch!

[1] Steps to reproduce:

    % ls -la /dev/vfio/vfio
    crw-------  1 root root 10, 196 Mar 27 15:40 /dev/vfio/vfio

    % modprobe vfio

    % ls -la /dev/vfio/vfio
    crw-rw-rw-  1 root root 10, 196 Mar 27 15:41 /dev/vfio/vfio

[2] I cannot find an udev rule installed by libvirt/qemu/... that
    triggers these permissions.

Bug: https://bugs.gentoo.org/651668
Package-Manager: Portage-2.3.24, Repoman-2.3.6
RepoMan-Options: --force
app-emulation/qemu/files/65-vfio.rules [new file with mode: 0644]
app-emulation/qemu/qemu-2.11.1-r2.ebuild [moved from app-emulation/qemu/qemu-2.11.1-r1.ebuild with 99% similarity]