Back to skill

Security audit

huawei-cloud-ucs-cluster-onboarding-manager

Security checks across malware telemetry and agentic risk

Overview

This appears to be a legitimate Huawei UCS operations skill, but it guides users through powerful cluster credential handling and destructive cloud actions with some unsafe or under-scoped examples.

Install only if you administer Huawei Cloud UCS resources. Before running commands, verify cluster and fleet IDs, use temporary least-privilege Huawei credentials, avoid placing raw kubeconfig content in shell arguments or chat, store generated kubeconfigs with restricted permissions, use the shortest practical federation token duration, and require explicit confirmation before delete, deregister, or fleet-removal actions.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (28)

Vague Triggers

Medium
Confidence
88% confidence
Finding
The trigger list includes generic phrases such as "cluster group," "cluster lifecycle," and "managed clusters," which can activate the skill for broad Kubernetes or cluster-administration requests unrelated to Huawei UCS. In an agentic system, this kind of overbroad routing can steer users into executing cloud-management or credential-access workflows in the wrong context, increasing the chance of unintended privileged actions.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The capability and use-case sections advertise kubeconfig retrieval and federation kubeconfig download without an immediate, prominent warning that these artifacts are sensitive credentials granting cluster access. Because these sections are high-visibility entry points for users and agents, omitting the warning there makes accidental exposure, oversharing, or unsafe handling more likely.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The deregistration guidance explains that policy governance stops after cluster removal, but it does not clearly frame deregistration itself as a destructive action that removes UCS management and may disrupt operations. In an operational skill focused on cluster lifecycle, this omission can cause users or agents to perform irreversible management loss without an explicit warning or confirmation step.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The document grants and describes kubeconfig retrieval capabilities but does not explicitly warn that kubeconfig files are highly sensitive credentials that can provide cluster access. In a cluster onboarding and fleet-management skill, normalizing kubeconfig download without handling guidance increases the chance of accidental credential exposure, insecure storage, or oversharing.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The document instructs users to pass full kubeconfig content directly on the command line via metadata.annotations.kubeconfig, which can expose cluster credentials in shell history, process listings, logs, and agent transcripts. Because kubeconfigs commonly contain bearer tokens or client certificates, this creates a realistic credential leakage path for self-managed cluster access.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The skill documents removing a cluster from a fleet group as a direct operational step without an explicit warning or confirmation gate. In this UCS context, group membership affects policy governance and organizational controls, so an operator or agent could unintentionally detach a cluster and silently remove it from centralized governance scope.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The reorganization scenario shows creating a new fleet and then deleting the old fleet group without repeating the earlier deletion safeguards. Because this is an action-oriented skill for infrastructure administration, omission of the warning in a scenario section increases the chance that users or downstream agents will execute deletion without checking for bound policies or confirming organizational impact.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The guide documents commands that generate cluster and federation kubeconfigs but does not warn that the returned YAML contains bearer tokens, client certificates, or endpoint details that grant direct cluster access. In a skill meant to guide operational use, omission of handling guidance materially increases the chance users paste, log, store, or share privileged kubeconfigs insecurely.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The document includes destructive cleanup commands that delete clusters and fleet groups without any cautionary note, confirmation guidance, or advice to verify resource identifiers before execution. In an operational skill for cluster onboarding and lifecycle management, users may run these commands against real environments, causing unintended service disruption or irreversible deregistration.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill instructs users to retrieve cluster access information and generate kubeconfig content without warning that these outputs are sensitive credentials that can grant cluster access. If captured in terminal history, logs, screenshots, or shared transcripts, this could expose administrative access to Kubernetes environments.

Credential Access

High
Category
Privilege Escalation
Content
- Create, delete, update, and query fleet groups for cluster organization
- Add/remove clusters from fleet groups (join/leave)
- Retry cluster activation
- Obtain cluster access information and kubeconfig credentials
- Download federation kubeconfig for multi-cluster access
- Check UCS resource quotas
Confidence
87% confidence
Finding
kubeconfig

Credential Access

High
Category
Privilege Escalation
Content
- Add/remove clusters from fleet groups (join/leave)
- Retry cluster activation
- Obtain cluster access information and kubeconfig credentials
- Download federation kubeconfig for multi-cluster access
- Check UCS resource quotas

**Typical Use Cases**:
Confidence
89% confidence
Finding
kubeconfig

Credential Access

High
Category
Privilege Escalation
Content
hcloud UCS RegisterCluster --apiVersion=v1 --kind=Cluster --metadata.name=prod-backend-cluster --spec.category=self --spec.provider=huaweicloud --spec.type=cce --spec.manageType=grouped --spec.country=CN --spec.city=110000 --metadata.uid=<cce-cluster-id> --spec.projectID=<project-id> --spec.region=cn-north-4 --spec.clusterGroupID=<group-id> --cli-region=cn-north-4

