IDOR y falta de autorización en la API de proveedores de Prospero Flow CRM permite lectura y modificación entre inquilinos
Descripción
Authorization Bypass Through User-Controlled Key (CWE-639) y Missing Authorization (CWE-862) en SupplierUpdateController::update() (app/Http/Controllers/Api/Supplier/SupplierUpdateController.php), expuesto en PUT /api/supplier/{id}, en Prospero Flow CRM anteriores a 5.3.2, que permite a cualquier usuario autenticado leer y modificar el proveedor de otra empresa indicando su identificador, incluida la reasignación del recurso a la empresa del atacante, mediante una petición que fija company_id en el cuerpo, debido a que el controlador resuelve el objeto con Supplier::find($id) sin filtrar por company_id, aplica el cuerpo completo con $supplier->update($request->all()) sobre un modelo cuyo $fillable incluye company_id, devuelve el objeto resultante en la respuesta con account_number, order_url, order_user y order_password fuera de $hidden, y se publica en routes/api.php con auth:api como único middleware mientras SupplierRequest::authorize() se limita a Auth::check(), a diferencia de SupplierListController::index(), SupplierReadController::read() y SupplierDeleteController::delete(), que sí acotan la consulta por company_id sobre el mismo recurso. Esto resulta en la lectura de credenciales y datos bancarios de proveedores ajenos y en la escritura y el traslado de esos registros al inquilino del atacante.
Tipo de vulnerabilidad (CWE)
CWE-639: Authorization Bypass Through User-Controlled Key
CWE-862: Missing Authorization
Versiones afectadas
Prospero Flow CRM desde 4.0.0 hasta 5.3.1 incluida. El cuerpo vulnerable del método se introdujo en el commit b03c8c6f (2024-11-01), que fija la versión 4.0.0; las versiones anteriores exponían el método vacío y no están afectadas. Las etiquetas v2.0.1 (4.0.0) y v4.6.0 (4.6.0) se publicaron vulnerables. La versión corregida 5.3.2 no está etiquetada: la primera release etiquetada que incorpora la corrección es v5.5.3. Estado por defecto: no afectado.
Puntuación (CVSS 4.0)
Crítica (9.3)
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
Solución
Actualizar a la versión 5.3.2 o superior. La corrección no se etiquetó: la primera release etiquetada que la incorpora es v5.5.3. La corrección acota las escrituras posteriores pero no revierte los registros ya modificados, por lo que conviene revisar la tabla supplier en busca de filas cuyo company_id haya cambiado y rotar las credenciales de portal de pedidos y los datos bancarios de los proveedores expuestos.
Parche
Commit 4a52477e
Créditos
- Antonio Rivera Poblete - 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-78365