安全决策报告
task-progress-stream
技能功能表面合理,但存在多处文档未声明的副作用操作:状态文件写入本地目录、通过openclaw gateway本地通信、执行shell命令。缺少敏感路径隔离和命令白名单机制,存在被滥用执行任意命令的风险。
最直接的威胁证据
为什么得出这个结论
1/4 个维度触发 阻止
声明与实际能力
发现 4 项声明之外的能力或越权行为。
通过
隐藏执行与外联
当前没有明显的高危外联或执行信号。
通过
攻击链与高危发现
没有形成明确的恶意路径。
复核
依赖与供应链卫生
没有完整依赖信息,供应链判断需要保留弹性。
风险分是怎么被拉高的
未声明的文件系统写入 +10
SKILL.md未说明会写入 $cwd/runs/task-progress-stream/ 目录
通过openclaw gateway通信 +5
未声明与本地openclaw gateway交互行为
shell执行权限宽泛 +15
使用/bin/bash -lc执行任意用户命令,无命令白名单
进程组管理可能误杀 +5
process.kill(-child.pid)可能影响非相关进程
最关键的证据
中危 文档欺骗
状态文件写入未声明
代码会将进度状态写入 $cwd/runs/task-progress-stream/*.status.json 和 *.status.md,SKILL.md完全未提及
scripts/task_progress_stream.js:206 SKILL.md应明确说明输出文件位置和内容
中危 文档欺骗
OpenClaw Gateway通信未声明
代码通过spawn openclaw gateway call chat.inject与本地聊天系统交互,SKILL.md未提及此行为
scripts/task_progress_stream.js:244 SKILL.md应说明会调用OpenClaw API注入消息
中危 代码执行
任意shell命令执行无限制
--cmd参数直接传入/bin/bash -lc执行,可执行任意shell命令,缺少命令白名单或路径限制
scripts/task_progress_stream.js:298 考虑添加--allowed-commands参数限制可执行范围
低危 权限提升
进程组管理可能误杀系统进程
process.kill(-child.pid)使用负PID杀死整个进程组,可能意外终止无关进程
scripts/task_progress_stream.js:330 考虑只杀死子进程而非整个进程组
声明能力 vs 实际能力
文件系统 阻止
声明 NONE
→ 推断 WRITE
scripts/task_progress_stream.js:206-207 writeJson/writeText写入状态文件 命令执行 阻止
声明 NONE
→ 推断 WRITE
scripts/task_progress_stream.js:298 spawn '/bin/bash' '-lc' cmd 环境变量 阻止
声明 NONE
→ 推断 READ
scripts/task_progress_stream.js:292 cwd参数来自用户 网络访问 阻止
声明 NONE
→ 推断 READ
scripts/task_progress_stream.js:244 spawn openclaw gateway本地通信 可疑产物与外联
没有提取到明显 IOC。
依赖与供应链
没有结构化依赖告警。
文件构成
2 个文件 · 528 行
JavaScript 1 个文件 · 473 行Markdown 1 个文件 · 55 行
需关注文件 · 1
scripts/task_progress_stream.js 状态文件写入未声明 · OpenClaw Gateway通信未声明 · 任意shell命令执行无限制 · 进程组管理可能误杀系统进程
其他文件 · SKILL.md
安全亮点
无外部网络请求,仅本地openclaw通信
无凭证窃取或环境变量遍历行为
无Base64或混淆代码
无HTML注释隐藏指令
核心功能(进度解析)实现合理