Back to skill

Security audit

Cloudways MCP

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed Cloudways administration guide with powerful account access, but its risky operations are purpose-aligned and guarded by explicit confirmation and credential-handling rules.

Install only with a Cloudways token scoped to the minimum role needed, preferably READ for audits and monitoring. Treat FULL ACCESS tokens as production admin credentials, review every write confirmation carefully, and avoid workflows that paste raw Cloudways API responses into chats, logs, tickets, or automation stores.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
references/workflows-automation.md:32
Finding

Cloudways Credentials Exposed Through Command-Line Arguments

Content
View full analysis
Remediation
View remediation
"$HEADER_FILE" chmod 600 "$HEADER_FILE" curl --silent --show-error \ --header @"$HEADER_FILE" \ "https://api.cloudways.com/api/v2/server" ``` 3. For the legacy form body, use a protected temporary configuration or input file rather than an expanded `-d` argument. Avoid the legacy flow entirely for new deployments because the project already identifies it as deprecated. 4. Ensure temporary files are: - Created with `mktemp`, not predictable names. - Created under `umask 077`. - Explicitly restricted to mode `600`. - Removed through an `EXIT` trap on success and failure. 5. Do not embed credentials directly in copied commands. Prompt without echo, retrieve them from a secrets manager, or inject them through a controlled job-runner secret facility. 6. Disable or redact command and process telemetry for jobs that must handle credentials, and verify that CI/CD and automation platforms do not record expanded commands. 7. Continue using short-lived, integration-specific tokens with the smallest available role: - READ for monitoring and audits. - LIMITED for narrowly defined write workflows. - FULL ACCESS only when unavoidable. 8. Revoke and rotate any credential that may already have appeared in shell history, process telemetry, logs, screenshots, or shared command transcripts. 9. Update the installation example so it demonstrates the protected mechanism rather than placeholders that users are expected to replace inline. ]]>
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 (72)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
is the **official article**: `support.cloudways.com/en/articles/14654372`. See `references/installation.md`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
is the **official article**: `support.cloudways.com/en/articles/14654372`. See `references/installation.md`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
is the **official article**: `support.cloudways.com/en/articles/14654372`. See `references/installation.md`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
is the **official article**: `support.cloudways.com/en/articles/14654372`. See `references/installation.md`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
is the **official article**: `support.cloudways.com/en/articles/14654372`. See `references/installation.md`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
is the **official article**: `support.cloudways.com/en/articles/14654372`. See `references/installation.md`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
is the **official article**: `support.cloudways.com/en/articles/14654372`. See `references/installation.md`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
| Cache clear, SSL, backup, restart, IP whitelist | `references/workflows-maintenance.md` |

Credential Access

High
Category
Privilege Escalation
Confidence
86% confidence
Finding

The skill acknowledges that multiple Cloudways tools can return master, database, and SSH credentials in normal responses, and it instructs the agent to use those tools selectively. Even though it warns not to print or sweep secrets, the workflow still permits retrieving sensitive credentials into the conversation context, where they may persist in logs, transcripts, or downstream summaries.

Content

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

md
5. **`server_delete`, `app_delete`, and `app_cname_delete` = immediate destruction in production.** Requires double confirmation (W!): of both the operation and the specific domain/application/server.

6. **Credentials.** Each account authenticates with its own **Access Token** (case-sensitive `X-Access-Token` header; roles + legacy-key migration in the Authentication section below). Don't print tokens in responses. Don't mix credentials between accounts. If the user asks to see them, refer them to platform.cloudways.com → API section.

7. **Don't sweep the credential-returning tools.** `server_get`, `app_get` and `app_credentials` return master, database and SSH credentials inside their ordinary payloads. Running one of them over **every** server or **every** app pulls the account's secrets into the conversation, where they stay for the rest of it — and telling yourself to keep them out of the *report* comes too late to help. Use `server_list` / `app_list` for inventory; call the other three for a specific field nothing else returns, or for a task the user actually asked for.
   **But do not read "inventory" as "credential-free."** The live server describes `app_list` as returning “ID, label, application type, version, domain, **and credentials**”, and both list tools are built from the same `GET /server` payload that makes `server_get` a credential tool. What makes them the right choice is that they answer the inventory question in **one call per account or per server** instead of one per app — not that their responses are known to be clean. Take the IDs and the fields you came for; never paste a raw list response into a report, a ticket or an automation. And when a job requires that no credential enter the transcript **at all**, build the roster outside the conversation — the Cloudways Platform UI, or a direct `GET /server` piped through a field filter on your side — and bring back only ids and labels.

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/installation.md (reported line 10)May include surrounding context.

md
**Prerequisites**

- A valid Cloudways account with API access.
- A Cloudways **Access Token** (see Step 1).
- **Node.js v24.14.1+** (only for the Claude Desktop path, which uses the `mcp-remote` bridge). Claude Code connects over native HTTP and does not need it.

---

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/installation.md (reported line 15)May include surrounding context.

md
**Prerequisites**

- A valid Cloudways account with API access.
- A Cloudways **Access Token** (see Step 1).
- **Node.js v24.14.1+** (only for the Claude Desktop path, which uses the `mcp-remote` bridge). Claude Code connects over native HTTP and does not need it.

---

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/installation.md (reported line 19)May include surrounding context.

md
**Prerequisites**

- A valid Cloudways account with API access.
- A Cloudways **Access Token** (see Step 1).
- **Node.js v24.14.1+** (only for the Claude Desktop path, which uses the `mcp-remote` bridge). Claude Code connects over native HTTP and does not need it.

---

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/installation.md (reported line 27)May include surrounding context.

md
**Prerequisites**

- A valid Cloudways account with API access.
- A Cloudways **Access Token** (see Step 1).
- **Node.js v24.14.1+** (only for the Claude Desktop path, which uses the `mcp-remote` bridge). Claude Code connects over native HTTP and does not need it.

---

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/installation.md (reported line 259)May include surrounding context.

md
**Prerequisites**

- A valid Cloudways account with API access.
- A Cloudways **Access Token** (see Step 1).
- **Node.js v24.14.1+** (only for the Claude Desktop path, which uses the `mcp-remote` bridge). Claude Code connects over native HTTP and does not need it.

---

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/installation.md (reported line 293)May include surrounding context.

md
**Prerequisites**

- A valid Cloudways account with API access.
- A Cloudways **Access Token** (see Step 1).
- **Node.js v24.14.1+** (only for the Claude Desktop path, which uses the `mcp-remote` bridge). Claude Code connects over native HTTP and does not need it.

---

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/installation.md (reported line 353)May include surrounding context.

md
**Prerequisites**

- A valid Cloudways account with API access.
- A Cloudways **Access Token** (see Step 1).
- **Node.js v24.14.1+** (only for the Claude Desktop path, which uses the `mcp-remote` bridge). Claude Code connects over native HTTP and does not need it.

---

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/installation.md (reported line 371)May include surrounding context.

md
**Prerequisites**

- A valid Cloudways account with API access.
- A Cloudways **Access Token** (see Step 1).
- **Node.js v24.14.1+** (only for the Claude Desktop path, which uses the `mcp-remote` bridge). Claude Code connects over native HTTP and does not need it.

---

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/installation.md (reported line 421)May include surrounding context.

md
**Prerequisites**

- A valid Cloudways account with API access.
- A Cloudways **Access Token** (see Step 1).
- **Node.js v24.14.1+** (only for the Claude Desktop path, which uses the `mcp-remote` bridge). Claude Code connects over native HTTP and does not need it.

---

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/installation.md (reported line 464)May include surrounding context.

md
**Prerequisites**

- A valid Cloudways account with API access.
- A Cloudways **Access Token** (see Step 1).
- **Node.js v24.14.1+** (only for the Claude Desktop path, which uses the `mcp-remote` bridge). Claude Code connects over native HTTP and does not need it.

---

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/installation.md (reported line 473)May include surrounding context.

md
**Prerequisites**

- A valid Cloudways account with API access.
- A Cloudways **Access Token** (see Step 1).
- **Node.js v24.14.1+** (only for the Claude Desktop path, which uses the `mcp-remote` bridge). Claude Code connects over native HTTP and does not need it.

---

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/workflows-automation.md (reported line 58)May include surrounding context.

md
**Prerequisites**

- A valid Cloudways account with API access.
- A Cloudways **Access Token** (see Step 1).
- **Node.js v24.14.1+** (only for the Claude Desktop path, which uses the `mcp-remote` bridge). Claude Code connects over native HTTP and does not need it.

---

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/workflows-onboarding.md (reported line 13)May include surrounding context.

md
**Prerequisites**

- A valid Cloudways account with API access.
- A Cloudways **Access Token** (see Step 1).
- **Node.js v24.14.1+** (only for the Claude Desktop path, which uses the `mcp-remote` bridge). Claude Code connects over native HTTP and does not need it.

---

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/installation.md (reported line 27)May include surrounding context.

md
> Treat the token like a password — never commit it or print it in responses. Prefer one token **per integration** (per MCP connection), each with the minimum role it needs, so tokens can be revoked individually.

> **Legacy API key — deprecated.** The old flow (API key + `X-CW-Email`/`X-CW-Api-Key` headers) still works but the API key **stops working on October 15, 2026**. If you have an existing connection using the old headers, regenerate as an Access Token and update the connection before then. Until migrated, a legacy connection retains **unrestricted full-account access** — the RBAC roles apply only to Access Tokens. And note there is still **no per-tool permission control at the MCP layer** beyond the token's role: a FULL ACCESS token can call every tool.

**Required headers** (every request; header names are case-sensitive):

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/installation.md (reported line 27)May include surrounding context.

md
> Treat the token like a password — never commit it or print it in responses. Prefer one token **per integration** (per MCP connection), each with the minimum role it needs, so tokens can be revoked individually.

> **Legacy API key — deprecated.** The old flow (API key + `X-CW-Email`/`X-CW-Api-Key` headers) still works but the API key **stops working on October 15, 2026**. If you have an existing connection using the old headers, regenerate as an Access Token and update the connection before then. Until migrated, a legacy connection retains **unrestricted full-account access** — the RBAC roles apply only to Access Tokens. And note there is still **no per-tool permission control at the MCP layer** beyond the token's role: a FULL ACCESS token can call every tool.

**Required headers** (every request; header names are case-sensitive):

MCP Config Access

High
Category
Agent Snooping
Confidence
90% confidence
Finding

Skill accesses MCP server configuration files (mcp.json). MCP configs contain server URLs, authentication tokens, and tool definitions — reading them allows the skill to discover and potentially abuse other tool integrations.

Content

Scanner excerpt · references/installation.md (reported line 42)May include surrounding context.

md
### Env var (zero-config — devices and cloud sessions)

The repo commits a `.mcp.json` whose `X-Access-Token` header reads
`${CLOUDWAYS_ACCESS_TOKEN:-}` — a placeholder, never a real token. Set that variable — in
your shell profile on a device, or in the claude.ai cloud environment's environment
variables for web/phone sessions — and the connection (named `cloudways-env`) authenticates

Static analysis

No suspicious patterns detected.