IDOR en Prospero Flow CRM permite divulgación y apropiación de productos entre empresas
Descripción
Authorization Bypass Through User-Controlled Key (CWE-639) y Missing Authorization (CWE-862) en el módulo de productos (ProductUpdateController, ProductCreateController y ProductRepository), expuestos en GET /product/update/{id} y POST /product/save, en Prospero Flow CRM 5.4.6, que permiten a un usuario autenticado de cualquier empresa leer los datos sensibles de un producto perteneciente a otra empresa (precio, coste, stock, SKU y código de barras) y apropiarse de dicho producto reasignando su company_id, mediante el identificador numérico del producto, debido a que ProductUpdateController::update() recuperaba el registro con Product::find($id) y ProductRepository::save() con Product::find($data['id']), en ambos casos sin restringir la consulta al company_id del usuario autenticado antes de sobrescribir ese mismo campo con el de la sesión, y a que ninguno de los dos controladores extendía MainController, por lo que no se les aplicaba el middleware auth ni locked que el resto del proyecto sí impone, a diferencia de los módulos de contactos y clientes, que sí filtran por company_id en sus operaciones equivalentes. Esto resulta en la divulgación de la información comercial completa de productos ajenos y en la transferencia no autorizada de esos productos al inventario de la empresa del atacante, con la consiguiente pérdida del registro para su propietario legítimo.
Tipo de vulnerabilidad (CWE)
CWE-639: Authorization Bypass Through User-Controlled Key
CWE-862: Missing Authorization
Versiones afectadas
Prospero Flow CRM anteriores a 5.4.7 (corregido en 5.4.7 por el commit f36c2a11, de fecha 2026-06-25). El sumidero de lectura se introdujo en el commit 9e07ae4c (2022-09-07) y el de guardado en el commit 65f6b9f9 (2023-02-21); ambos estuvieron presentes en las etiquetas v1.0.0, v2.0.1 y v4.6.0, por lo que sí hubo releases etiquetadas distribuidas en estado vulnerable. La versión 5.4.7 no tiene etiqueta git: la primera etiqueta que incorpora la corrección es v5.5.3. Las versiones se leen de la constante APP_VERSION en version.php. Estado por defecto: no afectado.
Puntuación (CVSS 4.0)
Alta (8.6)
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
Solución
Actualizar a la versión 5.4.7 o superior. La corrección no se etiquetó: la primera release etiquetada que la incorpora es v5.5.3.
Parche
Commit f36c2a11
Créditos
- Darío Rivas Quero - finder (descubridor)
- Cristian Fernández Cornejo - analyst (analista)
- Xoán M. Otero Jorge - analyst (analista)
- Secur0 CNA - coordinator (coordinador)
- Gustavo Novaro - remediation developer (desarrollador de la corrección) Origen del descubrimiento: Interno Registro oficial: CVE-2026-19734