T03 · Remote Payload Retrieval and Execution
- Location
check_skills.md:69- Finding
Unverified Remote ClawHub Installer Is Piped Directly to Bash
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a broad OpenClaw health checker, but it overreaches by reading sensitive local content, retaining diagnostic snapshots, recommending unsafe installers, and using risky shell-based report delivery.
Review carefully before installing. This skill may read sensitive OpenClaw configuration, logs, .env files, and identity/profile documents, and it can retain checkup data. Avoid running its suggested curl-to-bash, sudo curl-to-bash, or --force install commands without independent verification, and disable or tightly review webhook/email report delivery.
check_skills.md:69Unverified Remote ClawHub Installer Is Piped Directly to Bash
check_hardware.md:73Unverified NodeSource Script Is Executed with Root Privileges
check_skills.md:127Health Scoring Promotes Vendor Packages and Instructs the Agent to Bypass Risk Prompts
scripts/deliver-report.sh:133Shell Command Injection in Report Webhook and Email Delivery
scripts/collect-skills.sh:19Environment and Filesystem Paths Are Interpolated into Executable JavaScript Source
data_collect.md:157Health Collection Ingests Complete Personal and Agent Identity Documents
scripts/snapshot-manager.sh:13Sensitive Checkup JSON Is Retained with Inherited Filesystem Permissions
Persistent storage of health-check snapshots, symlink management, pruning, and historical comparisons are undeclared stateful behaviors in a diagnostic skill. Retaining diagnostic artifacts can preserve sensitive configuration, path, service, and security findings on disk, increasing exposure if the storage location is accessible or not redacted.
Persistent storage of health-check snapshots, symlink management, pruning, and historical comparisons are undeclared stateful behaviors in a diagnostic skill. Retaining diagnostic artifacts can preserve sensitive configuration, path, service, and security findings on disk, increasing exposure if the storage location is accessible or not redacted.
Persistent storage of health-check snapshots, symlink management, pruning, and historical comparisons are undeclared stateful behaviors in a diagnostic skill. Retaining diagnostic artifacts can preserve sensitive configuration, path, service, and security findings on disk, increasing exposure if the storage location is accessible or not redacted.
Persistent storage of health-check snapshots, symlink management, pruning, and historical comparisons are undeclared stateful behaviors in a diagnostic skill. Retaining diagnostic artifacts can preserve sensitive configuration, path, service, and security findings on disk, increasing exposure if the storage location is accessible or not redacted.
Persistent storage of health-check snapshots, symlink management, pruning, and historical comparisons are undeclared stateful behaviors in a diagnostic skill. Retaining diagnostic artifacts can preserve sensitive configuration, path, service, and security findings on disk, increasing exposure if the storage location is accessible or not redacted.
Persistent storage of health-check snapshots, symlink management, pruning, and historical comparisons are undeclared stateful behaviors in a diagnostic skill. Retaining diagnostic artifacts can preserve sensitive configuration, path, service, and security findings on disk, increasing exposure if the storage location is accessible or not redacted.
Persistent storage of health-check snapshots, symlink management, pruning, and historical comparisons are undeclared stateful behaviors in a diagnostic skill. Retaining diagnostic artifacts can preserve sensitive configuration, path, service, and security findings on disk, increasing exposure if the storage location is accessible or not redacted.
Persistent storage of health-check snapshots, symlink management, pruning, and historical comparisons are undeclared stateful behaviors in a diagnostic skill. Retaining diagnostic artifacts can preserve sensitive configuration, path, service, and security findings on disk, increasing exposure if the storage location is accessible or not redacted.
Persistent storage of health-check snapshots, symlink management, pruning, and historical comparisons are undeclared stateful behaviors in a diagnostic skill. Retaining diagnostic artifacts can preserve sensitive configuration, path, service, and security findings on disk, increasing exposure if the storage location is accessible or not redacted.
Persistent storage of health-check snapshots, symlink management, pruning, and historical comparisons are undeclared stateful behaviors in a diagnostic skill. Retaining diagnostic artifacts can preserve sensitive configuration, path, service, and security findings on disk, increasing exposure if the storage location is accessible or not redacted.
Persistent storage of health-check snapshots, symlink management, pruning, and historical comparisons are undeclared stateful behaviors in a diagnostic skill. Retaining diagnostic artifacts can preserve sensitive configuration, path, service, and security findings on disk, increasing exposure if the storage location is accessible or not redacted.
Persistent storage of health-check snapshots, symlink management, pruning, and historical comparisons are undeclared stateful behaviors in a diagnostic skill. Retaining diagnostic artifacts can preserve sensitive configuration, path, service, and security findings on disk, increasing exposure if the storage location is accessible or not redacted.
Persistent storage of health-check snapshots, symlink management, pruning, and historical comparisons are undeclared stateful behaviors in a diagnostic skill. Retaining diagnostic artifacts can preserve sensitive configuration, path, service, and security findings on disk, increasing exposure if the storage location is accessible or not redacted.
Persistent storage of health-check snapshots, symlink management, pruning, and historical comparisons are undeclared stateful behaviors in a diagnostic skill. Retaining diagnostic artifacts can preserve sensitive configuration, path, service, and security findings on disk, increasing exposure if the storage location is accessible or not redacted.
Persistent storage of health-check snapshots, symlink management, pruning, and historical comparisons are undeclared stateful behaviors in a diagnostic skill. Retaining diagnostic artifacts can preserve sensitive configuration, path, service, and security findings on disk, increasing exposure if the storage location is accessible or not redacted.
Persistent storage of health-check snapshots, symlink management, pruning, and historical comparisons are undeclared stateful behaviors in a diagnostic skill. Retaining diagnostic artifacts can preserve sensitive configuration, path, service, and security findings on disk, increasing exposure if the storage location is accessible or not redacted.
Persistent storage of health-check snapshots, symlink management, pruning, and historical comparisons are undeclared stateful behaviors in a diagnostic skill. Retaining diagnostic artifacts can preserve sensitive configuration, path, service, and security findings on disk, increasing exposure if the storage location is accessible or not redacted.
The skill is designed to inspect configs, logs, workspace files, VCS state, gateway error logs, and identity-related directories specifically for secrets and credentials. Even with a stated redaction rule, this materially increases exposure because the agent is directed to access highly sensitive sources, and any redaction failure, logging bug, or report persistence could leak credentials.
| Control UI exposed | `controlUI` on non-loopback | false | — | true | ❌ -25 |
| Critical CVEs | `vulnerabilities` CVSS ≥9 | 0 | — | any | -15 each (max -45) |
| High CVEs | `vulnerabilities` CVSS 7–8.9 | 0 | any | — | -5 each (max -20) |
| Secrets tracked in VCS | `vcs` | clean | .env without .gitignore | tracked in git | -10 / -25 |
**Risk classification** (add after scoring):
- Critical: any ❌ from credential exposure or unauthenticated LAN bind → fix immediately
The shell pipeline chains network retrieval directly into privileged execution, eliminating any pause for validation and amplifying the blast radius of malicious or unexpected content. In the context of a health-check skill that emits remediation commands, this is more dangerous because it is framed as a recommended fix and likely to be executed verbatim.
| < 16 | ❌ | -40 | Unsupported — OpenClaw will not run |
**Fix (darwin):** `brew install node` or `nvm install --lts`
**Fix (linux):** `curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo bash -`
---
Recommending curl -fsSL https://clawhub.io/install | bash instructs users to fetch and immediately execute remote code without prior inspection or integrity verification. This is a high-risk supply-chain pattern because compromise of the remote host, transport, or script content can directly result in arbitrary code execution.
| `clawhub_available = true`, `registry_reachable = false` | ⚠️ | -10 — clawhub present but offline |
| `can_install = true` | ✅ | 0 — self-improvement is fully enabled |
**Fix (clawhub missing):** `npm install -g clawhub` or `curl -fsSL https://clawhub.io/install | bash`
**Fix (registry unreachable):** Check internet connectivity; try `clawhub ping`
---
The scan target list explicitly includes configuration directories and effectively all files under them, which is a classic credential-access pattern because such locations commonly store tokens, API keys, and passwords. The context makes this more dangerous because the skill is framed as an autonomous health check, so users may permit broad access without realizing secret-bearing files are being read.
}
const scanTargets = [
...scanDir(HOME + "/config", [".json", ".yaml", ".yml", ".toml", ".env", "*"]),
...scanDir(LOG_DIR, [".log", ".txt"]).slice(0, 5) // limit log scan
];
The code specifically targets the .env file in the OpenClaw home directory, a location commonly used to store plaintext credentials and service tokens. Reading this file gives the script access to sensitive material even if it later redacts output, and any future bug, crash, or logging change could expose that data.
...scanDir(LOG_DIR, [".log", ".txt"]).slice(0, 5) // limit log scan
];
// Also scan .env files in OPENCLAW_HOME
const envFile = HOME + "/.env";
if (fs.existsSync(envFile)) scanTargets.push(envFile);
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
];
// Also scan .env files in OPENCLAW_HOME
const envFile = HOME + "/.env";
if (fs.existsSync(envFile)) scanTargets.push(envFile);
result.credential_exposure.scanned_files = scanTargets.length;
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
];
// Also scan .env files in OPENCLAW_HOME
const envFile = HOME + "/.env";
if (fs.existsSync(envFile)) scanTargets.push(envFile);
result.credential_exposure.scanned_files = scanTargets.length;
Including HOME + '/.env' in the sensitive file list causes the script to inspect metadata of a known credential-bearing file, reinforcing that the skill is purpose-built to interact with secret storage. In this health-check context that may be operationally useful, but it still expands access to highly sensitive local material and should be treated as dangerous by default.
const sensitiveFiles = [
CONFIG,
HOME + "/config",
HOME + "/.env"
];
// Add any .key/.pem files
try {
Detected: suspicious.dangerous_exec