Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as organization administrator
-
DeliveryCreate routing rule with backtracking regex
-
ExploitTrigger case save evaluating _match_condition()
-
ExecutionRegex catastrophically backtracks, pins worker
-
ImpactShared worker pool exhausted, cross-tenant DoS
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V2 - Validation and Business Logic Regex complexity limits
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated organization administrator account (PR:H) with the ability to create case routing rules; the malicious payload is a regex pattern in a routing rule condition that is evaluated by _match_condition() in cases/routing.py during case saves. Exploitation is limited by this administrative privilege requirement and by the routing-rules feature being in use, but it needs no user interaction and works against default configurations once a routing rule can be created. The key aggravating condition is architectural: worker processes are shared across all tenants, so the impact of a single tenant admin extends to unrelated tenants. |
| Impact | This is a moderate-severity availability issue, not a top-tier emergency. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:H/UI:N, VA:H, all confidentiality and integrity metrics N) correctly frames it: network-reachable and low-complexity, but gated behind PR:H - the attacker must already be an authenticated organization administrator. The score of 6.9 is driven almost entirely by the availability impact amplified by the multi-tenant blast radius (workers are shared across all tenants). No EPSS score, KEV listing, or explicit proof-of-concept was supplied in the input, so there is no public exploit identified at time of analysis and no evidence of active exploitation. The practical risk is therefore an insider or compromised-admin-account scenario rather than mass opportunistic exploitation: the privilege barrier sharply limits who can trigger it, but the cross-tenant impact means one malicious or compromised tenant admin can degrade service for unrelated tenants, which is the genuinely concerning dimension. Note a data discrepancy to verify: the product is identified as micropyramid:bottlecrm, yet all references point to the Django-CRM/Django-CRM GitHub repository - confirm with the vendor which product/codebase is actually affected. |
| Exploit ScenarioDerived | An authenticated organization administrator (or an attacker who has compromised such an account) logs into the CRM and creates a case routing rule whose condition uses a crafted regular expression designed for catastrophic backtracking. When any case save subsequently evaluates that rule via _match_condition(), the regex engine consumes a worker indefinitely; repeating this exhausts the worker pool. Because workers are shared across all tenants, the denial of service spreads beyond the attacker's own organization. No public exploit code was provided in the input. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 14, 2026
Case routing rule conditions in BottleCRM 0.43 through 1.14.5 accept unbounded regular expressions that are evaluated by _match_condition() every time a case is saved, so an authenticated organization administrator can insert a catastrophically backtracking pattern and pin or exhaust Django web workers, producing a denial of service. Because those worker processes are shared across all tenants on a deployment, the impact of one organization's admin reaches unrelated customers, which is why the assessed CVSS 3.1 vector marks scope as changed (S:C) with high availability impact and no confidentiality or integrity loss. Exploitation requires a high-privilege authenticated account (PR:H, organization administrator able to create routing rules) and the routing-rules feature being in active use, but needs no user interaction; no public exploit code and no confirmed active exploitation were identified at time of analysis, and the 6.9 base score places this as a moderate, availability-only risk.
RemediationAI
No vendor-released patch identified at time of analysis; the only upstream reference is the tracking issue https://github.com/Django-CRM/Django-CRM/issues/830, which is not a merged PR, commit, or tagged release, so no exact fixed version can be cited. Until a patched release is published, the most effective control is to stop untrusted regexes from reaching the backtracking engine: replace the condition matcher with a non-backtracking engine (for example the Python regex module's timeout, or RE2/google-re2), or run the match in a subprocess/thread with a hard timeout so a pathological pattern is abandoned rather than pinning the worker - the trade-off is code changes that must be maintained against upstream. Administrative mitigations with fewer side effects include temporarily disabling the case routing rules feature if it is not business-critical, restricting rule-creation rights to a small, trusted set of administrators (this directly closes the PR:H entry point but not the underlying code flaw), and enforcing a max length and character allowlist on the condition pattern while rejecting nested quantifiers such as (a+)+ or (\w*)* - allowlists are imperfect and can block legitimate rules. Operational controls that reduce blast radius include isolating tenants into separate worker pools or processes, shortening worker timeouts and enabling aggressive worker recycling under a process manager so hung requests are killed, and alerting on sustained 100% worker CPU with zero request completions, since the shared-pool design turns one tenant's malicious rule into an outage for all tenants.
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
The root cause is CWE-1333 (Inefficient Regular Expression Complexity), a ReDoS class in which a user-supplied pattern is compiled and matched by Python's backtracking regex engine without bounds on complexity or execution time. In BottleCRM the attacker-controlled input is the condition field of a case routing rule, and the vulnerable match happens in _match_condition() inside backend/cases/routing.py (lines 107-114 in the v1.14.5 tree referenced by the advisory), which runs when cases are saved - meaning each save re-executes the malicious pattern and holds the worker for the duration of the backtracking blowup. The CPE record cpe:2.3:a:micropyramid:bottlecrm:*:*:*:*:*:*:*:* identifies Micropyramid BottleCRM as the affected product, and the reported version range 0.43 through 1.14.5 spans the open-source Django-based project (Django-CRM/Django-CRM) tracked by GitHub issue 830. The architectural amplifier noted in the code/advisory references is that the CRM commonly runs under a fixed pool of web workers shared by all tenants, so a single tenant administrator monopolizing those workers degrades or denies service for tenants who never created a rule. The assessed vector (AV:N/AC:L/PR:H/UI:N/S:C/C:N/I:N/A:H) is consistent with this: remote, low-complexity exploitation from an authenticated administrative session, no user interaction, availability-only impact that crosses a security scope boundary through the shared worker pool.
Know when Bottlecrm 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:H/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Network-reachable and low-complexity but requires org-admin privileges (PR:H); scope is changed (S:C) because shared workers impact tenants beyond the attacker's authorization; availability-only impact (A:H).
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
BottleCRM 0.43 through 1.14.5 contains a regular expression denial of service vulnerability that allows authenticated organization administrators to block web workers via unbounded routing rule regex patterns. Attackers can create a routing rule with a catastrophically backtracking pattern evaluated by _match_condition() during case saves, exhausting workers shared across all tenants.
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
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Uncontrolled memory allocation in BottleCRM 0.45 through 1.14.5 lets an authenticated user who also holds the applicatio
Server-side template injection in BottleCRM (Django-CRM) through 1.14.5 allows an authenticated member of an organizatio
HTML injection in BottleCRM 0.30 through 1.14.5 lets an authenticated organization member embed arbitrary markup and CSS
EUVD-2026-101222
GHSA-r225-9m2h-4x6v
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB