Scan Report
65 /100
token-sop
本地工作流缓存技能 - 自动保存成功的工作流到本地,下次执行相同任务时自动调取,节省 Token
The skill acts as a data exfiltration mechanism disguised as a token optimization tool, automatically uploading complete session traces, node identifiers, and workflows to an external cloud API with minimal user disclosure.
Do not install this skill
Disable auto_contribute by default, declare all filesystem operations in permissions, and implement explicit user consent before any data leaves the local environment.
Attack Chain 5 steps
⬡
Escalation Skill intercepts every user intent through on_intent_received hook
interceptor.ts:50⬡
Escalation On session success, complete action trace is compiled with sanitizeActionArgs
interceptor.ts:145⬡
Escalation Workflow with intent, URL, session_id, node_id saved to ~/.openclaw/workflows/
local-store.ts:53⬡
Escalation With auto_contribute=true, workflow auto-uploaded to https://api.ainclaw.com
cloud-client.ts:58◉
Impact External cloud receives identifiable user data enabling behavioral profiling
cloud-client.ts:27Findings 7 items
| Severity | Finding | Location |
|---|---|---|
| High | Automatic workflow contribution enabled by default Data Exfil | SKILL.md:97 |
| High | Node identification sent with all cloud requests Data Exfil | interceptor.ts:72 |
| High | Undeclared filesystem WRITE permission Priv Escalation | local-store.ts:53 |
| Medium | Remote workflow execution from cloud RCE | interceptor.ts:108 |
| Medium | Marketing language obscures data collection behavior Doc Mismatch | SKILL.md:1 |
| Medium | Unpinned dependency version Supply Chain | package.json:12 |
| Low | Process environment access for storage path Sensitive Access | local-store.ts:26 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Filesystem | NONE | WRITE | ✗ Violation | local-store.ts:53 - fs.writeFileSync to ~/.openclaw/workflows/ |
| Network | READ | WRITE | ✗ Violation | cloud-client.ts:27-41 - POST/PUT requests sending data to external API |
| Browser | READ | READ | ✓ Aligned | interceptor.ts - browser.getCurrentUrl(), browser.getDomSkeletonHash() |
| Skill Invoke | READ | READ | ✓ Aligned | interceptor.ts - lobster.execute() and lobster.validate() |
| Environment | NONE | READ | ✓ Aligned | local-store.ts:26 - process.env.HOME used for storage path |
2 findings
Medium External URL 外部 URL
https://api.ainclaw.com SKILL.md:97 Medium External URL 外部 URL
https://clawhub.dev/skills/token-sop skill.json:7 File Tree
32 files · 74.0 KB · 2558 lines TypeScript 17f · 1405L
JavaScript 9f · 883L
JSON 4f · 143L
Markdown 2f · 127L
├─
▾
dist
│ ├─
client.d.ts
TypeScript
│ ├─
client.js
JavaScript
│ ├─
cloud-client.d.ts
TypeScript
│ ├─
cloud-client.js
JavaScript
│ ├─
index.d.ts
TypeScript
│ ├─
index.js
JavaScript
│ ├─
intent-parser.d.ts
TypeScript
│ ├─
intent-parser.js
JavaScript
│ ├─
interceptor.d.ts
TypeScript
│ ├─
interceptor.js
JavaScript
│ ├─
local-store.d.ts
TypeScript
│ ├─
local-store.js
JavaScript
│ ├─
sanitizer.d.ts
TypeScript
│ ├─
sanitizer.js
JavaScript
│ ├─
trace-compiler.d.ts
TypeScript
│ ├─
trace-compiler.js
JavaScript
│ ├─
types.d.ts
TypeScript
│ └─
types.js
JavaScript
├─
▾
src
│ ├─
cloud-client.ts
TypeScript
│ ├─
index.ts
TypeScript
│ ├─
intent-parser.ts
TypeScript
│ ├─
interceptor.ts
TypeScript
│ ├─
local-store.ts
TypeScript
│ ├─
sanitizer.ts
TypeScript
│ ├─
trace-compiler.ts
TypeScript
│ └─
types.ts
TypeScript
├─
package-lock.json
JSON
├─
package.json
JSON
├─
README.md
Markdown
├─
skill.json
JSON
├─
SKILL.md
Markdown
└─
tsconfig.json
JSON
Dependencies 1 items
| Package | Version | Source | Known Vulns | Notes |
|---|---|---|---|---|
undici | ^7.2.0 | npm | No | Version not pinned - allows updates to 7.x.x |
Security Positives
✓ PII sanitizer exists with patterns for email, phone, SSN, credit cards, passwords, API keys
✓ Sensitive field names are detected and replaced with placeholders
✓ Workflow validation (lobster.validate()) is called before execution
✓ Cloud failures are handled gracefully with passthrough to normal flow
✓ Local-first lookup before cloud query - reduces unnecessary network calls