Back to skill

Security audit

huawei-cloud-cc-instance-query

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed, read-only Huawei Cloud Cloud Connect query helper, with practical caution needed around CLI installation and credential handling.

Install only if you are comfortable letting the agent help run read-only hcloud CC queries against your Huawei Cloud account. Use a least-privilege CC ReadOnlyAccess credential, specify --domain_id and region explicitly, and verify the Huawei Cloud CLI installer source before running the downloaded shell script.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (4)

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

The code is broadly aligned with the declared read-only Cloud Connect inspection purpose: it only runs list/show hcloud CC commands and does not perform write operations. It covers most of the declared resource types: cloud connections, bandwidth packages, inter-region bandwidths, network instances, and routes. However, the declared description explicitly includes cross-account authorisation queries (granted and received), and no such commands appear in the supplied code. Additionally, the supplied chunk is specifically a test script for exercising commands, not the core skill logic itself. That said, the primary functional mismatch is the missing authorisation-query capability.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The guide explicitly instructs users to download and execute a shell script from the network using curl and bash, which is a well-known software supply chain risk. If the hosting location, network path, or script contents are compromised, users could execute arbitrary code on their local system with their own privileges, potentially exposing Huawei Cloud credentials and workstation access.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

This manifest-style JSON repeatedly embeds --cli-region=cn-north-4 in every test command, which forces execution against a specific regional environment. Because the file provides no user choice, opt-in, or justification for the locale constraint, it can violate language/locale policy requirements for region neutrality.

Content

No source excerpt is available for this finding.

Excessive Permissions

Low
Category
Privilege Escalation
Confidence
80% confidence
Finding

Skill requests more permissions than appear necessary for its stated functionality. Review if elevated access is justified.

Content

Scanner excerpt · SKILL.md (reported line 218)May include surrounding context.

This is the grantee's view — the calling account owns the cloud connections and can load network instances owned by other accounts (identified by instance_domain_id).

List permissions:

bash
hcloud CC ListPermissions --cli-region=cn-north-4 --domain_id=<account_id> [--limit=10] [--cloud_connection_id.1=<cc_id>] [--instance_id.1=<ni_id>] [--id.1=<perm_id>] [--name.1=<name>] [--description.1=<desc>]