China Stock Sentiment
The skill uses undeclared shell execution (child_process.execSync) to invoke another skill, a capability not declared in SKILL.md's documented allowed-tools or capability model.
Why this conclusion was reached
2/4 dimensions flagged2 undeclared or violating capabilities were inferred.
2 lower-risk artifacts were extracted and still need context.
The report includes 3 attack-chain steps and 1 severe findings.
Dependencies are present but no obvious high-risk issue stands out.
Attack Chain
Entry · SKILL.md:1
Escalation · index.js:53
Escalation · index.js:139
What drove the risk score up
SKILL.md declares 'web_fetch/web_search' but index.js:53 uses execSync('openclaw skill run baidu-hot-cn') — a shell:WRITE operation not mentioned anywhere in documentation.
saveReport() writes to memory/stock-sentiment/reports/ via fs.writeFileSync, exceeding the read-oriented '数据存储' description in SKILL.md which only names directories without declaring filesystem:WRITE capability.
SKILL.md frames baidu-hot-cn as a skill reference, hiding the actual subprocess.execSync mechanism. This is a classic doc-deception pattern.
Most important evidence
Undeclared shell execution via child_process.execSync
index.js imports child_process and uses execSync to run 'openclaw skill run baidu-hot-cn'. SKILL.md only documents 'web_fetch/web_search' and skill references, never mentioning subprocess/shell execution. This hidden mechanism is a significant doc-to-code mismatch.
index.js:53 Undeclared filesystem WRITE beyond documented scope
SKILL.md's '数据存储' section names directories (memory/stock-sentiment/) but never declares filesystem:WRITE. The saveReport() function writes markdown reports to disk, which is write access beyond the 'read news' framing of the skill.
index.js:139 Marketing content in SKILL.md not in README.md
SKILL.md contains pricing tables, monetization strategies, and development TODOs that mix user-facing marketing with capability documentation, making it harder to identify actual permitted actions.
SKILL.md:89 Declared capability vs actual capability
index.js:139 fs.writeFileSync(outputPath, markdown) index.js:54 execSync('openclaw skill run baidu-hot-cn') No direct network calls; web access delegated to baidu-hot-cn skill via subprocess No os.environ access detected Suspicious artifacts and egress
https://clawhub.ai/skills/china-stock-sentiment/docs README.md:87
Dependencies and supply chain
| Package | Version | Source | Known vuln | Notes |
|---|---|---|---|---|
| fs | builtin | node | No | Node.js built-in module — no external dependency risk |
| path | builtin | node | No | Node.js built-in module |
| child_process | builtin | node | No | Node.js built-in module — used for execSync |
File composition
index.js SKILL.md README.md