Back to skill

Security audit

Alibabacloud Opc Deploy

Security checks across malware telemetry and agentic risk

Overview

This is a real cloud deployment skill, but it should go to Review because some automatic purchases and account-wide changes are broader or less clearly disclosed than the user-facing summaries suggest.

Install only if you are comfortable granting a deployment assistant permission to create and manage billable Alibaba Cloud resources. Before running it, ask for an itemized confirmation of every paid or account-wide action, especially ESA PurchaseRatePlan and ActionTrail. Use the dedicated RamRoleArn setup and quota limits, avoid broad admin credentials, and review the files it leaves under state/, ~/.aliyun, ~/.local/bin, ~/.opc, and ~/.ssh.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (14)

Description-Behavior Mismatch

Medium
Confidence
97% confidence
Finding
The file tells users that PDS and ESA will be manually guided, but later defines ESA as an automatic API purchase with AutoPay enabled. In a cloud-provisioning skill, this mismatch undermines informed consent and can trigger paid resource creation the user did not explicitly approve, which is especially risky because the skill metadata says cloud actions must never be triggered without explicit confirmation.

Description-Behavior Mismatch

High
Confidence
99% confidence
Finding
The pre-confirmation summary explicitly says ESA will be manually opened, but the execution steps later auto-provision ESA through PurchaseRatePlan with AutoPay true. This is a stronger deception point than the manifest mismatch because it affects the exact consent screen shown before purchase, creating a real risk of unauthorized charges and user surprise during deployment.

Description-Behavior Mismatch

Medium
Confidence
91% confidence
Finding
The SKU goes beyond provisioning the user-described application stack and additionally creates account-level audit/security services such as ActionTrail and prompts for Cloud Security Center/WAF setup. These actions affect the broader cloud account posture, may incur side effects outside the app environment, and can violate least surprise if the user only consented to deploy workload resources.

Intent-Code Divergence

High
Confidence
96% confidence
Finding
The user-facing text repeatedly claims an RDS HA instance with 4 cores and 8 GB, but the configured class is `mysql.n2.large.2c`, which is a lower-tier 2-core flavor. This mismatch can cause underprovisioning, degraded performance during burst traffic, and misleading billing/expectation management for a production deployment skill.

Description-Behavior Mismatch

Medium
Confidence
91% confidence
Finding
The SKU says it will create the listed cloud resources, but it also enables ActionTrail account audit logging across all regions and writes logs to OSS. That changes account-wide security/monitoring posture beyond the clearly advertised package scope, which is risky in a deployment skill because it creates additional governance, storage, and privacy-impacting resources the user may not have explicitly consented to.

Context-Inappropriate Capability

Medium
Confidence
89% confidence
Finding
The ActionTrail step creates a trail with TrailRegion set to All and EventRW set to All, which captures management activity across the account in all regions. For a skill whose purpose is provisioning one workload stack, this is broader than necessary and can collect unrelated operational metadata, increasing privacy, compliance, and blast-radius concerns if done without explicit justification and consent.

Description-Behavior Mismatch

High
Confidence
99% confidence
Finding
The file tells users that ESA requires manual confirmation, but the actual deployment step later performs an API purchase with AutoPay enabled. In a cloud-provisioning skill, this discrepancy can cause unauthorized paid resource creation and breaks the explicit-consent requirement stated in the skill metadata.

Description-Behavior Mismatch

High
Confidence
99% confidence
Finding
The pre-confirmation summary claims ESA will be manually enabled, yet the workflow later auto-provisions it via PurchaseRatePlan with AutoPay=true. Because this summary is what the user reviews before consenting to spend money, the mismatch can invalidate consent and lead to unintended charges or resource activation.

Intent-Code Divergence

Medium
Confidence
95% confidence
Finding
The inline documentation and fallback text frame ESA as a manual-confirmation flow, but the implemented step automatically purchases the plan. Even though the direct financial impact may be limited here because the plan is labeled free, hidden auto-enablement of cloud services is still risky because it normalizes undisclosed purchasing behavior and may create side effects or future billing exposure.

Natural-Language Policy Violations

