Back to skill

Security audit

huawei-cloud-ucs-cluster-onboarding-manager

Security checks across malware telemetry and agentic risk

Overview

The skill is coherent for Huawei UCS cluster management, but it needs Review because it handles powerful cloud and Kubernetes credentials with some unsafe or under-scoped examples.

Install only if you are comfortable giving the agent UCS cluster-management authority. Use least-privilege IAM where possible, prefer temporary credentials, avoid pasting kubeconfig contents directly into commands or chats, store kubeconfigs with restrictive permissions, and require explicit review before any registration, deletion, fleet reassignment, or federation kubeconfig operation.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (21)

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The guide instructs users to export and store long-lived cloud access credentials in environment variables and a local config file without warning about secret exposure risks, file permissions, shell history, process inspection, or preference for short-lived credentials. In a cluster onboarding and fleet-management skill, these credentials can grant broad control over UCS resources, so poor handling materially increases the chance of credential leakage and subsequent account or cluster compromise.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The self-managed registration example passes raw kubeconfig content directly on the command line via `--metadata.annotations.kubeconfig=<kubeconfig-content>`, but the document does not warn that kubeconfig commonly contains bearer tokens, client certificates, or other cluster-admin credentials. Putting such material in shell history, process arguments, logs, screenshots, or copied transcripts can expose credentials and enable unauthorized access to the target Kubernetes cluster.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The cluster-removal workflow provides the `LeaveGroup` command and only a verification step, but it does not warn that removing a cluster immediately breaks fleet-level governance and policy association inherited through the group. In this UCS fleet-management context, that omission can lead operators to unintentionally reduce coverage or create compliance gaps during routine administration.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The bulk association workflow shows `UpdateClusterGroupAssociatedClusters` for multiple cluster IDs without warning that it changes membership for several clusters in one operation. In a fleet-governance skill, this increases the chance of accidental mass reassignment, which can alter policy scope across many clusters at once and cause broad operational or compliance impact.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The reorganization scenario demonstrates deleting the old fleet group immediately after creating a new one, but omits any warning, dependency checks, or confirmation. Because fleet groups are tied to organizational governance and may have policies bound through related workflows, this pattern can encourage unsafe deletion that disrupts governance coverage or administrative intent.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The guide documents creation and download of cluster and federation kubeconfigs, which are bearer-style access credentials for Kubernetes, but does not warn users to treat them as secrets, minimize lifetime, avoid shell/history leakage, or store them securely. In a cluster-management skill, omission of such handling guidance can directly lead to credential exposure through terminals, files, chat logs, or source control.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The verification guide includes deletion commands for fleet groups and clusters as routine cleanup steps, but it does not clearly warn that these operations deregister resources and may disrupt management, access, or dependent workflows if run against real environments. In an operational cluster-management skill, normalizing destructive commands without an explicit impact warning increases the chance of accidental production impact.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The document instructs users to generate and retrieve kubeconfig material, which is access-sensitive because it can grant cluster API access equivalent to a user or service identity. Without handling guidance, users may paste, store, log, or transmit kubeconfig contents insecurely, leading to credential exposure and cluster compromise.

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=turbo --spec.manageType=discrete --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
91% confidence
Finding
The example normalizes embedding kubeconfig material in a command argument, which is unsafe because kubeconfig often contains bearer tokens, client certs, keys, and API endpoints. Anyone with access to shell history or process inspection could capture cluster credentials and gain cluster access.

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=turbo --spec.manageType=discrete --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
91% confidence
Finding
The example normalizes embedding kubeconfig material in a command argument, which is unsafe because kubeconfig often contains bearer tokens, client certs, keys, and API endpoints. Anyone with access to shell history or process inspection could capture cluster credentials and gain cluster access.

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
89% confidence
Finding
Although the surrounding text warns about security, the same section also endorses passing kubeconfig via --metadata.annotations.kubeconfig for self-managed registration. That operational pattern conflicts with the security warning because it still encourages exposing secret material in a CLI argument.

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
89% confidence
Finding
Although the surrounding text warns about security, the same section also endorses passing kubeconfig via --metadata.annotations.kubeconfig for self-managed registration. That operational pattern conflicts with the security warning because it still encourages exposing secret material in a CLI argument.

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

## Workflow
Confidence
89% confidence
Finding
The instruction can lead operators to paste complete cluster credentials into terminals, chat transcripts, or automation logs. Since kubeconfig may grant broad cluster privileges, compromise could lead to unauthorized cluster administration, secret access, or workload tampering.

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

