T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:29- Finding
Unverified Remote Installer Download and Immediate Execution
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is for legitimate Alibaba Cloud ECS administration, but its default setup asks users to run unverified remote installers and grant broad cloud access.
Review before installing. Use a pinned, verifiable installer instead of pipe-to-shell commands; prefer short-lived role or STS credentials over long-lived AK/SK; restrict RAM permissions to specific regions, accounts, and instance ARNs; and require explicit approval for upgrades, destructive remote commands, and overwrites.
SKILL.md:29Unverified Remote Installer Download and Immediate Execution
SKILL.md:296Default RAM Policy Grants Remote Management Capabilities Across Wildcard Resources
SKILL.md:43Long-Lived Cloud Credentials Are Written to a Plaintext Configuration File
The skill fetches an external installer script from the internet and immediately executes it. This is a classic supply-chain risk: if the remote source is compromised or replaced, the agent or user will run attacker-controlled code locally with the current user's privileges.
Linux / macOS:
curl -fsSL https://workbench-cli.oss-cn-hangzhou.aliyuncs.com/install.sh | bash
Windows (PowerShell):
The | bash pattern removes any opportunity for review between retrieval and execution, enabling immediate command chaining from untrusted network input into a shell. In an agent skill, this is even more dangerous because it normalizes automatic execution of arbitrary remote content as part of routine setup.
Linux / macOS:
curl -fsSL https://workbench-cli.oss-cn-hangzhou.aliyuncs.com/install.sh | bash
Windows (PowerShell):
The documented workbench upgrade self-update capability allows the tool to modify its own executable after installation. In an agent-executed environment, self-modifying tools increase supply-chain and integrity risk because an automated workflow may fetch and run new code outside the original review boundary.
│ ├── switch # Switch active profile │ ├── get # Show profile details │ └── delete # Delete a profile ├── upgrade # Self-update └── version # Print version info
The skill instructs users to install the CLI by piping a remotely fetched script directly into a shell, but it does not include an explicit integrity-verification or trust warning. In an agent context, this is especially dangerous because it encourages blind execution of network-delivered code, which could lead to arbitrary local code execution if the hosting endpoint, transport, or distribution pipeline is compromised.
The skill explicitly tells the agent to write persistent credentials into ~/.workbench/config.json, including long-lived AccessKey material in examples. This creates durable local secrets that may be reused by later processes, leaked via filesystem access, or mishandled by other tools, making the persistence especially risky in shared or automated agent environments.
Credentials are stored in ~/.workbench/config.json with 0600 permissions. As an Agent, write this file directly instead of using the interactive workbench config command.
# Create config directory
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
EOF
chmod 600 ~/.workbench/config.json
**Config file schema by mode:**
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.
Built-in safety: The upload command has a built-in overwrite protection. When the remote destination file already exists, the CLI prompts for confirmation before overwriting:
Remote file "/root/id.txt" already exists (728 B, modified Jul 27 10:42). Overwrite? [y/N]
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
| Session busy / attach errors | 7 | Another terminal is attached. Close it first, or use `workbench session close <id>`. |
| `cannot start daemon` / socket errors | 6 | Run `workbench daemon status`. If stopped, any command will auto-restart it. |
| Permission denied (RAM) | 4 | Attach the RAM policy from `## RAM Permissions` to the user or role. |
| `insecure permissions` | 2 | Run `chmod 600 ~/.workbench/config.json`. |
| STS token expired | 4 | If using `RamRoleArn` mode, the CLI auto-refreshes. If using static STS, update the token. |
No suspicious patterns detected.