Description
Canonical LXD versions 4.12 through 6.7 contain an incomplete denylist in isVMLowLevelOptionForbidden (lxd/project/limits/permissions.go), which omits raw.apparmor and raw.qemu.conf from the set of keys blocked under the restricted.virtual-machines.lowlevel=block project restriction. A remote attacker with can_edit permission on a VM instance in a restricted project can inject an AppArmor rule and a QEMU chardev configuration that bridges the LXD Unix socket into the guest VM, enabling privilege escalation to LXD cluster administrator and subsequently to host root.
Problem types
CWE-184 Incomplete list of disallowed inputs
Product status
4.12.0 (semver) before 5.0.7
5.1.0 (semver) before 5.21.5
6.0.0 (semver) before 6.8.0
Credits
Miha Purg
References
github.com/...al/lxd/security/advisories/GHSA-fm2x-c5qw-4h6f
github.com/...al/lxd/security/advisories/GHSA-fm2x-c5qw-4h6f (VM lowlevel restriction bypass via raw.apparmor and raw.qemu.conf)
github.com/canonical/lxd/pull/17909 (lxd: Prevent use of raw.apparmor and raw.qemu.conf when low level options are blocked)