## Workflow
Confidence
89% confidence
Finding
The instruction can lead operators to paste complete cluster credentials into terminals, chat transcripts, or automation logs. Since kubeconfig may grant broad cluster privileges, compromise could lead to unauthorized cluster administration, secret access, or workload tampering.

Credential Access

High
Category
Privilege Escalation
Content
| Parameter              | Description                          | Required for SelfManaged |
| ---------------------- | ------------------------------------ | ----------------------- |
| `--metadata.annotations.kubeconfig` | Kubeconfig YAML content | Yes (for attached clusters) |

### Optional Parameters
Confidence
88% confidence
Finding
This duplicate finding points to the same risky pattern: inline transmission of kubeconfig YAML through `--metadata.annotations.kubeconfig`. Because kubeconfigs often contain certificates, tokens, or endpoint details, exposing them as command arguments increases the chance of credential disclosure during normal operations.

Credential Access

High
Category
Privilege Escalation
Content
| Parameter              | Description                          | Required for SelfManaged |
| ---------------------- | ------------------------------------ | ----------------------- |
| `--metadata.annotations.kubeconfig` | Kubeconfig YAML content | Yes (for attached clusters) |

### Optional Parameters
Confidence
88% confidence
Finding
This duplicate finding points to the same risky pattern: inline transmission of kubeconfig YAML through `--metadata.annotations.kubeconfig`. Because kubeconfigs often contain certificates, tokens, or endpoint details, exposing them as command arguments increases the chance of credential disclosure during normal operations.

Credential Access

High
Category
Privilege Escalation
Content
**Self-Managed Cluster Requirements**:
- The kubeconfig must be valid YAML in standard Kubernetes format
- The cluster API server must be reachable from UCS management plane
- Ensure the kubeconfig user has sufficient RBAC permissions
- Recommended: use a dedicated service account with cluster-admin or admin privileges

### 3. Delete (Deregister) a Cluster
Confidence
95% confidence
Finding
The guide recommends using a dedicated service account with `cluster-admin` or admin privileges in the kubeconfig for onboarding. If that kubeconfig is leaked or misused, an attacker gains broad control over the onboarded cluster, making the combination of credential handling plus excessive privilege especially dangerous in this context.

Credential Access

High
Category
Privilege Escalation
Content
**Parameters**:
- `--clustergroupid` (required): Fleet group ID
- `--duration` (required): Kubeconfig validity duration in seconds
- `--cli-region` (required): Region ID

**Response**: Returns a federation kubeconfig YAML that provides unified access to all clusters in the fleet group.
Confidence
91% confidence
Finding
The document describes downloading a federation kubeconfig that grants unified access to all clusters in a fleet group. Because this credential can expand access beyond a single cluster, lack of strong caution and handling guidance materially raises the impact of accidental disclosure or misuse.

Credential Access

High
Category
Privilege Escalation
Content
- `--duration` (required): Kubeconfig validity duration in seconds
- `--cli-region` (required): Region ID

**Response**: Returns a federation kubeconfig YAML that provides unified access to all clusters in the fleet group.

**Use Cases**:
- Multi-cluster workload distribution
Confidence
90% confidence
Finding
The stated use cases confirm that the returned federation kubeconfig enables cross-cluster resource access and workload operations. That context increases the severity of mishandling because a single leaked credential could enable broad fleet-level compromise rather than isolated access.

Credential Access

High
Category
Privilege Escalation
Content
Expected: Fleet group deleted successfully.

### 3.6 Kubeconfig & Access

> ⚠️ **ShowClusterAccessInfo only works for `category=onpremise` clusters** (verified: returns `UCS.01030011`). For `category=self` (CCE) clusters, skip this step and use CCE API `CreateKubernetesClusterCert` to get kubeconfig.
Confidence
94% confidence
Finding
This section explicitly discusses obtaining kubeconfig for managed clusters, which is credential/access material. In the context of a cluster-onboarding skill, such access is operationally legitimate, but documenting retrieval without strong controls still creates a real risk of exposing privileged cluster access.

Credential Access

High
Category
Privilege Escalation
Content
### 3.6 Kubeconfig & Access

> ⚠️ **ShowClusterAccessInfo only works for `category=onpremise` clusters** (verified: returns `UCS.01030011`). For `category=self` (CCE) clusters, skip this step and use CCE API `CreateKubernetesClusterCert` to get kubeconfig.

**For category=onpremise (self-managed) clusters**:
Confidence
94% confidence
Finding
The text instructs use of a CCE API to obtain kubeconfig, which directly enables access to cluster control planes. In this skill context the action is expected for administration, but it remains security-sensitive because mishandling the resulting material can expose full cluster access.

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

No suspicious patterns detected.