Back to skill

Security audit

Coolify Deploy

Security checks for vulnerabilities and agentic risk

Overview

This Coolify deployment skill is useful for its stated purpose, but it includes unsafe infrastructure and credential examples that need review before installation.

Review and edit the examples before installing or using this skill. Require HTTPS and a user-approved Coolify host, avoid putting tokens directly in shell commands, and require explicit confirmation before force redeploys, env-var changes, direct Docker replacement, or app deletion.

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

Error
Location
references/coolify-api.md:14
Finding
Coolify bearer token transmitted over unencrypted HTTP to a hardcoded public endpoint<![CDATA[ ## Vulnerability Details **File Location**: `references/coolify-api.md`, lines 14, 69–70, 75–76, and 81–82 **Vulnerability Type**: Cleartext transmission of privileged credentials and use of an unverified hardcoded endpoint **Risk Level**: High ### Vulnerable Code ```bash coolify context add default http://217.77.2.59:8000 '<token>' --default ``` ```bash curl -H "Authorization: Bearer <token>" http://<host>:8000/api/v1/applications ``` ```bash curl -X POST -H "Authorization: Bearer <token>" \ "http://217.77.2.59:8000/api/v1/deploy?uuid=<app-uuid>" ``` ```bash curl -X DELETE -H "Authorization: Bearer <token>" \ "http://217.77.2.59:8000/api/v1/applications/<app-uuid>" ``` ### Technical Analysis The reference documentation instructs an agent or user to submit a Coolify bearer token over plain HTTP. HTTP provides neither transport encryption nor server authentication. Consequently, the `Authorization` header and other sensitive request data can be observed or modified by an on-path attacker. The context configuration additionally directs credentials to the fixed public IP address `217.77.2.59` without establishing that the endpoint belongs to or has been approved by the user. An operator controlling that endpoint could directly receive the supplied token. Because bearer tokens grant access based solely on possession, an intercepted token can generally be replayed without needing the user's password. Passing the token directly as a command-line argument may also expose it through shell history, process inspection, terminal logs, or automation logs. ### Attack Path 1. A user or agent follows the documented context setup or API examples. 2. A real Coolify bearer token is substituted for the `<token>` placeholder. 3. The token is sent in cleartext to the hardcoded public IP or another HTTP endpoint. 4. A network-positioned attacker, compromised gateway, malicious endpoint operator, or other traffic observer captures the bearer token. 5. The att ...[truncated 1012 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove the hardcoded public IP address from all examples and require the user to provide an explicitly approved Coolify endpoint. 2. Require HTTPS for all Coolify CLI and API connections. Examples should use a form such as `https://coolify.example.com` and must not suggest disabling certificate verification. 3. Validate the destination before submitting credentials: - Require explicit user confirmation for newly supplied hosts. - Reject plain HTTP endpoints. - Reject unexpected redirects or hostname changes. - Verify the server certificate and hostname. 4. Do not place tokens directly in command-line arguments. Load credentials from a protected secret store, restricted configuration file, or environment variable supported by the tool. 5. Ensure credential files are readable only by the owning account and are excluded from source control, logs, and generated artifacts. 6. Issue least-privilege, short-lived tokens limited to the required projects and operations. 7. Rotate any real token that may already have been used with these HTTP examples and review Coolify audit logs for unauthorized API activity. 8. Replace the affected examples with secure patterns, for example: ```bash export COOLIFY_TOKEN="$(secure-secret-command)" export COOLIFY_URL="https://coolify.example.com" curl --fail-with-body \ -H "Authorization: Bearer ${COOLIFY_TOKEN}" \ "${COOLIFY_URL}/api/v1/applications" ``` The actual secret-loading mechanism should avoid recording the token in shell history or exposing it in project files. ]]>
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (4)

Missing User Warnings

Medium
Confidence
91% confidence
Finding
This skill gives concrete commands to create applications, modify environment variables, and force redeploy live services, but it does not require explicit user confirmation or warn that these actions can change production infrastructure. In an agent setting, that omission increases the chance of unintended deployment changes, outages, or misconfiguration when the agent acts on ambiguous user requests.

Missing User Warnings

Medium
Confidence
89% confidence
Finding
The skill documents `coolify app delete <app-uuid> --force` without any warning, confirmation step, or guidance to verify the target first. In a deployment automation skill, this increases the chance of accidental destructive actions against production applications, especially because `--force` bypasses safeguards and the surrounding content encourages direct operational use.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The API example shows a direct `DELETE` request for application removal with no warning about permanence or pre-deletion validation. Because this skill is meant to guide real infrastructure actions, omission of confirmation guidance materially raises the risk of accidental deletion of live services or data-bearing apps.

Rp1

Medium
Category
MCP Rug Pull
Confidence
75% confidence
Finding
Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by a malicious image.

Static analysis

No suspicious patterns detected.