Scan Report
68 /100
skill-factory
Build and publish OpenClaw skills from recurring pain points
The skill uses undeclared shell execution, hardcoded suspicious paths, and remote npx code fetching without version pinning or integrity checks, with a doc-to-code mismatch on permissions.
Do not install this skill
Remove the hardcoded /opt/homebrew path and replace with a configurable or stdlib-only approach. Pin the clawhub version instead of using @latest. Declare all shell and network capabilities in SKILL.md.
Attack Chain 5 steps
◎
Entry Skill masquerades as a legitimate OpenClaw tooling via SKILL.md
SKILL.md:1⬡
Escalation Executes shell commands through undeclared execSync calls
scripts/factory.js:161⬡
Escalation Runs remote npm package via npx @latest without pinning — fetches arbitrary code from the internet
scripts/factory.js:170⬡
Escalation References suspicious hardcoded path /opt/homebrew/lib/node_modules/... suggesting platform-specific targeting
scripts/factory.js:163⬡
Escalation User-controlled slug input could be exploited for path traversal to write outside skills/public/
scripts/factory.js:53Findings 6 items
| Severity | Finding | Location |
|---|---|---|
| High | Undeclared shell command execution via execSync RCE | scripts/factory.js:161 |
| High | Suspicious hardcoded path referencing /opt/homebrew/ Obfuscation | scripts/factory.js:163 |
| High | Remote code execution via npx @latest without version pinning Supply Chain | scripts/factory.js:170 |
| Medium | SKILL.md does not declare any allowed-tools or capability permissions Doc Mismatch | SKILL.md:1 |
| Medium | Arbitrary slug creation from user input could lead to path traversal Sensitive Access | scripts/factory.js:53 |
| Low | No dependency pinning — zero stdlib-only constraint in package metadata Supply Chain | scripts/factory.js:1 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Filesystem | NONE | WRITE | ✗ Violation | scripts/factory.js:122 fs.mkdirSync(...); scripts/factory.js:130 fs.writeFileSyn… |
| Network | NONE | READ+EXECUTE | ✗ Violation | scripts/factory.js:170 execSync('npx clawhub@latest publish...'); scripts/factor… |
| Shell | NONE | WRITE | ✗ Violation | scripts/factory.js:161 execSync('python3 ...'); scripts/factory.js:170 execSync(… |
| Environment | NONE | READ | ✗ Violation | scripts/factory.js:14 process.env.WORKSPACE; scripts/factory.js:15 process.env.C… |
File Tree
2 files · 11.4 KB · 380 lines JavaScript 1f · 274L
Markdown 1f · 106L
├─
▾
scripts
│ └─
factory.js
JavaScript
└─
SKILL.md
Markdown
Dependencies 2 items
| Package | Version | Source | Known Vulns | Notes |
|---|---|---|---|---|
npx (clawhub@latest) | * (unpinned) | npm remote | No | Remote code execution — no version pinning, no hash verification |
python3 skill-creator | unpinned | /opt/homebrew/lib/node_modules/openclaw/... | No | Hardcoded path, not declared, platform-specific |
Security Positives
✓ No base64-encoded strings or obfuscated code found in the implementation
✓ No credential harvesting or environment variable exfiltration detected
✓ No hardcoded IP addresses or external C2 communication endpoints found
✓ No cron/persistence mechanisms or startup hooks detected
✓ Script uses Node.js stdlib for core logic (fs, path) — no external npm dependencies needed for scaffolding