T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:65- Finding
Mutable Remote Installer Is Piped Directly into Bash
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is mostly an installer/configuration helper, but it uses unsafe installation paths and handles credentials in ways users should review carefully before installing.
Review this skill before installing. Prefer the package-manager path over curl-to-bash, avoid running repair scripts blindly, and do not use the Claude relay unless you intentionally trust that endpoint with your API key and model traffic. If you configure secrets, restrict ~/.openclaw permissions yourself and avoid running the chmod -R 755 repair step until it is fixed.
SKILL.md:65Mutable Remote Installer Is Piped Directly into Bash
scripts/install.sh:27Unpinned Global Packages and Plugin Dependencies Execute Mutable Supply-Chain Code
scripts/fix-bugs.sh:43Plaintext Credentials Are Exposed Through Insecure Recursive Permissions
scripts/configure-claude.sh:10API Key and Model Traffic Are Routed to a Hard-Coded Third-Party Relay
SKILL.md:260Skill Instructs the Agent to Persist Skill-Controlled Values in Long-Term Memory
Fetching a remote script and executing it as part of the installation flow creates a classic supply-chain risk. If the remote host, transport, or script content is compromised, the system will run attacker-controlled code immediately.
# 使用官方安装脚本
curl -fsSL https://openclaw.ai/install.sh | bash
# 或使用 pnpm 安装
pnpm add -g openclaw
The | bash construct removes the inspection step and directly chains downloaded content into execution. In this skill context, that makes the installation path especially dangerous because it encourages immediate execution of network-provided code on the user's machine.
# 使用官方安装脚本
curl -fsSL https://openclaw.ai/install.sh | bash
# 或使用 pnpm 安装
pnpm add -g openclaw
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).
read -p "是否重新安装?(y/N) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
rm -rf "$PLUGINS_DIR/feishu"
else
echo "✅ 跳过安装"
fi
The README instructs users to configure sensitive credentials such as an API key, App ID, App Secret, and Verification Token, but provides no guidance on secure entry, storage, masking, or avoiding accidental disclosure. In an installation skill that automates setup, this omission increases the chance that secrets will be placed in shell history, plaintext files, logs, or screenshots, leading to credential compromise.
The README advertises bug-fix, cleanup, reset, and restart actions such as clearing logs, resetting configuration, and restarting the gateway without warning that these operations can modify state, remove data, or interrupt service. In an automation/install skill, users may run these commands expecting them to be safe diagnostics, which can cause accidental disruption or loss of configuration.
The skill clearly instructs shell execution and system modification, but it declares no tool scope or allowed-tools restrictions. This increases the risk that an agent may execute powerful commands without an explicit capability boundary or user-awareness guardrail.
The entire skill description and operational guidance are written in Chinese, with no indication that language choice is optional or limited to a justified region-specific deployment. Under the stated policy, forcing a specific language without user opt-in is a natural-language policy violation.
The skill recommends remote install and automation scripts, including piping a downloaded script directly to bash, without an explicit warning that they will modify the host. This is dangerous because it normalizes high-risk execution of unreviewed code with immediate system impact.
The skill collects and stores API keys and Feishu secrets in configuration files but provides no security guidance for handling, redaction, storage permissions, or log hygiene. This increases the chance of accidental credential exposure through shell history, shared files, or agent memory.
The skill hard-codes a specific third-party relay endpoint for Claude traffic that is not required for generic OpenClaw installation. This can steer user traffic and secrets to an external service, creating supply-chain, privacy, and credential-exposure risks.
The skill includes cleanup and reset-style operations such as log cleaning and gateway cleaning without warning that data, logs, or state may be removed. Users or agents could perform destructive maintenance steps without understanding the operational consequences.
Sending an outbound Feishu test message goes beyond installation/configuration and triggers a real external action. In a skill context, that can cause unintended data disclosure, spam, or misuse of configured messaging credentials.
The troubleshooting section includes a configuration reset command that can erase or overwrite service setup without an explicit destructive-action warning. In an automated skill, this can lead to loss of working configuration and interruption of service.
The instruction to write service details into MEMORY.md encourages persistence of configuration-related information beyond the immediate task. Even though the listed items are partly non-secret, this pattern normalizes storing operational details and could easily expand to sensitive endpoints, tokens, or environment data.
The script writes the user-supplied API key in plaintext to ~/.openclaw/config/models.json, creating a persistent local secret without any warning, permission hardening, or use of a secure secret store. If the file is later exposed through weak filesystem permissions, backups, logs, sync tools, or malware on the host, the key can be stolen and abused to access the third-party API.
The script automatically extracts the stored API key from the local configuration and sends it in an Authorization header to the configured remote base URL during a connectivity test, without explicit prior consent or warning. In an installation/repair skill that may manage third-party relay endpoints, this is risky because a misconfigured or malicious baseUrl can silently receive valid credentials, causing credential exposure or unintended external communication.
The script collects App Secret, Verification Token, and optionally Encrypt Key, then writes them directly into ~/.openclaw/config/feishu.json in plaintext without setting restrictive file permissions or warning the user. Any local user, backup system, support bundle, or malware with access to the home directory may recover these credentials and use them to impersonate or compromise the Feishu integration.
If pnpm is missing, the script automatically runs npm install -g pnpm, which performs a global package installation and changes the user's environment. The message says pnpm was not found and is being installed, but it does not clearly warn about the global system modification or ask for consent before doing so.
The script performs a global install with pnpm add -g openclaw, which writes to system/user package locations and changes the runtime environment. Although the script prints progress messages, it does not explicitly warn the user beforehand that it will install software globally or alter their environment, and there is no confirmation prompt for this first-time install path.
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.
# 初始化配置
echo "⚙️ 初始化配置..."
if [ ! -d ~/.openclaw ]; then
mkdir -p ~/.openclaw
fi
# 创建必要的目录
The skill name and description are entirely in Chinese, with no indication that other languages are supported or that the user can opt into this locale. Under the policy for natural-language violations, this is a locale/language constraint that is not documented as optional or justified.
The script’s prompts and status messages are entirely in Chinese, which imposes a specific language on all users without offering an alternative or opt-in. The policy requires flagging language or locale constraints unless the skill offers a choice or clearly documents a justified regional limitation.
The script's comments, prompts, and status messages are entirely in Chinese, including the interactive confirmation prompt. There is no indication that the skill is region-specific or that users can opt into another language, which creates a natural-language locale policy issue.
All comments and interactive prompts are presented in Chinese, including installation instructions and confirmations. There is no indication that the skill is intended only for a Chinese-speaking or region-specific audience, and no user opt-in or language selection is provided.
All prompts, status messages, and usage instructions in the script are presented only in Chinese. This forces a specific language on users without offering a language choice or documenting a justified locale restriction.