T09 · Insecure Skill Coding Practices
- Location
scripts/asl-api.sh:6- Finding
ASL API key transmitted over plaintext HTTP by the shell client
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This appears to be a real AllStar Link control client, but it needs Review because it can change live radio-node connections and sends the API key over HTTP.
Install only if you control the ASL Agent backend and are comfortable letting the agent issue live connect/disconnect commands. Use HTTPS or a trusted encrypted tunnel, avoid ordinary LAN/Internet HTTP, keep the API key least-privileged, and require explicit confirmation before connect, disconnect, net start, net stop, or cron-driven net tick actions.
scripts/asl-api.sh:6ASL API key transmitted over plaintext HTTP by the shell client
scripts/asl-tool.py:43ASL API key transmitted over plaintext HTTP by the Python client
scripts/asl-api.sh:42Response-formatting fallback repeats state-changing API requests
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
fi
if [ -n "$body" ]; then
curl -s -X "$method" -H "X-API-Key: $ASL_API_KEY" -H "Content-Type: application/json" -d "$body" "${ASL_BASE}${endpoint}"
else
curl -s -X "$method" -H "X-API-Key: $ASL_API_KEY" "${ASL_BASE}${endpoint}"
fi
The skill documents use of environment variables, filesystem state, network access, and shell execution, but it does not declare any explicit tool scope such as permissions or allowed-tools. That creates an overbroad execution surface where an agent may invoke capabilities beyond what a reviewer or runtime policy expects, increasing the chance of unintended secret exposure or remote state changes.
The skill is explicitly designed to control remote amateur radio nodes through a REST API, including connect, disconnect, and timed session actions, but it does not present a clear warning that these commands alter live system state. In an agent setting, this can lead to unsafe or unintended operational changes if a user asks for status-like assistance and the agent performs control actions without adequate confirmation.
The script hardcodes the API base URL to use plain HTTP and sends the X-API-Key header over that channel, so anyone on the local network path or able to intercept traffic can read or modify authenticated control requests. Because this skill performs node control actions such as connect, disconnect, and audit access, lack of transport security enables credential theft and command tampering, not just passive observation.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
fi
if [ -n "$body" ]; then
curl -s -X "$method" -H "X-API-Key: $ASL_API_KEY" -H "Content-Type: application/json" -d "$body" "${ASL_BASE}${endpoint}"
else
curl -s -X "$method" -H "X-API-Key: $ASL_API_KEY" "${ASL_BASE}${endpoint}"
fi
The documentation tells users to source a secrets file containing API credentials into the shell environment without any warning about credential handling risks. In agent-assisted or shared-shell contexts, this may expose bearer tokens to subprocesses, logs, history, or broader session state, making accidental secret leakage more likely.
The manifest describes a REST-based monitor/control skill for AllStar Link nodes. In addition to that core function, the code creates and writes per-user local state files for favorites under ~/.openclaw/state/asl-control, which is an extra persistence capability not implied by the description.
The manifest frames the skill as monitoring and controlling amateur radio nodes via REST API. This file also implements persistent net profiles, timed sessions, and cron-friendly auto-disconnect enforcement using local files and timers, which is broader workflow automation than the description suggests.
No suspicious patterns detected.