T05 · Unauthorized Access and Privilege Escalation
- Location
SKILL.md:541- Finding
OpenClaw Execution Safeguards Disabled with Root Privileges
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a coherent Relaycast/OpenClaw messaging guide, but it asks users to run mutable remote packages and weaken execution safeguards in ways that need careful review before installation.
Install only if you trust the Relaycast package publisher and are comfortable with a gateway that stores workspace and agent credentials locally. Avoid running the documented `@latest`/unpinned package commands in privileged contexts, pin reviewed versions where possible, keep invite URLs and `rk_live_...` keys private, and do not disable OpenClaw execution approvals or set full execution security unless an administrator has explicitly accepted that broader host risk.
SKILL.md:541OpenClaw Execution Safeguards Disabled with Root Privileges
SKILL.md:73Mutable Third-Party Packages Downloaded and Executed Without Version Pinning
YARA rule matched a known malware signature (reverse shell, backdoor, ransomware, C2 framework, or info stealer).
ch mcporter || command -v mcporter
If missing, install it:
### Recommended
```bash
npm install -g mcporter
mcporter --version
If global install fails with EACCES:
npx -y mcporter --version
(Then run commands as npx -y mcporter ....)
mkdir -p ~/.npm-global
npm config set prefix ~/.npm-global
echo 'export PATH="$HOME/.npm-global/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
npm install -g mcporter
mcporter --version
mcporter config list
mcporter call relaycast.agent.list
Expected: relaycast and openclaw-spawner entries present in mcporter config.
npx -y @agent-relay/openclaw@latest setup --name my-claw
This prints a new rk_live_... key. Share invite URL:
https://agentrelay.dev/openclaw/skill/invite/rk_live_YOUR_WORKSPACE_KEY
Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.
**Key points:**
- The device identity file (`device.json`) must survive restarts — if deleted, a new identity is generated and needs re-approval
- The gateway token (`OPENCLAW_GATEWAY_TOKEN`) authenticates the connection, but the device still needs to be separately paired
- Pairing is an intentional human/owner authorization step — it cannot be auto-approved
The documentation instructs operators to disable execution approvals (tools.exec.ask off) and grant tools.exec.security full, explicitly broadening the agent's ability to run commands and make network calls. For a messaging relay skill, this is excessive and materially lowers host safeguards, creating a path for arbitrary command execution if the agent, relay, or upstream messages are abused.
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
# Check the /health endpoint — transport.state will show POLL_ACTIVE when in fallback
curl -s http://127.0.0.1:18790/health | python3 -m json.tool
Look for "transport": { "state": "POLL_ACTIVE", ... } and "wsFailureCount" in the response.
The skill repeatedly instructs operators to execute mcporter via npx -y without pinning an exact version or integrity-verified source. That allows whatever package version is current at execution time to run with the user's privileges, creating a supply-chain execution risk during setup and troubleshooting.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
This instruction executes mcporter through unpinned npx -y, which fetches and runs the latest package version at runtime. In a setup guide, that exposes users to package compromise, typosquatting, or unexpected behavior changes without review.
Another unpinned npx -y mcporter execution path appears in operator instructions. Because it is presented as normal setup behavior, users may repeatedly run arbitrary newer package code with no change control.
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
mkdir -p ~/.npm-global
npm config set prefix ~/.npm-global
echo 'export PATH="$HOME/.npm-global/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
The main setup flow uses npx -y @agent-relay/openclaw@latest, which explicitly opts into whatever code is latest at the moment. For an agent skill, this is especially risky because setup may modify local config, tokens, background processes, and message routing.
The guide embeds a live-style workspace key in a shareable invite URL without prominently warning that the key is a secret granting workspace access. Users may paste, log, or transmit the URL insecurely, exposing the workspace to unauthorized enrollment or observation.
Joining an existing workspace also relies on @latest, so a routine enrollment action executes mutable remote code. This broadens exposure because any operator adding an agent to a workspace is encouraged to trust live package contents.
The connectivity verification path still depends on unpinned @latest package execution. Even troubleshooting commands become a supply-chain execution vector if users run them after initial install.
The observer section tells humans to authenticate with the workspace key but does not clearly warn that this grants read access to workspace conversations. That can lead to inadvertent disclosure of sensitive message history to anyone who obtains or reuses the key.
The document precisely identifies sensitive token names and storage locations but omits strong cautions against exposing, logging, or casually editing them. That increases accidental secret leakage risk during support, debugging, screenshots, or shell history collection.
The update instructions explicitly tell users to execute the latest package version again, bypassing controlled upgrades. That makes every maintenance action a potential arbitrary code update with access to existing Relay/OpenClaw credentials.
Validation via unpinned @latest status still runs mutable code from the registry. The risk is slightly lower than full setup but remains remote code execution within the operator context.
The help example also uses unpinned @latest, which can execute unexpected package code during what looks like a harmless documentation lookup. This normalizes unsafe package execution for operators.
The troubleshooting 're-run setup' guidance again invokes unpinned latest code. Since troubleshooting is often done under pressure, operators are more likely to run it without scrutiny while sensitive credentials are already present on disk.
Another troubleshooting flow depends on @latest, keeping the same supply-chain risk in an operational recovery path. The context increases danger because these steps occur on active systems with valid workspace and agent tokens.
The WS auth recovery path tells users to rerun setup using @latest, which can change behavior or execute compromised code while repairing authentication. This compounds risk because it interacts with gateway and token configuration.
Launching the gateway through npx -y @agent-relay/openclaw@latest starts a long-running background process from mutable package contents. That creates both initial execution risk and persistence of whatever code was fetched.
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
- The device identity file (`device.json`) must survive restarts — if deleted, a new identity is generated and needs re-approval
- The gateway token (`OPENCLAW_GATEWAY_TOKEN`) authenticates the connection, but the device still needs to be separately paired
- Pairing is an intentional human/owner authorization step — it cannot be auto-approved
### Why pairing fails
Using nohup ... & to daemonize the gateway creates a persistent background process outside normal service management. In combination with unpinned package execution and credentialed network access, this increases the chance of unnoticed long-lived compromised behavior.
kill
nohup npx -y @agent-relay/openclaw@latest gateway > /tmp/relaycast-gateway.log 2>&1 &
### Full Recovery Runbook (nuclear option)
The restart instructions use nohup with @latest, so operators may daemonize unreviewed newly fetched code. Background execution increases the blast radius because compromised code can persist and continuously handle inbound traffic.