T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:40- Finding
Unverified Remote Installer Executed Directly Through a Shell
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill has a coherent peer-agent networking purpose, but its defaults expose gateways broadly and persist sensitive tokens in plaintext.
Install only after reviewing and tightening the setup: bind OpenClaw to the Tailscale IP instead of 0.0.0.0, require strong gateway authentication, avoid storing gateway tokens in peer-config.md, use one-time short-lived Tailscale auth keys, do not disable the whole Windows Firewall, and avoid the curl-to-sh installer path unless you independently verify it.
SKILL.md:40Unverified Remote Installer Executed Directly Through a Shell
SKILL.md:70OpenClaw Gateway Bound to Every Network Interface
scripts/peer_config.py:119Gateway Bearer Tokens Collected Interactively and Stored in Plaintext Markdown
references/troubleshooting.md:32Troubleshooting Guidance Disables All Windows Firewall Profiles
references/tailscale-setup.md:67Reusable Tailscale Enrollment Key Recommended and Exposed on the Command Line
The skill instructs users to execute a remote shell script directly via curl | sh, which bypasses normal review of fetched code and creates an obvious supply-chain execution risk. In a security-sensitive networking setup, this is especially dangerous because compromise of the download path, hosting, or a copy-pasted variant could lead to arbitrary code execution on the host.
# Download and install Tailscale
winget install Tailscale.Tailscale # Windows
# or: brew install tailscale # macOS
# or: curl -fsSL https://tailscale.com/install.sh | sh # Linux
# Start Tailscale and authenticate
tailscale up --accept-routes
Piping a remotely fetched installer script directly into sh executes unreviewed code from the network with the user's privileges, creating a supply-chain and man-in-the-middle risk if the source or transport is compromised. In an agent networking skill, this is especially sensitive because the installed software controls network connectivity and trust relationships between hosts.
curl -fsSL https://tailscale.com/install.sh | sh
tailscale up --accept-routes
The | sh pattern is a dangerous command-chaining construct because it immediately executes whatever bytes are returned by the remote server, eliminating an inspection step and amplifying the impact of compromise. This makes accidental or malicious code execution on the host much more likely.
curl -fsSL https://tailscale.com/install.sh | sh
tailscale up --accept-routes
The skill includes operational instructions that use shell commands and direct file creation/configuration, but it declares no explicit tool scope or allowed-tools boundary. That omission can cause an agent platform to invoke the skill in contexts where shell or file-write actions are not expected, increasing the chance of unintended command execution or unsafe modification.
The manifest description includes generic triggers such as "connect two agents" and "peer agents," which are broad natural-language phrases that could overlap with ordinary discussion rather than a clear invocation intent. The file does not provide negative examples or constraints to clarify when these phrases should or should not activate the skill.
The skill recommends binding the OpenClaw gateway to 0.0.0.0, which exposes the service on every network interface rather than only the Tailscale interface. In the context of an agent gateway that accepts remote sessions_send traffic, this broadens the reachable attack surface and could permit access from unintended local networks or internet-exposed interfaces if firewalling is misconfigured.
The instructions recommend generating and sharing a reusable auth key without clearly stating that the key grants admission to the tailnet and should be tightly scoped, time-limited, and revoked after use. In a cross-machine agent collaboration skill, compromise of that key could give an untrusted device persistent network access to agent hosts and their exposed services.
The guide expands beyond agent-to-agent connectivity into general-purpose file sharing and proxying, which materially increases the attack surface of the tailnet. In this skill context, encouraging ad hoc HTTP serving and proxy use can enable unintended data exposure or misuse of the peer machine as a network pivot.
Suggesting python3 -m http.server 9000 without warning exposes the current working directory to other devices on the tailnet, which can unintentionally publish sensitive files. In this skill, where the goal is agent collaboration, users may run the command from a project or home directory and leak credentials, models, logs, or source code.
The troubleshooting guide instructs users to disable Windows Firewall across all profiles as a test step, which weakens host protections and can expose unrelated services to the network if users forget to re-enable it. In this skill's context, the risk is elevated because it is specifically about making a network-accessible gateway reachable over Tailscale, so users are already changing bind settings and opening connectivity paths.
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
if os.path.exists("/usr/local/bin/tailscale") or os.path.exists("/usr/bin/tailscale"):
import subprocess
try:
result = subprocess.run(
["tailscale", "ip", "-4"],
capture_output=True,
text=True,
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
if os.path.exists("/usr/local/bin/tailscale") or os.path.exists("/usr/bin/tailscale"):
import subprocess
try:
result = subprocess.run(
["tailscale", "ip", "-4"],
capture_output=True,
text=True,
The script explicitly asks for both agents' gateway tokens and persists them into peer-agent/peer-config.md in plaintext along with reachable gateway URLs and agent IDs. Those credentials appear sufficient to send messages to peer agents, so compromise of the file, accidental sharing, backup leakage, or source-control commit could enable unauthorized agent access or impersonation.
The generated markdown file contains sensitive credentials and internal network connection details in cleartext, yet the script presents this as a normal collaboration artifact and even instructs users to share sections of it. In this skill's context—connecting autonomous agents across machines—plaintext tokens and network endpoints materially increase the blast radius of accidental disclosure, unauthorized cross-agent messaging, and lateral movement within the Tailscale network.
The shared log example uses the Chinese pronoun "你" in otherwise English guidance, which implicitly introduces a language choice in the skill documentation. There is no opt-in, explanation, or region-specific justification for this locale shift, so it can violate a language consistency policy.