Back to skill

Security audit

Cloudmigrate

Security checks for vulnerabilities and agentic risk

Overview

This skill is not clearly malicious, but it asks for broad cloud credentials and documents high-impact infrastructure actions with weak scoping and some mismatched claims.

Review this skill before installing. Use separate, least-privilege, short-lived credentials for only the cloud provider you are actively working on; avoid pasting real secrets into prompts or generated files; and treat generated Terraform or deployment commands as drafts that need security review, especially network egress rules and any command that modifies cloud resources.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (2)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:362
Finding

Unrestricted Outbound Network Access in Terraform Security Group Template

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 362-367
Vulnerability Type: Overly permissive network security configuration
Risk Level: Medium

The example Terraform template defines unrestricted IPv4 egress for the application security group:

hcl
egress {
  from_port   = 0
  to_port     = 0
  protocol    = "-1"
  cidr_blocks = ["0.0.0.0/0"]
}

Technical Analysis

The rule permits application instances to initiate connections to every IPv4 destination over every protocol and port. This conflicts with the document's stated least-privilege objective.

Because this code is presented as generated infrastructure output, users may deploy it without tightening the rule. Unrestricted egress is not generally an initial compromise by itself, but it removes an important containment boundary after an application, dependency, or instance is compromised.

Attack Path

  1. A user adopts the example Terraform configuration in a cloud environment.
  2. Terraform creates the application security group with unrestricted outbound access.
  3. An attacker compromises an attached application instance through a separate application, credential, or dependency vulnerability.
  4. The compromised instance connects to an arbitrary attacker-controlled host using any protocol or port.
  5. The attacker uses that channel to retrieve additional payloads, establish command-and-control communication, or exfiltrate accessible data.

Impact Assessment

The rule does not directly grant cloud privileges, but it allows any process running on an attached resource to communicate with arbitrary external systems. Following a workload compromise, this can facilitate data exfiltration, malware retrieval, command-and-control traffic, and access to unauthorized external services.

The scope includes every workload associated with this security group. The ultimate data and privileges exposed depend on the instance role, locally ...[truncated 97 chars]

Remediation
View remediation

Remediation Suggestions

  • Replace unrestricted egress with rules limited to the protocols, ports, and destinations required by the application.
  • Use AWS-managed prefix lists, organization-controlled prefix lists, specific CIDR ranges, or security-group references where appropriate.
  • Route necessary internet access through a controlled egress proxy, firewall, or NAT path with logging and filtering.
  • Prefer VPC endpoints for supported AWS services so traffic does not require unrestricted internet access.
  • Document each permitted destination and its operational justification.
  • Add policy-as-code checks using tools such as Checkov, tfsec, or Open Policy Agent to reject unrestricted egress unless an explicit exception is approved.
  • Enable VPC Flow Logs and alerts for unusual outbound destinations or traffic patterns.

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
SKILL.md:8
Finding

Unnecessarily Broad Multi-Cloud Credential Requirements

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 8-15
Vulnerability Type: Excessive credential exposure and violation of least privilege
Risk Level: Medium

The skill metadata declares simultaneous access to credentials for AWS, Azure, and GCP:

yaml
metadata:
  {
    "openclaw": {
      "requires": {
        "env": ["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AZURE_SUBSCRIPTION_ID", "AZURE_CLIENT_ID", "AZURE_CLIENT_SECRET", "GCP_PROJECT_ID", "GCP_SERVICE_ACCOUNT_JSON"],
        "bins": ["terraform", "ansible", "aws-cli", "az", "gcloud", "docker"]
      },
      "os": ["macos", "linux", "win32"],
      "files": ["SKILL.md"]
    },
    "emoji": "☁️"
  }

Technical Analysis

The declared environment requirements expose authentication material for all three supported cloud providers even when a task may concern only one provider. This expands the credential exposure surface beyond the legitimate needs of provider-specific operations.

Environment variables are inherited by processes unless explicitly filtered. Consequently, tools, generated scripts, subprocesses, plugins, or compromised dependencies launched in the same execution context may be able to read credentials unrelated to the current task.

The metadata does not prove that credentials are actively exfiltrated, and no exfiltration implementation was found. The issue is the unnecessary aggregation and exposure of high-value credentials in one execution context.

Attack Path

  1. An operator configures all environment variables required by the skill metadata.
  2. The operator invokes a workflow that legitimately needs access to only one cloud provider.
  3. The skill execution environment nevertheless contains credentials for the other providers.
  4. A compromised dependency, unsafe generated command, malicious plugin, or other process running in that context reads the unrelated environment variables.
  5. The exposed cre ...[truncated 712 chars]
Remediation
View remediation

Remediation Suggestions

  • Split provider-specific operations into separate skills or declare credentials conditionally according to the selected provider and task.
  • Do not load credentials for cloud providers that are unrelated to the current operation.
  • Prefer short-lived, workload-bound credentials obtained through AWS IAM roles, Azure managed identities, GCP service account impersonation, or equivalent federation mechanisms.
  • Avoid long-lived access keys and client secrets wherever identity federation is available.
  • Assign narrowly scoped roles that permit only the resources and actions required by the current workflow.
  • Launch subprocesses with an explicit environment allowlist rather than inheriting the full parent environment.
  • Prevent credentials from being included in generated files, logs, prompts, command histories, or diagnostic output.
  • Rotate any credentials suspected of exposure and monitor cloud audit logs for anomalous authentication or API activity.
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)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
"files": ["SKILL.md"]

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill name explicitly advertises SFTP transfers and Google Drive synchronization, yet the manifest description and the rest of the file focus on Terraform, Ansible, cloud CLIs, and infrastructure deployment workflows across AWS, Azure, and GCP. No capability, setup step, environment variable, or example output describes SFTP or Google Drive behavior, creating a clear semantic mismatch between what the skill claims to do and what it actually documents as its behavior.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill explicitly instructs users to export long-lived cloud credentials, webhook URLs, and tokens in shell environment variables without any prominent secret-handling guidance. In a skill that orchestrates cloud and deployment workflows, this increases the risk of credential leakage through shell history, process inspection, logs, screenshots, or accidental reuse in generated artifacts, which could lead to unauthorized access across AWS, Azure, GCP, GitHub, Slack, or Vault.

Content

No source excerpt is available for this finding.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

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

md
brew install terraform ansible awscli azure-cli google-cloud-sdk docker

   # Linux (Debian/Ubuntu)
   sudo apt-get install -y terraform ansible awscli azure-cli docker.io

   # Windows (Chocolatey)
   choco install terraform ansible awscli azure-cli docker-desktop

Static analysis

Detected: suspicious.exposed_secret_literal

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
SKILL.md:382