Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as user with mass-import permission
-
ExploitSend oversized CSVs concurrently to import endpoints
-
Execution_read_upload() buffers full files before 5 MB check
-
ImpactExhaust worker memory and trigger OOM termination
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource allocation 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 | Exploitation requires an authenticated account that additionally holds the application's 'mass-import' permission; this is the key limiting factor and rules out anonymous or ordinary low-privilege users. The attacker must send oversized CSV files (larger than the intended 5 MB limit) to the specific /api/contacts/import/ and /api/cases/import/ endpoints, and must send them concurrently to outpace memory reclamation and actually exhaust worker memory. No special non-default product configuration is needed beyond having the import feature available and the privileged permission granted; impact is limited to availability (worker OOM) with no data exposure or modification. |
| Impact | This is a medium-severity availability-only issue, not an urgent priority. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) confirms network reachability with low attack complexity and no user interaction, but exploitation requires PR:L - an authenticated account that also holds the application-specific 'mass-import' permission - and the only impact is VA:L (limited availability loss via worker out-of-memory). There is no confidentiality or integrity impact (VC:N/VI:N). No EPSS score was provided, the CVE is not on CISA KEV, and no public exploit code is referenced, so there is no public exploit identified at time of analysis; all signals point to a low-likelihood, limited-blast-radius denial-of-service rather than a widely weaponized flaw. The signals are internally consistent (CWE-770 uncontrolled resource allocation matches the description and the availability-only vector), so no conflict needs flagging - the main caveat is product-identity ambiguity noted below rather than risk-signal disagreement. Realistic risk is confined to environments that grant import permissions to semi-trusted users; a malicious insider or a compromised low-privilege account could degrade service, but external unauthenticated mass exploitation is not possible. |
| Exploit ScenarioDerived | An authenticated user (or attacker using stolen credentials) who holds the mass-import permission repeatedly uploads CSV files larger than the 5 MB limit to /api/contacts/import/ and /api/cases/import/, sending many concurrently. Because _read_upload() reads the entire file into memory before the size check is enforced, the worker processes allocate memory faster than the limit can reject them, exhausting RAM and triggering out-of-memory termination that disrupts service for other users. No public proof-of-concept is referenced, so exploitation would require an attacker to craft the oversized-upload flooding themselves. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 14, 2026
Uncontrolled memory allocation in BottleCRM 0.45 through 1.14.5 lets an authenticated user who also holds the application's 'mass-import' permission send oversized CSV files to the /api/contacts/import/ and /api/cases/import/ endpoints, causing worker processes to exhaust memory and terminate. The root cause is that the upload handler reads the entire file into memory before enforcing the intended 5 MB limit, so a single oversized file or, more effectively, several concurrent oversized files can outpace memory reclamation and trigger out-of-memory kills. Impact is availability-only (worker crashes, degraded or interrupted import and request handling) with no data exposure or modification; exploitation is gated by the privileged mass-import permission, no public exploit code has been identified, and no vendor-released patch was identified at time of analysis. This is a medium-severity denial-of-service issue rather than an urgent priority, and it is not confirmed actively exploited (no CISA KEV listing).
RemediationAI
No vendor-released patch was identified at time of analysis; the only upstream references are the vulnerability report (https://github.com/Django-CRM/Django-CRM/issues/828), the vulnerable source locations, and the VulnCheck advisory (https://www.vulncheck.com/advisories/bottlecrm-0.45-through-1.14.5-memory-exhaustion-via-contact-and-case-csv-import), so track issue #828 for the fix commit and upgrade as soon as a patched release is tagged. Until then, enforce a request-body size cap at the reverse proxy so oversized CSV bodies are rejected before reaching Django - nginx client_max_body_size 5m (or the equivalent body-size limit in Apache/Traefik/cloud load balancers); the trade-off is that legitimate imports near the limit may be truncated or rejected with a 413. Apply per-account/per-IP rate limiting on /api/contacts/import/ and /api/cases/import/ (for example nginx limit_req or an API gateway throttle) to defeat the concurrency required to outpace memory reclamation, at the cost of slowing bulk onboarding workflows. Constrain blast radius by lowering worker concurrency and setting explicit memory limits per worker (Gunicorn --max-requests with worker recycling, container memory limits plus OOM-score tuning) so an OOM event kills one worker rather than the whole service, accepting reduced throughput. Tighten the mass-import permission so only trusted administrators hold it, and audit existing grants, since the permission is a prerequisite for exploitation. If the import feature is not needed, disable or block the two endpoints at the proxy; the trade-off is loss of bulk contact and case loading functionality.
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
BottleCRM (the Django-CRM project, published under the micropyramid namespace as cpe:2.3:a:micropyramid:bottlecrm) is a Django-based open-source CRM. The flaw is classified as CWE-770, Allocation of Resources Without Limits or Throttling. The vulnerable code path is the _read_upload() helper referenced in both backend/contacts/import_views.py and backend/cases/import_views.py at line 44 of the v1.14.5 tree: the multipart upload is fully consumed into memory before the 5 MB size constraint is evaluated, so the check is a validation step rather than a memory guard. Because each Django/Gunicorn/uWSGI worker handles requests independently, memory pressure is per-worker: a single oversized upload spikes one worker, while parallel requests across workers can collectively exhaust the container or host and cause the OOM killer to terminate workers. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N) and the independent CVSS 3.1 assessment (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L) agree: the attack is network-reachable and low complexity but requires low privileges, and the sole consequence is limited availability loss. The PR:L component reflects the requirement for an authenticated account that has additionally been granted the mass-import permission, which rules out anonymous or ordinary low-privilege users and is the key limiting factor; no non-default configuration is needed beyond the import feature being reachable and the permission being granted.
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:L/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
Network-reachable import endpoints give AV:N/AC:L, but the mass-import permission requires PR:L, and the only effect is partial, recoverable availability loss, so A:L with C:N/I:N.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
BottleCRM 0.45 through 1.14.5 contains an uncontrolled memory allocation vulnerability in _read_upload() that reads entire CSV uploads before enforcing the 5 MB limit. Authenticated users with mass-import permission can send oversized CSV files concurrently to /api/contacts/import/ and /api/cases/import/ endpoints to exhaust worker memory and trigger out-of-memory termination.
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.
Case routing rule conditions in BottleCRM 0.43 through 1.14.5 accept unbounded regular expressions that are evaluated by
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-101223
GHSA-8vqj-3q69-wq28
NVD
CVE.org
EPSS
Exploit-DB