CVE-2026-59240
Full vulnerability record from the local CVENow database.
Description
The vulnerability involves an Insecure Direct Object Reference (IDOR) in the `DeleteNotificationController::delete()` method at endpoint `GET /notification/delete/{id}`. The flaw allows any authenticated user, regardless of company or permissions, to delete notifications belonging to any other user in the system. The controller retrieves the target record with `Notification::findOrFail($id)` and deletes it without validating `user_id` or `company_id` ownership, unlike the sibling `SetNotificationReadAjaxController`, which correctly scopes lookups by `Auth::id()`. Because notification identifiers are sequential, an attacker can iterate over IDs to systematically delete notifications belonging to any user, denying them visibility of ticket alerts, task assignments, and other system events.
View original CVE JSON
{
"id": "CVE-2026-59240",
"sourceIdentifier": "4daa8cea-433a-44bd-9456-53b127fc289a",
"published": "2026-07-27T22:17:54.713",
"lastModified": "2026-10-24T13:10:00.147",
"vulnStatus": "Deferred",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "The vulnerability involves an Insecure Direct Object Reference (IDOR) in the `DeleteNotificationController::delete()` method at endpoint `GET /notification/delete/{id}`. The flaw allows any authenticated user, regardless of company or permissions, to delete notifications belonging to any other user in the system. The controller retrieves the target record with `Notification::findOrFail($id)` and deletes it without validating `user_id` or `company_id` ownership, unlike the sibling `SetNotificationReadAjaxController`, which correctly scopes lookups by `Auth::id()`. Because notification identifiers are sequential, an attacker can iterate over IDs to systematically delete notifications belonging to any user, denying them visibility of ticket alerts, task assignments, and other system events."
},
{
"lang": "es",
"value": "La vulnerabilidad implica una Referencia Directa Insegura a Objeto (IDOR) en el método “DeleteNotificationController::delete()” en el endpoint “GET /notification/delete/{id}”. La falla permite a cualquier usuario autenticado, independientemente de la empresa o los permisos, eliminar notificaciones pertenecientes a cualquier otro usuario en el sistema. El controlador recupera el registro objetivo con “Notification::findOrFail($id)” y lo elimina sin validar la propiedad de “user_id” o “company_id”, a diferencia del controlador hermano “SetNotificationReadAjaxController”, que correctamente limita las búsquedas por “Auth::id()”. Debido a que los identificadores de notificación son secuenciales, un atacante puede iterar sobre los IDs para eliminar sistemáticamente notificaciones pertenecientes a cualquier usuario, negándoles la visibilidad de alertas de tickets, asignaciones de tareas y otros eventos del sistema."
}
],
"affected": [
{
"source": "4daa8cea-433a-44bd-9456-53b127fc289a",
"affectedData": [
{
"vendor": "Roskus",
"product": "Prospero Flow CRM",
"defaultStatus": "unaffected",
"collectionURL": "https://github.com/Roskus/prospero-flow-crm",
"programFiles": [
"app/Http/Controllers/Notification/DeleteNotificationController.php"
],
"repo": "https://github.com/Roskus/prospero-flow-crm",
"versions": [
{
"version": "1.0.0",
"lessThan": "5.5.1",
"versionType": "semver",
"status": "affected"
}
]
}
]
}
],
"metrics": {
"cvssMetricV40": [
{
"source": "4daa8cea-433a-44bd-9456-53b127fc289a",
"type": "Secondary",
"cvssData": {
"version": "4.0",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/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",
"baseScore": 6.9,
"baseSeverity": "MEDIUM",
"attackVector": "NETWORK",
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"privilegesRequired": "NONE",
"userInteraction": "NONE",
"vulnConfidentialityImpact": "NONE",
"vulnIntegrityImpact": "LOW",
"vulnAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"subAvailabilityImpact": "NONE",
"exploitMaturity": "NOT_DEFINED",
"confidentialityRequirement": "NOT_DEFINED",
"integrityRequirement": "NOT_DEFINED",
"availabilityRequirement": "NOT_DEFINED",
"modifiedAttackVector": "NOT_DEFINED",
"modifiedAttackComplexity": "NOT_DEFINED",
"modifiedAttackRequirements": "NOT_DEFINED",
"modifiedPrivilegesRequired": "NOT_DEFINED",
"modifiedUserInteraction": "NOT_DEFINED",
"modifiedVulnConfidentialityImpact": "NOT_DEFINED",
"modifiedVulnIntegrityImpact": "NOT_DEFINED",
"modifiedVulnAvailabilityImpact": "NOT_DEFINED",
"modifiedSubConfidentialityImpact": "NOT_DEFINED",
"modifiedSubIntegrityImpact": "NOT_DEFINED",
"modifiedSubAvailabilityImpact": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"valueDensity": "NOT_DEFINED",
"vulnerabilityResponseEffort": "NOT_DEFINED",
"providerUrgency": "NOT_DEFINED"
}
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"timestamp": "2026-07-28T14:19:12.811494Z",
"id": "CVE-2026-59240",
"options": [
{
"exploitation": "none"
},
{
"automatable": "yes"
},
{
"technicalImpact": "partial"
}
],
"role": "CISA Coordinator",
"version": "2.0.3"
}
}
]
},
"weaknesses": [
{
"source": "4daa8cea-433a-44bd-9456-53b127fc289a",
"type": "Secondary",
"description": [
{
"lang": "en",
"value": "CWE-639"
}
]
}
],
"references": [
{
"url": "https://github.com/Roskus/prospero-flow-crm/commit/eaee2ae018701d116164976cbfa37fa9294ab4cc",
"source": "4daa8cea-433a-44bd-9456-53b127fc289a"
},
{
"url": "https://github.com/Roskus/prospero-flow-crm/releases/tag/v5.5.3",
"source": "4daa8cea-433a-44bd-9456-53b127fc289a"
},
{
"url": "https://secur0.com/en/cna/cve-list/cve-2026-59240-idor-in-prospero-flow-crm-allows-deletion-of-other-users-notifications",
"source": "4daa8cea-433a-44bd-9456-53b127fc289a"
}
]
}