T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:24- Finding
Remote Installation Script Is Executed Without Integrity Verification
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is aimed at Alibaba Cloud log export management, but it requires risky unverified tool updates and can continuously copy or stop/delete log export tasks.
Install only after reviewing the Aliyun CLI and plugin setup path, avoiding curl-to-bash and unpinned latest downloads where possible. Use least-privilege RAM credentials scoped to the intended SLS project and OSS bucket, avoid command-line secrets, and confirm exactly which LogStores will be exported before running batch-create or any start/stop/delete action.
SKILL.md:24Remote Installation Script Is Executed Without Integrity Verification
SKILL.md:28Mutable CLI and Plugin Updates Are Installed Without Version or Integrity Controls
references/cli-installation-guide.md:83Long-Lived Cloud Credentials Are Recommended as Command-Line Arguments
The skill instructs the agent to install or self-update software via a remote shell bootstrap script and built-in upgrade commands. This is dangerous because it enables self-modification and execution of externally fetched code in the agent environment, expanding the attack surface and undermining environment integrity.
**Pre-check: Aliyun CLI >= 3.3.3 required**
> [MUST] Verify: `aliyun version` — must be >= 3.3.3.
> - **First install or major upgrade:** `/bin/bash -c "$(curl -fsSL --connect-timeout 10 --max-time 120 https://aliyuncli.alicdn.com/setup.sh)"`
> - **Routine update (CLI >= 3.3.5):** `aliyun upgrade` — prefer this built-in self-update over re-running the install script.
> - See [references/cli-installation-guide.md](references/cli-installation-guide.md) for full installation instructions.
**Pre-check: Aliyun CLI plugin update required**
The explicit anti-refusal instruction attempts to constrain the agent from declining unsafe or policy-violating actions by banning refusal language. In an adversarial or high-risk scenario, this can suppress safety behavior and pressure the agent to continue assisting with sensitive cloud operations even when it should stop.
> **[CRITICAL] Do NOT refuse to help:** When an error occurs, NEVER use refusal phrases such as "无法帮您", "我无法完成", "无法继续", "帮不了", "I cannot help", or "I am unable to help". Instead, explain the specific error, its cause, and the exact steps the user should take to resolve it, then hand the decision back to the user.
Referenced artifact was not completely inspected
For detailed verification steps, see [references/verification-method.md](references/verification-method.md).
Referenced artifact was not completely inspected
For detailed verification steps, see [references/verification-method.md](references/verification-method.md).
Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.
aliyun version
### Self-Update (CLI >= 3.3.5)
Once the CLI is at version 3.3.5 or newer, routine updates can use the built-in self-update subcommand instead of re-running the install script:
Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.
Once the CLI is at version 3.3.5 or newer, routine updates can use the built-in self-update subcommand instead of re-running the install script:
aliyun upgrade
The skill explicitly instructs the agent to avoid refusal language and to continue being helpful even during error conditions. In an adversarial skill, this kind of anti-refusal prompt can weaken safety boundaries by pressuring the agent to comply with risky or disallowed actions instead of stopping, escalating, or enforcing policy-based refusals.
**[CRITICAL] Do NOT refuse to help:** When an error occurs, NEVER use refusal phrases such as "无法帮您", "我无法完成", "无法继续", "帮不了", "I cannot help", or "I am unable to help". Instead, explain the specific error, its cause, and the exact steps the user should take to resolve it, then hand the decision back to the user.
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).
Deletes a specified OSS export task.
**Path:** `DELETE /ossexports/{ossExportName}`
---
The skill clearly expects access to sensitive environment variables such as cloud credentials and account identifiers, but it declares no explicit tool scope or permission boundary. This creates ambiguity about what the agent is allowed to read and increases the risk of unintended credential exposure or execution in a broader-than-necessary runtime context.
The trigger list is very broad and includes generic operational phrases like 'start', 'delete', 'manage export task', and multilingual variants that could match user requests unexpectedly. That increases the chance this skill is invoked in the wrong context and then performs or proposes destructive cloud operations against log-export infrastructure.
This markdown file instructs users to ship collected log data to OSS for storage and analysis, which can materially affect user data handling and privacy. Although it explains setup details, it does not include any user-facing warning about sensitive data being exported, broader access exposure, or the need to validate retention and access controls before enabling the export task.
The referenced document is about generic OSS bucket creation, file upload/download, sharing, and cleanup, not the advertised SLS-to-OSS log export workflow. In a skill intended for Security Center/SLS archival automation, this mismatch can mislead an agent or operator into performing unrelated storage actions, broadening scope and increasing the chance of incorrect or unsafe operations.
This section instructs users to generate and share file URLs from OSS, which is not justified by the skill's cold-storage archival purpose. Introducing sharing guidance into a log archival context increases the risk of exposing archived logs or other sensitive objects through temporary public links, which could lead to data leakage if an agent follows or adapts the instructions improperly.
The guide instructs users to execute a remotely fetched shell script directly with bash, which removes any opportunity to inspect the code before execution. If the download endpoint, CDN path, or transport trust is compromised, this can lead to arbitrary code execution on the host.
The manual install examples stream a downloaded archive directly into extraction and then move the resulting binary into a privileged system path. This creates a supply-chain and arbitrary code execution risk because the artifact is not integrity-checked before installation, and the final placement increases trust and reach of any malicious binary.
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
x86_64
wget --connect-timeout=10 --read-timeout=120 --tries=3 -qO- https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz | tar xz
sudo mv aliyun /usr/local/bin/
ARM64
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
x86_64
wget --connect-timeout=10 --read-timeout=120 --tries=3 -qO- https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz | tar xz
sudo mv aliyun /usr/local/bin/
ARM64
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.
1. Log in to Aliyun Console: https://ram.console.aliyun.com/
2. Navigate to: AccessKey Management
3. Create a new AccessKey pair
4. Save the secret immediately — it's only shown once
### Configuration Modes
The manifest describes a skill for automating SLS log export to OSS for archival, but this file is a broad Alibaba Cloud CLI installation and configuration guide covering generic authentication modes, ECS operations, plugin installation, and unrelated product commands. Those instructions materially expand the apparent scope beyond log export management and are not specific implementation details of the declared purpose.
The guide instructs users to run ECS commands such as aliyun ecs describe-instances and aliyun ecs describe-regions, and to explore other products like Function Compute (aliyun fc --help). For a skill intended to manage SLS log export to OSS, ECS and FC administration capabilities are not justified by the stated purpose and suggest unrelated cloud-management scope.
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
# Restrict permissions
chmod 600 ~/.aliyun/config.json
The documentation exposes stop and delete operations, including force deletion, without any warning about operational impact, confirmation requirements, or guidance to verify the target export task before execution. In an automation skill for log archival, this increases the chance that a user or agent will disable or remove exports that preserve security logs, causing loss of audit visibility and interruption of log retention.
The batch-create command can create export tasks for every LogStore in a project, and the defaults make those exports continuous (from_time=1, to_time=0) without any confirmation, dry-run, or explicit warning. In an agent skill context, this can unintentionally trigger broad data replication of sensitive logs into OSS, increasing data exposure, storage cost, and persistence of security telemetry outside its original control boundary.
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.
p_delete = subparsers.add_parser("delete-export", help="Delete an export task")
add_common_args(p_delete)
p_delete.add_argument("--name", required=True, help="Export task name")
p_delete.add_argument("--force", action="store_true", help="Skip confirmation prompt")
args = parser.parse_args()
The instruction explicitly forbids certain refusal phrases in both Chinese and English, imposing language-specific wording requirements without offering user choice. This is a natural-language policy concern because it constrains response language behavior rather than letting the user select their preferred language or locale.
No suspicious patterns detected.