安全决策报告
MemOptimizer
MemOptimizer 是合法的记忆优化工具,无恶意行为。存在轻微文档-实现差异(未声明 shell 执行和跨智能体 memory 访问),但均为合理的系统监控功能。
为什么得出这个结论
1/4 个维度触发 阻止
声明与实际能力
发现 1 项声明之外的能力或越权行为。
通过
隐藏执行与外联
当前没有明显的高危外联或执行信号。
通过
攻击链与高危发现
没有形成明确的恶意路径。
复核
依赖与供应链卫生
没有完整依赖信息,供应链判断需要保留弹性。
风险分是怎么被拉高的
未声明的 shell 执行 +10
getServerStatus() 执行 top/free/df 命令获取系统状态,SKILL.md 未提及
未声明的跨智能体访问 +10
scanAllAgentsWorkspaces() 访问 /root/.openclaw/agents/ 下各智能体的 memory 目录,SKILL.md 仅描述单智能体场景
最关键的证据
低危 文档欺骗
Shell 执行未声明
getServerStatus() 函数通过 exec 执行系统命令(top, free, df, uptime)获取服务器状态,用于每日报告。SKILL.md 在「每日总结报告」中提到服务器状态但未说明是通过 shell 命令获取。
index.js:243 在 SKILL.md 中明确说明会执行只读的系统命令来获取服务器监控信息
低危 文档欺骗
跨智能体 memory 访问未声明
scanAllAgentsWorkspaces() 函数会扫描 /root/.openclaw/agents/ 下所有智能体的工作空间,访问其 memory 目录。SKILL.md 主要描述单智能体优化场景,多智能体功能描述较简略。
index.js:314 在 SKILL.md 中明确说明多智能体模式会访问其他智能体的 memory 目录
低危 文档欺骗
tools.json 参数声明不完整
mem_optimize 函数实际支持 multiAgent、message、text、includeReflection 等参数,但 tools.json 仅声明了 dryRun 参数。
tools.json:1 更新 tools.json 声明以匹配实际参数
声明能力 vs 实际能力
文件系统 通过
声明 READ
→ 推断 READ
index.js:34 scanMemoryFiles 扫描 memory 目录 命令执行 阻止
声明 NONE
→ 推断 READ
index.js:243 getServerStatus 使用 exec 执行 top/free/df 命令 环境变量 通过
声明 NONE
→ 推断 NONE
无访问环境变量的代码 可疑产物与外联
没有提取到明显 IOC。
依赖与供应链
没有结构化依赖告警。
文件构成
3 个文件 · 1179 行
JavaScript 1 个文件 · 827 行Markdown 1 个文件 · 302 行JSON 1 个文件 · 50 行
需关注文件 · 2
index.js Shell 执行未声明 · 跨智能体 memory 访问未声明
tools.json tools.json 参数声明不完整
其他文件 · SKILL.md
安全亮点
无凭证收割行为,不读取 .ssh、.aws、.env 等敏感路径
无网络外传行为,不存在数据外泄风险
无代码混淆或恶意编码
无持久化后门植入
文件写入仅限 memory 目录且需要 dryRun: false
shell 命令为只读系统监控命令(top/free/df/uptime)
默认 dryRun: true 预览模式保护用户数据