Medium
Confidence
84% confidence
Finding
The skill instructs configuring the Alibaba Cloud CLI with `Default Language = zh` without asking the user. Forcing a persistent preference in the user's local CLI environment is an unnecessary configuration side effect that can alter future commands, scripts, and troubleshooting workflows, especially for users expecting English output.

Natural-Language Policy Violations

Low
Confidence
91% confidence
Finding
The file’s post-deployment guidance strongly channels the user into using a specific desktop AI assistant/QoderWork workflow to access and operate the newly created server, without presenting equivalent alternatives. In a cloud-provisioning skill, this is risky because it can steer users into an unnecessary third-party tool path that may expand trust boundaries, create supply-chain exposure, or normalize granting remote server access to a particular assistant.

Session Persistence

Medium
Category
Rogue Agent
Content
VER="$(read [cli_meta].min_version)"
      SHA="$(read [cli_meta].sha256_darwin_arm64)"  # or darwin_amd64
      TOFU_FILE="$HOME/.opc/cli-tofu-${VER}-darwin-arm64.sha256"
      mkdir -p ~/.local/bin ~/.opc
      curl -fLo /tmp/aliyun-cli.tgz --connect-timeout 15 --max-time 300 "https://aliyuncli.alicdn.com/aliyun-cli-darwin-arm64-${VER}.tgz"
      # SHA256 three-tier verification
      ACTUAL_SHA="$(shasum -a 256 /tmp/aliyun-cli.tgz | awk '{print $1}')"
Confidence
86% confidence
Finding
mkdir -p ~/.local/bin ~/.opc

Session Persistence

Medium
Category
Rogue Agent
Content
User-facing progress:
    metadata has SHA256 → "正在安装部署工具…… ✓ 已安装(版本 ${VER},完整性校验通过)"
    TOFU hit existing record → "正在安装部署工具…… ✓ 已安装(版本 ${VER},与首次记录一致)"
    TOFU first write → "正在安装部署工具…… ✓ 已安装(版本 ${VER},首次安装哈希已记录)"
  ⚠️ iron-rule #13: the entire CLI install completes inside the current AI terminal's Bash/PowerShell; do NOT output commands for the user to run manually.
  ⚠️ iron-rule #28: CLI install and credential config are two independent things — this step only installs the CLI; credential config runs in the user's local terminal in Phase 0.3.
Confidence
74% confidence
Finding
write → "正在安装部署工具…… ✓ 已安装(版本 ${VER},首次安装哈希已记录)" ⚠️ iron-rule #13: the entire CLI install completes inside the current AI terminal's Bash/PowerShell; do NOT output commands for the user to run manual

Session Persistence

Medium
Category
Rogue Agent
Content
2. **Step-by-step execution + step-by-step reporting**: after each resource is created, tell the user the result (IP / connection string / status); do not silently run a long batch.
3. **Never fail silently**: if any step's API errors → immediately tell the user which step failed + the error message + a suggestion (retry / switch zone / check quota).
4. **Be honest that Token Plan / PDS cannot be automated**: on a Token Plan or Alibaba Cloud Drive PDS step → output the console link + operating instructions, and wait for the user to confirm "I've enabled it". **ESA now supports API auto-provisioning** (the PurchaseRatePlan API).
5. **VPC reuse-first**: first query existing VPCs tagged `opc:managed=true`; reuse if present, only create when none exists.
6. **The state file must be written**: after each creation, append the resource ID to `state/<sku>-<timestamp>.json`, used to recognize existing resources during later upgrade/management.
7. **Database passwords never hit disk**: after generation the password is **shown once in the conversation only**; the state file records only `password_set: true` + `set_at`, and it is never written to any state/log/yaml. If the user loses the password → reset via RDS `ResetAccountPassword`, never recover from history. AccessKeys are likewise never displayed, stored, or echoed (see iron-rule #15).
8. **MCP-first, CLI-fallback**: when MCP is detected available, call via MCP; otherwise fall back to executing `aliyun` CLI Bash commands directly.
Confidence
82% confidence
Finding
create when none exists. 6. **The state file must be written**: after each creation, append the resource ID to `state/<sku>-<timestamp>.json`, used to recognize existing resources during later upgrade

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

No suspicious patterns detected.