# Register a self-managed/attached cluster
hcloud UCS RegisterCluster --apiVersion=v1 --kind=Cluster --metadata.name=datacenter-k8s --spec.category=onpremise --spec.provider=self_managed --spec.type=Kubernetes --spec.manageType=discrete --spec.country=CN --spec.city=110000 --metadata.annotations.kubeconfig=<kubeconfig-yaml-content> --cli-region=cn-north-4

# Retry cluster activation (if registration stuck)
hcloud UCS RetryClusterActivation --clusterid=<ucs-cluster-id> --cli-region=cn-north-4
Confidence
93% confidence
Finding
kubeconfig

Credential Access

High
Category
Privilege Escalation
Content
hcloud UCS RegisterCluster --apiVersion=v1 --kind=Cluster --metadata.name=prod-backend-cluster --spec.category=self --spec.provider=huaweicloud --spec.type=cce --spec.manageType=grouped --spec.country=CN --spec.city=110000 --metadata.uid=<cce-cluster-id> --spec.projectID=<project-id> --spec.region=cn-north-4 --spec.clusterGroupID=<group-id> --cli-region=cn-north-4

# Register a self-managed/attached cluster
hcloud UCS RegisterCluster --apiVersion=v1 --kind=Cluster --metadata.name=datacenter-k8s --spec.category=onpremise --spec.provider=self_managed --spec.type=Kubernetes --spec.manageType=discrete --spec.country=CN --spec.city=110000 --metadata.annotations.kubeconfig=<kubeconfig-yaml-content> --cli-region=cn-north-4

# Retry cluster activation (if registration stuck)
hcloud UCS RetryClusterActivation --clusterid=<ucs-cluster-id> --cli-region=cn-north-4
Confidence
93% confidence
Finding
kubeconfig

Credential Access

High
Category
Privilege Escalation
Content
| `--metadata.uid`                 | CCE only | CCE cluster ID                     | Must reference existing CCE cluster          |
| `--spec.projectID`               | CCE only | Project ID                         | Valid Huawei Cloud project ID                |
| `--spec.region`                  | CCE only | CCE cluster region                 | Must match CCE cluster region                |
| `--metadata.annotations.kubeconfig` | Self-managed only | Kubeconfig content | Valid Kubernetes kubeconfig YAML           |
| `--spec.clusterGroupID`          | No       | Assign to fleet at registration    | Valid fleet group ID                         |
| `--metadata.labels.*`            | No       | Custom labels                      | Key-value pairs                              |
Confidence
84% confidence
Finding
kubeconfig

Credential Access

High
Category
Privilege Escalation
Content
| `--metadata.uid`                 | CCE only | CCE cluster ID                     | Must reference existing CCE cluster          |
| `--spec.projectID`               | CCE only | Project ID                         | Valid Huawei Cloud project ID                |
| `--spec.region`                  | CCE only | CCE cluster region                 | Must match CCE cluster region                |
| `--metadata.annotations.kubeconfig` | Self-managed only | Kubeconfig content | Valid Kubernetes kubeconfig YAML           |
| `--spec.clusterGroupID`          | No       | Assign to fleet at registration    | Valid fleet group ID                         |
| `--metadata.labels.*`            | No       | Custom labels                      | Key-value pairs                              |
Confidence
84% confidence
Finding
Kubeconfig

Credential Access

High
Category
Privilege Escalation
Content
| `--metadata.uid`                 | CCE only | CCE cluster ID                     | Must reference existing CCE cluster          |
| `--spec.projectID`               | CCE only | Project ID                         | Valid Huawei Cloud project ID                |
| `--spec.region`                  | CCE only | CCE cluster region                 | Must match CCE cluster region                |
| `--metadata.annotations.kubeconfig` | Self-managed only | Kubeconfig content | Valid Kubernetes kubeconfig YAML           |
| `--spec.clusterGroupID`          | No       | Assign to fleet at registration    | Valid fleet group ID                         |
| `--metadata.labels.*`            | No       | Custom labels                      | Key-value pairs                              |
Confidence
84% confidence
Finding
kubeconfig

Credential Access

High
Category
Privilege Escalation
Content
| -------------------------------- | -------- | ------------------------ | -------------------------------------------- |
| `--clusterid`                    | Yes      | UCS cluster ID           | Must be registered cluster                   |
| `--clustergroupid`               | Yes (DownloadFederationKubeconfig) | Fleet group ID | Valid fleet group ID            |
| `--duration`                     | Yes (DownloadFederationKubeconfig) | Token duration in seconds | Integer                   |

### Quota Parameters
Confidence
86% confidence
Finding
Kubeconfig

Credential Access

