Authorization Bypass Through User-Controlled Key en Prospero Flow CRM permite escritura y lectura de contactos de otras empresas
Descripción
Authorization Bypass Through User-Controlled Key (CWE-639) en ContactRepository (app/Repositories/ContactRepository.php) y en ContactExportVCard (app/Http/Controllers/Contact/ContactExportVCard.php), expuestos en POST /contact/save y GET /contact/export-vcard/{id}, en Prospero Flow CRM 5.4.7, que permite a un usuario autenticado de cualquier empresa sobrescribir a ciegas los datos de un contacto perteneciente a otra empresa y descargar sus datos personales en formato vCard, mediante el envío o la enumeración del identificador numérico del contacto, debido a que el método save() recuperaba el registro a actualizar con Contact::find($data['id']) y export() con Contact::findOrFail($id), en ambos casos sin restringir la consulta al company_id del usuario autenticado, a diferencia de los controladores hermanos ContactUpdateController y ContactDeleteController, que sí aplican ese filtro desde el commit a3a2f9f5 (PR #248). Esto resulta en la modificación no autorizada del nombre, apellidos, teléfono, móvil, correo electrónico, cargo, perfiles de LinkedIn y Twitter, y notas de contactos de otras empresas, sin necesidad de haber leído previamente su contenido, y en la divulgación de los datos personales de esos mismos contactos a través de la exportación vCard. El mismo commit de corrección aplica el filtro equivalente en SupplierContactRepository::save() y en el ContactExportVCard::export() del módulo de proveedores, dos superficies no cubiertas por la prueba de concepto.
Tipo de vulnerabilidad (CWE)
CWE-639: Authorization Bypass Through User-Controlled Key
Versiones afectadas
Prospero Flow CRM anteriores a 5.4.8 (corregido por el commit f16b4af2, de fecha 2026-06-25). El commit de corrección no modificó version.php, que permaneció en 5.4.7; la primera versión que incorpora la corrección es 5.4.8, establecida por el commit inmediatamente posterior 361566c1. El sumidero de escritura se introdujo en el commit 65f6b9f9 (2023-02-21) y el de exportación vCard en el commit a0306e77 (2023-02-07); 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.8 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.8 o superior. La corrección no se etiquetó: la primera release etiquetada que la incorpora es v5.5.3.
Parche
Commit f16b4af2
Créditos
- Darío Rivas Quero - finder (descubridor)
- Alejandro Gutiérrez López - 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-19433