CVE-2026-34177Canonical LXD 4.12至6.7版本中存在一个严重的安全漏洞,源于`isVMLowLevelOptionForbidden`函数中的拒绝列表不完整。该漏洞遗漏了对`raw.apparmor`和`raw.qemu.conf`配置项的拦截,即使在设置了`restricted.virtual-machines.lowlevel=block`项目限制的情况下,拥有虚拟机编辑权限的远程攻击者仍可注入恶意的AppArmor规则和QEMU字符设备配置。攻击者利用此漏洞可将LXD的Unix域套接字桥接到客户机虚拟机中,从而允许从虚拟机内部与宿主机的LXD守护进程通信,最终实现从受限项目用户提升至LXD集群管理员权限,并进一步获取宿主机的Root权限。
该漏洞的核心在于LXD的项目限制机制未能正确过滤所有危险的低级配置选项。函数`isVMLowLevelOptionForbidden`位于`lxd/project/limits/permissions.go`中,旨在防止非管理员用户修改虚拟机的底层设置。然而,该函数的黑名单并未包含`raw.apparmor`和`raw.qemu.conf`。攻击者首先利用`raw.apparmor`注入AppArmor配置规则,解除对宿主机特定文件路径(如LXD Unix套接字)的访问限制。随后,攻击者通过`raw.qemu.conf`添加QEMU字符设备定义,将宿主机的LXD API Unix套接字(通常为`/var/snap/lxd/common/lxd/unix.socket`)映射到虚拟机内部。重启虚拟机后,攻击者即可在Guest OS内直接通过该套接字调用LXD API。由于LXD守护进程以Root权限运行,攻击者可借此创建特权容器、挂载敏感目录或执行任意系统命令,从而绕过项目隔离限制,完全控制宿主机。