High
Category
Privilege Escalation
Content
2. **Fleet Grouping**: Organize clusters by environment (production/staging/development) or business domain for unified governance
3. **Kubeconfig Security**: Store kubeconfig files securely; never expose them in public repositories or CI logs
4. **Deregistration Caution**: Removing a cluster from UCS disables all policy governance and federation access for that cluster
5. **Self-Managed Registration**: Ensure the self-managed cluster kubeconfig is valid and the cluster API server is reachable; pass it via `--metadata.annotations.kubeconfig`
6. **Quota Monitoring**: Check quotas before registering new clusters to avoid hitting limits
7. **Federation Kubeconfig Duration**: Choose appropriate `--duration` for federation kubeconfig tokens based on usage patterns
Confidence
82% confidence
Finding
kubeconfig

Credential Access

High
Category
Privilege Escalation
Content
2. **Fleet Grouping**: Organize clusters by environment (production/staging/development) or business domain for unified governance
3. **Kubeconfig Security**: Store kubeconfig files securely; never expose them in public repositories or CI logs
4. **Deregistration Caution**: Removing a cluster from UCS disables all policy governance and federation access for that cluster
5. **Self-Managed Registration**: Ensure the self-managed cluster kubeconfig is valid and the cluster API server is reachable; pass it via `--metadata.annotations.kubeconfig`
6. **Quota Monitoring**: Check quotas before registering new clusters to avoid hitting limits
7. **Federation Kubeconfig Duration**: Choose appropriate `--duration` for federation kubeconfig tokens based on usage patterns
Confidence
82% confidence
Finding
kubeconfig

Credential Access

High
Category
Privilege Escalation
Content
4. **Deregistration Caution**: Removing a cluster from UCS disables all policy governance and federation access for that cluster
5. **Self-Managed Registration**: Ensure the self-managed cluster kubeconfig is valid and the cluster API server is reachable; pass it via `--metadata.annotations.kubeconfig`
6. **Quota Monitoring**: Check quotas before registering new clusters to avoid hitting limits
7. **Federation Kubeconfig Duration**: Choose appropriate `--duration` for federation kubeconfig tokens based on usage patterns

## Reference Documents
Confidence
83% confidence
Finding
Kubeconfig

Credential Access

High
Category
Privilege Escalation
Content
4. **Deregistration Caution**: Removing a cluster from UCS disables all policy governance and federation access for that cluster
5. **Self-Managed Registration**: Ensure the self-managed cluster kubeconfig is valid and the cluster API server is reachable; pass it via `--metadata.annotations.kubeconfig`
6. **Quota Monitoring**: Check quotas before registering new clusters to avoid hitting limits
7. **Federation Kubeconfig Duration**: Choose appropriate `--duration` for federation kubeconfig tokens based on usage patterns

## Reference Documents
Confidence
83% confidence
Finding
kubeconfig

Credential Access

High
Category
Privilege Escalation
Content
- ❌ Using `--name=my-cluster` instead of `--metadata.name=my-cluster`
- ❌ Using `--cluster_type=CCE` instead of `--spec.category=self --spec.type=cce`
- ❌ Using `--cluster_id=<cce-id>` instead of `--metadata.uid=<cce-id>`
- ❌ Using `--kubeconfig_file=<content>` instead of `--metadata.annotations.kubeconfig=<content>`
- ❌ Using `--spec.category=CCE` (uppercase) instead of `--spec.category=self` (verified correct value)
- ❌ Using `--spec.provider=huawei_cloud` (with underscore) instead of `--spec.provider=huaweicloud` (no underscore)
- ❌ Using `--spec.type=CCE` (uppercase) instead of `--spec.type=cce` (lowercase)
Confidence
86% confidence
Finding
kubeconfig

Credential Access

High
Category
Privilege Escalation
Content
- ❌ Using `--name=my-cluster` instead of `--metadata.name=my-cluster`
- ❌ Using `--cluster_type=CCE` instead of `--spec.category=self --spec.type=cce`
- ❌ Using `--cluster_id=<cce-id>` instead of `--metadata.uid=<cce-id>`
- ❌ Using `--kubeconfig_file=<content>` instead of `--metadata.annotations.kubeconfig=<content>`
- ❌ Using `--spec.category=CCE` (uppercase) instead of `--spec.category=self` (verified correct value)
- ❌ Using `--spec.provider=huawei_cloud` (with underscore) instead of `--spec.provider=huaweicloud` (no underscore)
- ❌ Using `--spec.type=CCE` (uppercase) instead of `--spec.type=cce` (lowercase)
Confidence
86% confidence
Finding
kubeconfig

Credential Access

High
Category
Privilege Escalation
Content
### W2: Register a Self-Managed Kubernetes Cluster

**Pre-registration Checklist**:
1. Verify kubeconfig is valid: `kubectl --kubeconfig=<path> cluster-info`
2. Ensure API server is reachable from UCS management plane
3. Check UCS quota availability
4. Verify kubeconfig user has sufficient RBAC permissions
Confidence
91% confidence
Finding
kubeconfig

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

No suspicious patterns detected.