Scan Report
55 /100
claw-office-report
自动上报工作状态到 Claw Office 微信小程序,让你的虚拟 AI 员工实时在线打工赚金币
The skill performs stealth HTTP POSTs to an external domain (zjhzwukan.xyz) transmitting the user's API key and full task text, with no transparent disclosure of data being sent to third parties.
Use with caution
Do not use. The skill sends sensitive credentials and task content to an unverified external server without user visibility. If a work-reporting feature is needed, implement it through a clearly declared, auditable API with pinned endpoints and no background data transmission.
Attack Chain 5 steps
◎
Entry User installs skill and provides CLAW_OFFICE_KEY from Claw Office mini-program
SKILL.md:26⬡
Escalation hooks.js extracts full task text from context.task/context.query and passes it to skill.start() as 'detail'
hooks.js:22⬡
Escalation index.js constructs JSON body containing CLAW_OFFICE_KEY + action + state + detail, then executes curl via child_process.exec
index.js:33◉
Impact HTTP POST silently sent to https://clawoffice.zjhzwukan.xyz/user/report-work with full task content and user API key, output suppressed with >/dev/null 2>&1 &
index.js:35◉
Impact User has zero visibility: SKILL.md explicitly instructs to hide all reporting from conversation
SKILL.md:8Findings 6 items
| Severity | Finding | Location |
|---|---|---|
| High | Undisclosed data exfiltration — full task text sent to external server | hooks.js:22 |
| High | API key transmitted to unverifiable third-party server | index.js:33 |
| High | Stealth execution design principle — zero user visibility | SKILL.md:8 |
| Medium | Network access not declared as a capability | SKILL.md:1 |
| Medium | Unverifiable external domain — no domain reputation or pinning | index.js:6 |
| Low | Unversioned dependency — package.json has no lock file | package.json:1 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Shell | WRITE | WRITE | ✓ Aligned | index.js:3 const { exec } = require('child_process') |
| Network | NONE | WRITE | ✗ Violation | index.js:6-7 and hooks.js:22 - full task text (context.task) is POSTed to clawof… |
| Environment | READ | READ | ✓ Aligned | index.js:5 - reads CLAW_OFFICE_KEY from process.env |
2 findings
Medium External URL 外部 URL
https://clawoffice.zjhzwukan.xyz/user/report-work SKILL.md:64 Medium External URL 外部 URL
https://clawoffice.zjhzwukan.xyz/api index.js:12 File Tree
6 files · 10.4 KB · 382 lines Markdown 2f · 227L
JavaScript 2f · 128L
JSON 2f · 27L
├─
claw.json
JSON
├─
hooks.js
JavaScript
├─
index.js
JavaScript
├─
package.json
JSON
├─
README.md
Markdown
└─
SKILL.md
Markdown
Dependencies 1 items
| Package | Version | Source | Known Vulns | Notes |
|---|---|---|---|---|
node (runtime) | N/A | runtime | No | No npm dependencies declared in package.json; relies on built-in Node.js modules (child_process, os, path) |
Security Positives
✓ Skill functionality (work status reporting) is plausible as described — earning virtual gold coins in a mini-program
✓ No credential harvesting from ~/.ssh, ~/.aws, or system credential stores
✓ No reverse shell, C2, or cryptocurrency mining behavior observed
✓ API key is per-user configuration, not embedded in the skill itself
✓ curl commands are documented in SKILL.md (though the data being sent is not)
✓ Skill gracefully handles missing API key with silent return
✓ No eval(), atob(), or base64-in-shell obfuscation patterns
✓ No iteration over os.environ for credential discovery