IDOR y falta de autorización en la API de transacciones de Prospero Flow CRM permite leer registros financieros de otras empresas
Descripción
Authorization Bypass Through User-Controlled Key (CWE-639) y Missing Authorization (CWE-862) en TransactionReadController::read() (app/Http/Controllers/Api/Transaction/TransactionReadController.php), expuesto en GET /api/transaction/{id}, en Prospero Flow CRM 5.0.0 hasta 5.3.5 incluida, que permite a cualquier usuario autenticado leer las transacciones de cualquier otra empresa alojada en la misma instancia sustituyendo el identificador de la ruta, debido a que el controlador resolvía el registro con Transaction::find($id) sin acotar por company_id y la ruta de routes/api.php aplicaba únicamente el middleware auth:api, sin ninguna comprobación de permiso asociada, a diferencia de TransactionListController::index(), que en el mismo módulo resuelve el listado con Transaction::where('company_id', Auth::user()->company_id). Los identificadores son enteros autoincrementales, por lo que recorrer el rango expone el conjunto completo de registros. Esto resulta en la divulgación entre empresas de los datos financieros que componen cada transacción: nombre, tipo, importe, estado y fechas de emisión y creación.
Tipo de vulnerabilidad (CWE)
CWE-639: Authorization Bypass Through User-Controlled Key CWE-862: Missing Authorization
Versiones afectadas
Prospero Flow CRM desde 5.0.0 hasta 5.3.5 incluida. El endpoint se introdujo con el CRUD de la API de transacciones en el commit e3c6897d, que fijó APP_VERSION en 5.0.0, de modo que las versiones anteriores no exponen la ruta. Ninguna release etiquetada incorpora el fallo: la etiqueta inmediatamente anterior, v4.6.0, es previa a la introducción, y la siguiente, v5.5.3, ya incluye la corrección. La versión corregida, 5.3.6, no está etiquetada.
Estado por defecto: no afectado.
Puntuación (CVSS 4.0)
Alta (8.7)
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
Solución
Actualizar a la versión 5.3.6 o superior. La corrección no se etiquetó: la primera release etiquetada que la incorpora es v5.5.3.
Parche
Commit 980c35ac
Créditos
- Marcos García (s3ntinl) - finder (descubridor)
- Xoán M. Otero Jorge - analyst (analista)
- Cristian Fernández Cornejo - analyst (analista)
- Secur0 CNA - coordinator (coordinador)
- Gustavo Novaro - remediation developer (desarrollador de la corrección) Origen del descubrimiento: Externo Registro oficial: CVE-2026-77759