Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach manual webhook endpoint unauthenticated
-
DeliverySubmit repository name '%' or empty with branch main
-
ExploitUnescaped LIKE matches all apps pre-signature-check
-
ExecutionServer returns application names across all teams
-
ImpactHarvest cross-team app inventory for targeting
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Data exposure prevention
MITRE ATT&CK
2 techniques across 2 tactics: Collection, Discovery The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | No special conditions beyond the product exposing its manual webhook endpoints, which exist by default in affected Coolify versions (before 4.1.1): remote unauthenticated attackers reach the GitHub/GitLab/Bitbucket/Gitea manual webhook routes and the enumeration logic runs before any signature or secret check. The attacker supplies a repository full_name of '%' or empty plus a branch value; the unescaped LIKE wildcard then matches applications regardless of team ownership. What LIMITS impact: exploitation only returns application NAMES (not source, secrets, or config), it requires that applications actually exist whose git_branch equals the submitted branch (hence attackers use common defaults like 'main'/'master'), and the instance must be running a vulnerable version (< 4.1.1) with webhook endpoints network-reachable. There is no authentication, user interaction, or non-default configuration requirement. |
| Impact | This is a moderate-severity information disclosure flaw (vendor CVSS 4.0 base 6.9) whose signals are internally consistent rather than conflicting. The 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) matches the description precisely: the enumeration happens on manual webhook endpoints BEFORE signature verification, so it is genuinely network-reachable and unauthenticated (PR:N confirmed). Impact is correctly capped at VC:L - only application names leak, with no integrity or availability effect (VI:N/VA:N) and no cross-system scope (SC:N/SI:N/SA:N). No EPSS score, no CISA KEV listing, and no explicit POC flag are present in the input, so exploitation probability cannot be quantified from the data. The vuln.today priority is 'this_month' rather than act_now/emergency, which aligns with a low-impact disclosure that leaks metadata (names across teams) but not credentials, source, or secrets. Net: this is a real, easily-triggered unauthenticated bug worth patching on a normal cycle, not a high-CVSS-but-illusory issue, but also not an emergency - the confidentiality blast radius is limited to application naming/structure intelligence that could feed later targeting. No key signals conflict; the main gaps are the absence of EPSS/KEV/POC telemetry (absence, not contradiction). |
| Exploit ScenarioDerived | An unauthenticated attacker sends an HTTP POST to a Coolify instance's manual webhook endpoint (GitHub, GitLab, Bitbucket or Gitea) supplying a repository name of '%' or empty together with a common branch such as 'main'. Because the lookup used an unescaped SQL LIKE wildcard and ran before signature verification, the server returns a payload listing the names of every application matching that branch across all teams. The attacker harvests cross-team application names as reconnaissance for further targeting. No public exploit is identified in the input, though the VulnCheck advisory and the fix commit describe the exact trigger. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 03, 2026
Unauthenticated application-name enumeration in Coolify (versions before 4.1.1) lets remote attackers list application names belonging to every team on an instance through the manual GitHub, GitLab, Bitbucket and Gitea webhook endpoints. Because the repository match runs before any webhook secret or signature check, submitting a full_name of '%' (or an empty value) together with a common branch such as 'main' turns the unescaped SQL LIKE wildcard into a match-all and returns the corresponding application names in the response payloads. Impact is limited to name disclosure - no source code, secrets or configuration are returned - and it requires that applications with a matching branch actually exist; the vendor CVSS 4.0 base score is 6.9, our independent assessment is 5.3 (CVSS 3.1), the fix is released in 4.1.1, and no public exploit or active exploitation has been reported.
RemediationAI
Vendor-released patch: upgrade Coolify to 4.1.1 or later, which ships the MatchesManualWebhookApplications trait that validates the repository full_name against a strict owner/repo pattern, abandons the SQL LIKE match for a canonicalized case-insensitive comparison, and returns a generic 'Invalid signature.' response so application names are no longer disclosed before signature verification; apply it via the release at https://github.com/coollabsio/coolify/releases/tag/v4.1.1 (changes in PR https://github.com/coollabsio/coolify/pull/10361, commits c1518ba1c0be36da42b6cef06df4b042f5733b01 and 809d9b21fa9609de2ce9b49bb838c079598da876). Until the upgrade can be scheduled, the exposure is bounded by reachability: the enumeration only works when the manual webhook routes (/webhooks/manual or equivalent) are network-reachable from the attacker, so restricting inbound access to those endpoints to the IP ranges of your actual Git provider, or placing the Coolify instance behind a VPN/private network, removes the attack path for external parties - at the cost of breaking legitimate webhook deliveries from providers you have not allow-listed. Note that these are exposure-limiting measures only; the underlying wildcard match remains until 4.1.1 is installed.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Coolify is a self-hosted Laravel/PHP deployment platform, and the flaw sits in its webhook controllers (app/Http/Controllers/Webhook/Github.php, Gitlab, Bitbucket, Gitea). The manual webhook path built an Eloquent query of the form Application::where('git_repository', 'like', "%$full_name%")->where('git_branch', $branch) using the attacker-supplied repository full_name without escaping the LIKE metacharacters '%' and '_', so a wildcard value matched every row regardless of team scoping, and the per-application secret/signature failure payloads were generated after that query, echoing the matched application name. Classified as CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor), the root cause is the combination of unescaped LIKE wildcards and returning application-identifying data in a pre-authentication error path. The upstream fix (PR #10361, commits c1518ba and 809d9b2) introduces the MatchesManualWebhookApplications trait: it validates full_name against a strict owner/repo regex, rejects empty input, canonicalizes repository paths (handling https URLs, git@ SSH form, .git suffix, query strings and trailing slashes), replaces the SQL LIKE with an in-memory case-insensitive hash_equals comparison, and collapses all unauthenticated failure responses to a generic 'Invalid signature.' payload so no application name is leaked before verification.
Know when Coolify gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
Unauthenticated network request processed before signature verification gives PR:N/AC:L; only application names leak so C:L with no integrity or availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Coolify before 4.1.1 contains an information disclosure vulnerability that allows unauthenticated attackers to enumerate application names across all teams via manual GitHub, GitLab, Bitbucket and Gitea webhooks. Attackers can send a repository name of % or empty with a common branch like main, exploiting unescaped LIKE wildcards to receive every matching application name before signature verification.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Cross-team authorization bypass in Coolify (open-source self-hosted PaaS) before 4.0.0-beta.474 allows an authenticated,
Coolify versions prior to v4.0.0-beta.420.7 are vulnerable to a remote code execution vulnerability in the project deplo
Coolify versions prior to v4.0.0-beta.420.6 are vulnerable to a remote code execution vulnerability in the application d
Command injection in Coolify up to and including v4.0.0-beta.434 lets any authenticated low-privileged 'member' execute
Remote code execution on the host OS is possible through Coolify's application deployment workflow prior to version 4.0.
Authenticated command injection in Coolify's PostgreSQL initialization-script filename handling allows users with applic
Coolify versions prior to 4.0.0-beta.451 pass user-supplied database names unsanitized into shell commands executed via
Authenticated Coolify users who hold application or service management permissions can execute arbitrary commands as roo
Authenticated command injection in Coolify before 4.0.0-beta.451 lets users with application or service management permi
Stored cross-site scripting in Coolify versions up to and including v4.0.0-beta.420.6 lets an authenticated low-privileg
Authenticated OS command injection in Coolify before 4.0.0-beta.471 lets any user holding destination management permiss
Authenticated remote code execution in Coolify (self-hosted PaaS) before 4.0.0-beta.470 lets a low-privileged authentica
EUVD-2026-116035
NVD
CVE.org
GitHub
Exploit-DB