Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to CRM with any valid low-privilege account
-
DeliveryIdentify victim tenant's company_id via enumeration or UI observation
-
ExploitCraft Excel spreadsheet with company_id column set to victim tenant's ID
-
ExecutionUpload spreadsheet to POST /customer/import/excel/save
-
PersistServer maps company_id from file with no ownership check
-
ImpactRecords injected into victim tenant's data namespace
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
|
| Exploitation Conditions | Exploitation requires a valid authenticated session in any user role within a Prospero Flow CRM instance before version 5.14.0 - the CVE description confirms 'any role or company' is sufficient, meaning the lowest-privileged non-admin account qualifies (the provided CVSS 4.0 vector's PR:N is a scoring error contradicting this requirement). The deployment must be multi-tenant; single-tenant installations have no second company namespace to target and are not at risk from cross-tenant injection. The attacker must supply a valid company_id integer for the victim tenant in the spreadsheet column, which may be sequentially guessable or observable through normal application interaction. The Excel import feature must be accessible to the attacker's assigned role - if the application restricts import endpoints to administrator roles only, the exploitable population narrows to those privileged accounts. No special network position, no man-in-the-middle capability, and no interaction from any user in the victim company are required. |
| Impact | The provided CVSS 4.0 vector lists PR:N (no privileges required), which directly conflicts with the CVE description, which explicitly states exploitation requires 'a remote, authenticated user of any role or company' - this is a confirmed CVSS scoring error that overstates the unauthenticated attack surface and must not be used for risk-tier decisions without correction. Correcting to PR:L, the exploitable population is limited to users holding valid credentials in a multi-tenant deployment. The integrity impact is real but bounded: attackers can inject spurious records into victim tenants but cannot read or exfiltrate victim tenant data (VC:N). No EPSS data was supplied. No CISA KEV listing and no public proof-of-concept code have been identified, indicating no known active or widespread exploitation at time of analysis. The primary real-world risk is business-logic disruption - contaminating a competitor's or customer's CRM data, polluting audit trails in regulated industries, or enabling denial-of-accuracy attacks on sales pipelines - rather than direct data exfiltration. Priority is moderate for multi-tenant SaaS deployments; minimal for single-tenant installations where no second tenant namespace exists to target. |
| Exploit ScenarioDerived | An authenticated user at Company A constructs an Excel spreadsheet in which the company_id column is populated with Company B's tenant identifier - obtainable by observing the application UI, enumerating integer IDs, or through prior legitimate access - and uploads it to the CRM's customer import endpoint. The server maps company_id directly from the file and creates the specified customer, lead, or product records within Company B's data namespace with no ownership check, silently polluting their CRM data. No elevated privileges within the application, no victim-side interaction, and no special tooling beyond a spreadsheet editor and an HTTP client are required. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 15, 2026
Cross-tenant record injection in Roskus Prospero Flow CRM before 5.14.0 allows any authenticated user to silently insert customer, lead, and product records into a competing company's tenant by manipulating the company_id field in an uploaded Excel spreadsheet. The three affected import handlers (CustomerImport, LeadImport, ProductImport) map company_id directly from the user-controlled file without verifying it matches the authenticated session's own company, collapsing the multi-tenant data isolation boundary. No public exploit has been identified at time of analysis; vendor-released patch v5.14.0 is available and confirmed.
RemediationAI
Upgrade to Prospero Flow CRM version 5.14.0 or later, which resolves the vulnerability by replacing $row['company_id'] with Auth::user()->company_id in all three import handlers (patch commit bdd6c9770a7435a45f0411154671b8a3e94dcdaa, available at https://github.com/Roskus/prospero-flow-crm/commit/bdd6c9770a7435a45f0411154671b8a3e94dcdaa; tagged release at https://github.com/Roskus/prospero-flow-crm/releases/tag/v5.14.0). If immediate upgrade is not feasible, restrict access to the Excel import endpoints (POST /customer/import/excel/save and equivalent lead and product paths) to a minimal set of trusted administrative roles via Laravel middleware or web server ACLs - note this disables bulk import functionality entirely for all affected role tiers, which may impact daily operations. A lower-disruption compensating control is to add an application-level validation rule asserting that every company_id value in each spreadsheet row equals Auth::user()->company_id before any record is created; this blocks cross-tenant injection while preserving import usability, with no side effects for compliant uploads but requiring a custom code patch if full upgrade is deferred.
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
Prospero Flow CRM is a PHP/Laravel-based multi-tenant CRM application (CPE: cpe:2.3:a:roskus:prospero_flow_crm:*:*:*:*:*:*:*:*). The root cause is CWE-639 (Authorization Bypass Through User-Controlled Key): the model constructors in CustomerImport.php, LeadImport.php, and ProductImport.php previously read the company_id field directly from the uploaded spreadsheet row ($row['company_id']) and persisted it to the database without any server-side ownership assertion. The fix replaces that assignment with Auth::user()->company_id - the server-authoritative value bound to the authenticated Laravel session - in all three handlers. The attack surface is the POST /customer/import/excel/save endpoint (and equivalent lead and product import paths) that process multipart Excel uploads via the Laravel Excel (Maatwebsite) package using the ToModel, WithHeadingRow, and WithValidation interfaces. Because the validation pipeline never compared the file's company_id to the session's company_id, the flaw survived any schema-level validation in place.
Know when Prospero Flow Crm 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:L/VA:N/SC:L/SI:L/SA:N
Authenticated attacker (PR:L) crosses tenant boundary (S:C) achieving low integrity-only impact; no confidentiality or availability effect applies.
Primary rating from Vendor (Secur0).
CVSS VectorVendor: Secur0
DescriptionCVE.org
Authorization Bypass Through User-Controlled Key (CWE-639) in the Excel import handlers (CustomerImport, LeadImport, ProductImport) in Roskus Prospero Flow CRM before 5.14.0 allows a remote, authenticated user of any role or company to create customer, lead, and product records inside another company's tenant via a spreadsheet whose company_id column points to the victim tenant, uploaded to POST /customer/import/excel/save, which maps company_id directly from the file and performs no check that it matches the authenticated user's company.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
More in Prospero Flow Crm
View allCross-tenant authorization bypass (IDOR/BOLA) in Roskus Prospero Flow CRM 4.0.0 through 5.3.1 lets an authenticated user
Broken function-level authorization in Prospero Flow CRM before 5.5.3 lets any authenticated low-privileged user (e.g. t
Cross-tenant transaction data exposure in Roskus Prospero Flow CRM 5.0.0-5.3.5 allows any authenticated user on a shared
Privilege escalation in Roskus Prospero Flow CRM before version 5.2.1 permits any authenticated user - regardless of ass
Cross-tenant IDOR in Roskus Prospero Flow CRM before 5.4.7 allows any authenticated user to read sensitive product recor
Cross-tenant IDOR in Roskus Prospero Flow CRM's ticket management component allows any authenticated user - regardless o
Cross-tenant payroll data exposure in Roskus Prospero Flow CRM before 5.15.10 enables authenticated users holding standa
Cross-tenant IDOR in Prospero Flow CRM before 5.4.8 allows any authenticated user to blindly overwrite contact records b
Cross-tenant IDOR in Roskus Prospero Flow CRM before 5.5.3 allows any authenticated user to read, modify, and delete ord
Unauthorized notification deletion in Prospero Flow CRM allows any authenticated user to delete other users' notificatio
Tenant data boundary failure in Roskus Prospero Flow CRM 4.9.1-5.14.0 allows authenticated users holding transaction and
Order confirmation in Roskus Prospero Flow CRM before 5.15.11 can be triggered by an unauthenticated attacker on behalf
EUVD-2026-44622
GHSA-rpp3-j482-5g39
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB