安全决策报告

agile-workflow

硬编码用户目录路径 + 文档-实现严重偏离 + CORS 全开放,工具伪装成通用工作流但实际绑定特定用户环境,权限声明宽泛但未披露关键设计细节。

安装决策优先 来源: ClawHub 扫描时间: 2026/4/6
文件 140
IOC 3
越权项 4
发现 6
最直接的威胁证据

为什么得出这个结论

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

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

阻止
隐藏执行与外联

提取到 1 个高危 IOC 或外联信号。

通过
攻击链与高危发现

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

复核
依赖与供应链卫生

发现 2 项需要关注的依赖或供应链线索。

风险分是怎么被拉高的

硬编码用户目录路径 +15

所有核心模块硬编码 /home/ubutu/ 路径,工具伪装成通用但实际绑定特定用户环境

文档-实现严重偏离 +12

SKILL.md 描述通用敏捷工作流,代码却包含大量未声明的 novel_architect/novel_writer/novel_editor 专用 Agent 逻辑

CORS 全开放 +5

dashboard/server.js CORS origin: '*',暴露 API 给任意来源

文档中存在危险命令 +5

docs/DELIVERY-CHECKLIST.md:256 包含 rm -rf / 危险命令,虽在文档中非代码但需审查来源

process.kill SIGKILL 强制终止 +5

global-process-manager.js 使用 SIGKILL 强制杀死进程,可能导致数据丢失

最关键的证据

中危 文档欺骗

硬编码用户目录路径

所有核心 JS 文件(task-scheduler.js, agent-process-pool.js, submit-report.js 等)硬编码 /home/ubutu/ 绝对路径,SKILL.md 完全未提及此设计约束,工具伪装成通用但实际只能运行在特定用户环境中。

core/task-scheduler.js:13
将所有路径改为环境变量或配置文件读取,不要硬编码用户目录
中危 文档欺骗

文档未披露专用 Agent 类型

SKILL.md 描述通用敏捷工作流引擎,但代码中 hardcode novel_architect/novel_writer/novel_editor 等小说创作专用 Agent 类型,且未在任何文档中声明。

core/agent-process-pool.js:63
SKILL.md 应明确声明这是小说创作专用工作流引擎及其支持的 Agent 类型
中危 敏感访问

Dashboard CORS 全开放

dashboard/backend/server.js 中 CORS 配置为 origin: '*',允许任意来源访问任务/Agent 管理 API(包括 start/stop Agent),存在 CSRF 和接口滥用风险。

dashboard/backend/server.js:63
限制 CORS 到受信任的域名,不要使用通配符
低危 代码执行

agent-process-pool.js 动态加载外部模块

agent-process-pool.js 尝试从多个路径动态加载 FileManager/ModelConstraintInjector/ModelActionLogger 模块,失败时有备用方案,但动态加载机制本身增加了供应链风险。

core/agent-process-pool.js:23
使用 package.json 声明依赖,不要动态路径拼接
低危 权限提升

pkill 进程清理可能误杀关键进程

cleanupStaleProcesses 使用 pkill -f 杀死匹配 Agent 类型的进程,如果模式匹配宽泛可能误杀其他合法进程。

core/agent-process-pool.js:49
使用更精确的进程匹配模式,避免误杀
提示 敏感访问

文档中存在危险 shell 命令

docs/DELIVERY-CHECKLIST.md:256 包含 'rm -rf /' 命令,虽在 Markdown 文档中非可执行代码,但该命令来源和存在目的需人工审查确认非恶意注入。

docs/DELIVERY-CHECKLIST.md:256
删除文档中的危险命令,该命令无任何合理用途

声明能力 vs 实际能力

文件系统 阻止
声明 NONE
推断 WRITE
多个文件多处写入状态文件、经验库、Agent 输出
命令执行 阻止
声明 NONE
推断 WRITE
task-scheduler.js:157 exec()调用外部CLI; agent-process-pool.js:298 spawn()创建子进程; cleanupStaleProcesses pkill
环境变量 阻止
声明 NONE
推断 READ
task-scheduler.js 环境变量注入 OPENCLAW_TASK_ID 等
网络访问 阻止
声明 NONE
推断 WRITE
dashboard/server.js 暴露 REST API + WebSocket,CORS 全开放

可疑产物与外联

严重 危险命令
rm -rf /

docs/DELIVERY-CHECKLIST.md:256

中危 外部 URL
https://opencollective.com/ioredis

package-lock.json:77

中危 外部 URL
https://clawhub.com/skills/agile-workflow

package.json:39

依赖与供应链

包名版本来源漏洞备注
ioredis ^5.10.0 npm 无已知漏洞,Redis 客户端
express * npm (dashboard) dashboard/backend 未声明但被 require
socket.io * npm (dashboard) dashboard/backend 未声明但被 require

文件构成

140 个文件 · 51586 行
JavaScript 66 个文件 · 26974 行Markdown 64 个文件 · 23522 行HTML 1 个文件 · 669 行JSON 7 个文件 · 329 行Shell 2 个文件 · 92 行
需关注文件 · 4
docs/ADD-v7.18-Token 超限修复.md Markdown · 414 行
docs/ADD-v7.22-Token 超限紧急修复.md Markdown · 299 行
core/token-counter.js JavaScript · 141 行
core/agent-process-pool.js JavaScript · 745 行
文档未披露专用 Agent 类型 · agent-process-pool.js 动态加载外部模块 · pkill 进程清理可能误杀关键进程
其他文件 · health-check-v2.js · health-check.js · self-healing-monitor.js · agile-workflow-engine-v5.js · ADD-v7.0-并发安全架构.md · test-framework.js +2

安全亮点

全局进程数限制(MAX_TOTAL_AGENTS=5),防止资源耗尽
进程池单实例锁机制,防止多实例竞争
产出物验证机制(文件存在性+内容有效性)
Agent 并发分组控制(novel_architect 串行,novel_editor 并发=2)
Token 计数和自动分片机制设计合理
无 base64 编码、eval、裸 IP 请求等明显恶意模式
无凭证收割、外传数据、外部 C2 通信行为