CVE-2026-40251Incus 是一个系统容器和虚拟机管理器。在 7.0.0 版本之前,其存储卷导入逻辑中缺少验证,允许拥有存储卷访问权限的经过身份验证的用户导致 Incus 守护进程崩溃。备份恢复子系统包含一个由索引快照元数据数组时的无效边界检查引起的越界崩溃漏洞。攻击者可提交包含物理快照目录的备份存档,并提供篡改过的 index.yaml,导致守护进程崩溃,从而造成拒绝服务。
该漏洞位于备份恢复子系统中,由索引快照元数据数组时的无效边界检查引起。当迭代备份存档中的物理快照时,循环使用索引在解析后的 `Config.Snapshots` 和 `Config.VolumeSnapshots` 切片中查找对应的元数据。代码中的保护条件 `len(slice) >= i-1` 存在逻辑错误,因为它在随后的 `slice[i]` 访问越界时仍可能评估为真。具体而言,当循环索引 `i` 递增以访问物理快照时,代码尝试在 `slice[i]` 处检索元数据。然而,检查 `len(slice) >= i-1` 在试图访问最后一个有效元素时未能正确防止越界访问,特别是在元数据数组被截断或为空但物理文件存在的情况下。这种逻辑缺陷允许索引超过切片长度,导致 Go 运行时 panic。攻击者可利用此缺陷,提交一个包含物理快照目录的备份存档,同时提供一个篡改过的 `index.yaml` 文件,其中包含空的或截断的快照元数据数组。这将导致守护进程索引超出元数据切片的末尾并发生崩溃。重复利用此问题可使 Incus 持续离线,造成拒绝服务。