Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with low-privilege payroll account
-
DeliverySend unscoped payroll listing HTTP request
-
ExploitReceive cross-tenant salary and banking data
-
ExecutionIdentify foreign employee user_id from response
-
PersistSubmit payroll creation request with foreign employee ID
-
ImpactRecord inserted under another company's tenant
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 with at least the read payroll permission (for data disclosure) or the create payroll permission (for cross-tenant record injection). The application must be running in a multi-tenant configuration hosting more than one company; in a single-tenant deployment no cross-company data is present to leak, though over-permissioned internal users could still access all payroll data. No non-default configuration, special feature flag, or elevated administrator role beyond standard payroll permissions is necessary. Exploitation is not possible for unauthenticated users or for authenticated users who have not been granted any payroll permission. The attack does not require any user interaction from a victim. |
| Impact | The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N) accurately reflects the attack profile: the endpoint is network-reachable, no special conditions or elevated privileges beyond a basic payroll permission are required, and the confidentiality and integrity impacts are high because salary figures and banking account details can be read and fraudulent payroll records can be injected across tenant boundaries. No EPSS score was provided in the available intelligence, and this CVE does not currently appear in the CISA KEV catalog, so active exploitation is unconfirmed. However, the absence of KEV listing should not reduce urgency - the exploitation path requires no special tooling, chaining, or prior knowledge beyond a valid low-privilege account, meaning even a mid-sized municipal IT team in malbork running Prospero Flow CRM for multiple client companies should treat this as urgent rather than routine. The primary limiting factor is that attackers must be authenticated with at least a payroll permission, which meaningfully reduces the exposed attack surface compared to unauthenticated flaws of equivalent complexity. The integrity impact is particularly notable: the ability to insert payroll records for foreign employees could cause financial processing errors in payroll runs that are difficult to audit after the fact. |
| Exploit ScenarioDerived | An authenticated CRM user at Company A, holding only the standard read payroll permission, sends an HTTP GET request to the payroll listing endpoint for a given year without specifying any employee filter. Because the underlying Eloquent query lacks a company_id constraint, the JSON response includes salary amounts and banking details for employees across all companies in the instance. A separate user with create payroll permission then POSTs a payroll creation request supplying an employee user_id belonging to Company B; because validation only checks global existence of the ID, the record is created successfully and attributed to the foreign employee. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 14, 2026
Cross-tenant payroll data exposure in Roskus Prospero Flow CRM before 5.15.10 enables authenticated users holding standard payroll permissions to read salary and banking details belonging to employees of entirely separate companies within the same multi-tenant instance, and to create payroll records attributed to those foreign employees. The flaw exists at the query layer: the payroll listing endpoint omits a company_id scope constraint, and payroll creation validates employee identifiers for global database existence rather than for membership in the caller's own company. No public exploit code or CISA KEV listing has been identified at time of analysis, but the low exploitation barrier makes this an urgent priority for any multi-tenant deployment.
RemediationAI
Upgrade Roskus Prospero Flow CRM to version 5.15.10, which resolves both failure sites by applying company_id scoping unconditionally in PayrollIndexController and constraining employee ID validation to the caller's tenant in PayrollRequest. The fix commit is at https://github.com/Roskus/prospero-flow-crm/commit/59644f910b7d1aec7d1ac962b0354b3ec209977e. If immediate upgrade is not feasible, restrict the payroll module permissions at the application level: revoke the read payroll and create payroll permissions from all accounts that do not strictly require them, reducing the set of users who could exploit this path. Additionally, if the CRM is self-hosted, restricting access to the payroll endpoints via an internal network boundary or VPN would prevent external attackers from reaching the vulnerable surface. Note that permission revocation will disrupt HR and payroll administrators' legitimate workflows. No workaround fully mitigates the vulnerability at the data layer without the patch, since the flaw is in unscoped SQL queries that execute regardless of how permissions are presented in the UI.
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 affected product is Roskus Prospero Flow CRM (CPE: cpe:2.3:a:roskus:prospero_flow_crm:*:*:*:*:*:*:*:*), a PHP/Laravel-based multi-tenant CRM platform. CWE-639 (Authorization Bypass Through User-Controlled Key) describes the exact root cause: the application accepts a user-controlled employee identifier (user_id) and uses it to scope payroll operations, but fails to enforce that the identifier resolves to an employee within the caller's own tenant. The source diff confirms two distinct failure sites. In PayrollIndexController.php, the base query Payroll::where('period_year', $year) was issued without a company_id join, meaning the listing endpoint returned records across all tenants; the company_id check was only applied when a specific employee filter was present, and even that logic was subsequently inverted in the patch to instead apply globally. In PayrollRequest.php, the user_id field was validated as exists:user,id - a global uniqueness check - rather than Rule::exists('user', 'id')->where('company_id', Auth::user()->company_id), which would restrict the lookup to the caller's own company. The fix in version 5.15.10 addresses both sites by applying the company_id scope unconditionally at the query level and at the validation layer.
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:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
Network-reachable IDOR (AV:N/AC:L); PR:L because a payroll permission is required; S:C because exploitation crosses distinct tenant authorization boundaries; no availability impact.
Primary rating from Vendor (Secur0).
CVSS VectorVendor: Secur0
DescriptionCVE.org
Authorization Bypass Through User-Controlled Key in the payroll module in Roskus Prospero Flow CRM before 5.15.10 allows authenticated users holding the read payroll permission to view the salary and banking details of employees of any other company in the instance, and users holding the create payroll permission to create payroll records attributed to another company's employees, because the listing query is not scoped to the caller's company and the employee identifier is validated for global existence rather than company membership
Executive ViewAI
Roskus Prospero Flow CRM versions before 5.15.10 contain a cross-tenant data isolation flaw enabling authenticated payroll users to access salary and banking information for employees of unrelated companies within the same multi-tenant instance. This creates direct financial liability and compliance risk for any organization operating shared deployments.
Apply vendor patch.
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 IDOR in Prospero Flow CRM before 5.4.8 allows any authenticated user to blindly overwrite contact records b
Cross-tenant record injection in Roskus Prospero Flow CRM before 5.14.0 allows any authenticated user to silently insert
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-58621
GHSA-fjcx-q8g6-9m7g
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB