file-transfer-thru-local-workspace
The skill exposes Gateway credentials in install-time environment variables and systemd service files, contradicting its own security claim that credentials are not hardcoded. Undeclared credential reading from ~/.openclaw/openclaw.json and binding to 0.0.0.0 on all interfaces compound the risk.
Why this conclusion was reached
2/4 dimensions flagged2 undeclared or violating capabilities were inferred.
3 lower-risk artifacts were extracted and still need context.
The report includes 4 attack-chain steps and 3 severe findings.
1 dependency or supply-chain issues need attention.
Attack Chain
Entry · install.sh:1
Escalation · install.sh:42
Escalation · install.sh:51
Impact · install.sh:68
What drove the risk score up
install.sh reads gateway token/password from ~/.openclaw/openclaw.json and passes it as GATEWAY_AUTH_VALUE env var, which ends up in process list and systemd service files
SKILL.md states '认证值不在技能包中硬编码' and '不在日志中明文显示', but the install script embeds the credential in systemd Environment= directive
Both install.sh and upload-server.js read ~/.openclaw/openclaw.json for gateway auth token/password — not declared in permissions or docs
Server listens on 0.0.0.0:15170 rather than localhost only, expanding attack surface if credentials are weak or missing
Most important evidence
Gateway credentials embedded in systemd service and process environment
install.sh reads the gateway token/password from ~/.openclaw/openclaw.json and embeds it in the GATEWAY_AUTH_VALUE environment variable, which appears in /etc/systemd/system/openclaw-upload.service and in process listings (ps eww). This violates SKILL.md's explicit claim that credentials are not stored in the skill package.
install.sh:68 Undeclared credential file access
Both install.sh (lines 42-49) and upload-server.js (lines 31-38) read ~/.openclaw/openclaw.json to extract gateway.auth.token or gateway.auth.password. This is not declared in package.json permissions or SKILL.md capabilities.
install.sh:42 SKILL.md security claim contradicted by implementation
SKILL.md explicitly states '✅ 认证值不在技能包中硬编码' and '✅ 认证值不在日志中明文显示'. However, install.sh embeds the gateway credential in a systemd service file (Environment=GATEWAY_AUTH_VALUE=...) which is stored on disk in plaintext.
SKILL.md:126 Service created with elevated privileges if run as root
install.sh runs as the current USER and creates a systemd service. If executed as root, the service runs as root, giving the web-accessible upload service root-level file access on the system.
install.sh:52 Hardcoded workspace path /home/admin
upload-server.js defaults WORKSPACE to '/home/admin/.openclaw/workspace' rather than using HOME environment variable. This could cause issues on non-admin systems and indicates a possible default/development artifact.
src/upload-server.js:13 Security documentation references non-existent files
SKILL.md references SECURITY-AUDIT.md and docs/AUTH-COMPATIBILITY.md in its directory structure, but these files do not exist in the package.
SKILL.md:161 Skill packages directory accessible via web UI
The skill browses and zips all installed skill packages under ~/.openclaw/workspace/skills/ via the web UI. While authenticated, this gives any web user read access to all installed skill code including their SKILL.md files and any secrets stored within.
src/upload-server.js:78 Declared capability vs actual capability
install.sh:42-49 reads ~/.openclaw/openclaw.json; upload-server.js:31 reads ~/.openclaw/openclaw.json install.sh:68-75 pipes credential as env var to nohup node; install.sh:51-66 creates systemd service with Environment=GATEWAY_AUTH_VALUE=${AUTH_VALUE} upload-server.js:337 server.listen(PORT, '0.0.0.0') Suspicious artifacts and egress
http://127.0.0.1:15170/ SKILL.md:228
https://clawhub.ai/user/chengwang86 skill-card.md:7
https://clawhub.ai/chengwang86/file-transfer-thru-local-workspace skill-card.md:29
Dependencies and supply chain
| Package | Version | Source | Known vuln | Notes |
|---|---|---|---|---|
| node (runtime) | >=14.0.0 | system | No | Runtime dependency; no npm packages installed |
| zip (system binary) | any | system | No | Used for skill package zipping; called via spawn |
File composition
src/upload-server.js SKILL.md install.sh skill-card.md