
On Wed, Jan 15, 2025 at 11:49:43AM -0300, Georgia Garcia wrote:
On Tue, 2025-01-14 at 12:13 -0600, Andrea Bolognani wrote:
Going by the example presented in [1], IIUC your change would make it so the lines needed for macvtap use, specifically
"/dev/net/tun" rwk, "/dev/tap82" rwk,
would be written to .runtime_files instead of .files. That's good enough to safeguard them from disappearing when disks are unplugged, but what if the macvtap interface itself is? Wouldn't those lines linger around despite being no longer needed?
Yes, they would, and that is the current behavior - if you remove only the macvtap, it will not be removed from .files
That's the current limitation because there are no security hooks called when macvtap devices are unplugged. I thought it would be better to be over-permissive (fd permissions linger throughout the runtime of the vm) than over-restrictive to fix the issue given what's available in the security side of libvirt.
From a functional standpoint sure, leaving rules behind is not a problem. But considering that the whole point of a security driver is to prevent the QEMU process from accessing resources that it shouldn't have access to, I would consider it a pretty serious flaw.
So I think we really need a --remove-file option that can be used to carefully undo the changes applied by an earlier use of --add-file.
Unfortunately this will likely involve a far more significant rework of the AppArmor driver, and we will certainly have to be careful about not introducing regressions in the process, but I'm really not a fan of half measures unless the trade-off is overwhelmingly stacked in their favor...
As I said earlier, it would also involve the addition of at least one security hook, impacting all security drivers. But yes, this change would basically involve rewriting the entire AppArmor driver and a part of virt-aa-helper. While I'm not against it, unfortunately I will not be able to dedicate the amount of time needed for such a significant change.
I haven't looked in detail at how much work adding the ability to remove rules on device unplug would require, but surely "basically rewrite the entire driver" is an overexaggeration? Look, I understand that you probably just want to fix the issue that's affecting your customers then move on with your life, and generally speaking I don't really have a problem with partial fixes that merely get us closer to the solution instead of all the way there. However, the changes you're proposing here alter how the driver operates in a pretty fundamental and, critically, user-visible way. I'm not keen on switching to a new approach while already being aware of the fact that a full fix with require yet another pivot... -- Andrea Bolognani / Red Hat / Virtualization