Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Unauthenticated network login with a known static password (PR:N/AC:L); full account takeover yields high confidentiality and integrity, but no availability impact and no scope change.
Primary rating from Vendor (4daa8cea-433a-44bd-9456-53b127fc289a).
CVSS VectorVendor: 4daa8cea-433a-44bd-9456-53b127fc289a
Lifecycle Timeline
4DescriptionCVE.org
Use of Hard-coded Credentials in the human resources component in Roskus Prospero Flow CRM before 5.15.9 allows unauthenticated remote attackers to authenticate as any employee onboarded through the standard flow, knowing only their email address, because the employee save controller falls back to the literal password "changeme" and the onboarding form provides no password field.
AnalysisAI
Authentication bypass in Roskus Prospero Flow CRM before 5.15.9 lets unauthenticated remote attackers log in as any employee onboarded through the standard HR flow using only that employee's email address. The employee save controller assigns a hard-coded fallback password of "changeme" (CWE-798) because the onboarding form exposes no password field, leaving newly created accounts with a universally known credential. No public exploit code or CISA KEV listing is identified at time of analysis, but the flaw is trivially reproducible from the public fix commit, and the CVSS 4.0 base score is 9.3 (Critical).
Technical ContextAI
Prospero Flow CRM is a Laravel (PHP) based human-resources/CRM application. The root cause is CWE-798 (Use of Hard-coded Credentials): in EmployeeSaveController the account creation logic read the password via bcrypt($request->input('password', 'changeme')), so when the onboarding form omitted a password field the framework's default-value fallback silently bcrypt-hashed the literal string "changeme" for every onboarded user. Because the hash is valid and deterministic, standard Laravel authentication accepts "changeme" for any such account. The GitHub fix commit (5cc01ed) replaces the fallback with bcrypt(Str::random(32)), sets must_change_password = true, assigns the 'User' role, and dispatches a password-reset link, converting the account to a no-known-password state until the employee sets their own.
RemediationAI
Vendor-released patch: upgrade to Prospero Flow CRM 5.15.9 or later, which replaces the hard-coded fallback with a random 32-character password, forces a password change, and emails a reset link (see fix commit 5cc01ed958db4ad0a026a8daa1c6a8bb98a43e66). Because upgrading alone does not remediate already-onboarded accounts, immediately force a password reset for every user created through the onboarding flow and invalidate the "changeme" credential - query for and expire any account whose password still matches the default. If patching cannot be done immediately, compensating controls include restricting the login/onboarding endpoints to trusted networks or VPN (trade-off: blocks legitimate remote staff), and setting must_change_password / mandatory reset on first login for existing accounts. Consult the CNA advisory at https://secur0.com/en/cna/cve-list/cve-2026-19871-hardcoded-credentials-in-prospero-flow-crm-employee-onboarding for vendor guidance.
Same weakness CWE-798 – Use of Hard-coded Credentials
View allSame technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-58665
GHSA-pw58-qr35-gpr4