安全决策报告

silicaclaw-owner-push

SKILL.md 声明「不执行任意代码」,但代码通过 OPENCLAW_OWNER_FORWARD_CMD 环境变量支持 shell 执行,存在文档-行为差异(阴影功能)

安装决策优先 来源: 手动上传 扫描时间: 2026/4/3
文件 8
IOC 0
越权项 2
发现 4
最直接的威胁证据

为什么得出这个结论

1/4 个维度触发
阻止
声明与实际能力

发现 2 项声明之外的能力或越权行为。

通过
隐藏执行与外联

当前没有明显的高危外联或执行信号。

通过
攻击链与高危发现

没有形成明确的恶意路径。

复核
依赖与供应链卫生

没有完整依赖信息,供应链判断需要保留弹性。

风险分是怎么被拉高的

文档-行为差异(阴影功能) +20

SKILL.md 声明「不执行任意代码 from broadcasts」,但代码支持通过 OPENCLAW_OWNER_FORWARD_CMD 执行 shell 命令

未声明的文件系统 WRITE +5

代码读写状态文件 ~/.openclaw/workspace/state/silicaclaw-owner-push.json,SKILL.md 未提及持久化存储

命令执行能力未声明 +10

owner-push-forwarder.mjs 使用 spawn()、send-to-owner-via-openclaw.mjs 使用 spawnSync(),均未在 SKILL.md 声明

最关键的证据

中危

SKILL.md 安全边界声明不完整

SKILL.md 声明「will not execute arbitrary code from broadcasts」,但代码实现了通过 OPENCLAW_OWNER_FORWARD_CMD 环境变量执行任意 shell 命令的能力。这是文档-行为差异(shadow capability)

SKILL.md:79
修改安全边界声明,明确说明:可通过 OPENCLAW_OWNER_FORWARD_CMD 环境变量执行配置的转发命令,这是正常的消息转发功能
中危

未声明的 shell 执行能力

owner-push-forwarder.mjs 使用 spawn() 执行外部命令,send-to-owner-via-openclaw.mjs 使用 spawnSync() 执行 openclaw CLI,均未在 SKILL.md 声明

scripts/owner-push-forwarder.mjs:165
在 SKILL.md 文档能力部分明确列出 shell 执行能力,说明这是配置驱动的消息转发功能
低危

状态持久化未声明

代码将推送状态持久化到 ~/.openclaw/workspace/state/silicaclaw-owner-push.json,包括已推送消息 ID 和游标,但 SKILL.md 未提及此行为

scripts/owner-push-forwarder.mjs:62
在 SKILL.md 中说明状态持久化机制,确保用户了解数据存储位置
提示

Shell 执行是可选的受控功能

shell 执行能力通过 OPENCLAW_OWNER_FORWARD_CMD 环境变量启用,不是默认行为,且命令执行受配置文件控制

scripts/owner-push-forwarder.mjs:153
保持当前设计,在文档中明确说明配置方式即可

声明能力 vs 实际能力

网络访问 通过
声明 READ
推断 READ
scripts/owner-push-forwarder.mjs:43 请求 localhost:4310,符合 SKILL.md 声明
文件系统 阻止
声明 NONE
推断 WRITE
scripts/owner-push-forwarder.mjs:62-63 writeFileSync() 写入状态文件 ~/.openclaw/workspace/state/
命令执行 阻止
声明 NONE
推断 WRITE
scripts/owner-push-forwarder.mjs:165 spawn() 执行 OPENCLAW_OWNER_FORWARD_CMD;scripts/send-to-owner-via-openclaw.mjs:26 spawnSync() 执行 openclaw 命令

可疑产物与外联

没有提取到明显 IOC。

依赖与供应链

没有结构化依赖告警。

文件构成

8 个文件 · 870 行
JavaScript 2 个文件 · 425 行Markdown 4 个文件 · 409 行JSON 1 个文件 · 30 行YAML 1 个文件 · 6 行
需关注文件 · 2
scripts/owner-push-forwarder.mjs JavaScript · 356 行
未声明的 shell 执行能力 · 状态持久化未声明 · Shell 执行是可选的受控功能
SKILL.md Markdown · 235 行
SKILL.md 安全边界声明不完整
其他文件 · owner-dialogue-cheatsheet-zh.md · send-to-owner-via-openclaw.mjs · push-routing-policy.md · runtime-setup.md · manifest.json · openai.yaml

安全亮点

代码结构清晰,无明显的恶意行为指标(无 base64 编码、eval、隐藏脚本等)
网络请求仅访问声明的 localhost:4310 本地端点
消息过滤机制合理,支持 topic/keyword 过滤减少噪音
使用状态文件避免重复推送
无凭证收割、环境变量遍历或数据外泄行为
manifest.json 声明的能力与实际代码功能一致