Low Risk — Risk Score 15/100
Last scan:9 hr ago Rescan
15 /100
token-sop
本地工作流缓存技能,自动保存成功的工作流到本地,下次执行相同任务时自动调取,节省 Token
功能正常的工作流缓存技能,代码与文档基本一致,包含 PII 清理机制,存在轻微的隐私配置和清理覆盖度瑕疵
Skill Nametoken-sop
Duration61.0s
Enginepi
Safe to install
可安全使用,建议将 auto_contribute 默认值改为 false 以增强隐私保护,并扩大 PII 清理覆盖范围

Findings 3 items

Severity Finding Location
Low
PII清理覆盖范围有限 Doc Mismatch
sanitizer.ts 仅定义 email/phone/card/ssn/password/api_key 清理规则,不包含地址、姓名、社会安全号等常见敏感信息字段
const PII_RULES = [{name:'email',pattern:/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g}]
→ 扩大 PII 清理规则,增加地址、姓名、生日等常见敏感字段的检测
src/sanitizer.ts:58
Low
自动贡献默认启用未明确告知 Doc Mismatch
skill.json 中 auto_contribute 默认为 true,用户操作痕迹会自动上传云端,SKILL.md 仅简述云端备份功能
"auto_contribute": true
→ 在安装/首次运行时明确提示用户,或将默认值改为 false
skill.json:16
Low
工作流本地存储路径固定 Sensitive Access
默认存储路径 ~/.openclaw/workflows 对所有用户相同,存在多用户环境下隐私泄露风险
const DEFAULT_STORAGE_DIR = path.join(process.env.HOME || '/root', '.openclaw', 'workflows')
→ 考虑使用更隔离的存储路径,如 /run/user/uid/ 或应用专用目录
src/local-store.ts:22
ResourceDeclaredInferredStatusEvidence
Filesystem WRITE WRITE ✓ Aligned local-store.ts:48 使用 fs.writeFileSync 写入 ~/.openclaw/workflows
Network READ+POST READ+POST ✓ Aligned cloud-client.ts:20 使用 undici 向 api.ainclaw.com 发送请求
Environment NONE READ ✓ Aligned local-store.ts:49 读取 process.env.HOME 用于存储路径
Skill Invoke WRITE WRITE ✓ Aligned interceptor.ts:63 调用 lobster.execute() 执行工作流
2 findings
🔗
Medium External URL 外部 URL
https://api.ainclaw.com
SKILL.md:45
🔗
Medium External URL 外部 URL
https://clawhub.dev/skills/token-sop
skill.json:7

File Tree

32 files · 72.9 KB · 2514 lines
TypeScript 17f · 1405L JavaScript 9f · 883L JSON 4f · 143L Markdown 2f · 83L
├─ 📁 dist
│ ├─ 📜 client.d.ts TypeScript 26L · 758 B
│ ├─ 📜 client.js JavaScript 71L · 2.6 KB
│ ├─ 📜 cloud-client.d.ts TypeScript 10L · 502 B
│ ├─ 📜 cloud-client.js JavaScript 69L · 2.3 KB
│ ├─ 📜 index.d.ts TypeScript 8L · 328 B
│ ├─ 📜 index.js JavaScript 13L · 724 B
│ ├─ 📜 intent-parser.d.ts TypeScript 13L · 416 B
│ ├─ 📜 intent-parser.js JavaScript 53L · 1.8 KB
│ ├─ 📜 interceptor.d.ts TypeScript 21L · 932 B
│ ├─ 📜 interceptor.js JavaScript 212L · 8.5 KB
│ ├─ 📜 local-store.d.ts TypeScript 46L · 1.4 KB
│ ├─ 📜 local-store.js JavaScript 220L · 6.5 KB
│ ├─ 📜 sanitizer.d.ts TypeScript 21L · 687 B
│ ├─ 📜 sanitizer.js JavaScript 132L · 3.7 KB
│ ├─ 📜 trace-compiler.d.ts TypeScript 14L · 558 B
│ ├─ 📜 trace-compiler.js JavaScript 110L · 3.6 KB
│ ├─ 📜 types.d.ts TypeScript 136L · 3.4 KB
│ └─ 📜 types.js JavaScript 3L · 135 B
├─ 📁 src
│ ├─ 📜 cloud-client.ts TypeScript 85L · 2.3 KB
│ ├─ 📜 index.ts TypeScript 9L · 329 B
│ ├─ 📜 intent-parser.ts TypeScript 66L · 1.8 KB
│ ├─ 📜 interceptor.ts TypeScript 265L · 8.1 KB
│ ├─ 📜 local-store.ts TypeScript 229L · 5.1 KB
│ ├─ 📜 sanitizer.ts TypeScript 158L · 3.7 KB
│ ├─ 📜 trace-compiler.ts TypeScript 140L · 3.6 KB
│ └─ 📜 types.ts TypeScript 158L · 3.3 KB
├─ 📋 package-lock.json JSON 59L · 1.8 KB
├─ 📋 package.json JSON 18L · 517 B
├─ 📝 README.md Markdown 29L · 671 B
├─ 📋 skill.json JSON 52L · 1.5 KB
├─ 📝 SKILL.md Markdown 54L · 1.2 KB
└─ 📋 tsconfig.json JSON 14L · 283 B

Dependencies 1 items

PackageVersionSourceKnown VulnsNotes
undici ^7.2.0 npm No Node.js HTTP客户端,版本锁定

Security Positives

✓ 代码结构清晰,模块职责明确(interceptor/cloud-client/local-store/sanitizer分离)
✓ 包含 PII 清理机制(sanitizer.ts),防止敏感信息外传
✓ 声明的 permissions 与实际使用的 API 基本匹配
✓ 使用 HTTPS 加密传输,通信安全
✓ 错误处理完善,云端不可用时优雅降级
✓ 工作流执行前有 validation 检查
✓ 仅依赖轻量级第三方库 undici