Saltar al contenido
CVE-2026-19539 ·
Alta · 11 de agosto de 2026

IDOR en Prospero Flow CRM permite lectura, secuestro y eliminación de tickets entre empresas

S0
Secur0 CNA
CVE-2026-19539

Descripción

Authorization Bypass Through User-Controlled Key (CWE-639) y Missing Authorization (CWE-862) en el módulo de tickets (TicketUpdateController, TicketRepository y TicketDeleteController), expuestos en GET /ticket/update/{id}, POST /ticket/save y GET /ticket/delete/{id}, en Prospero Flow CRM 5.4.8, que permiten a un usuario autenticado de cualquier empresa leer el contenido completo de un ticket de otra empresa (título, descripción y adjuntos), secuestrarlo reasignando su company_id y eliminarlo, mediante el identificador numérico del ticket, debido a que TicketUpdateController::update() y TicketRepository::save() recuperaban el registro con Ticket::find($id) sin restringir la consulta al company_id del usuario autenticado, y a que TicketDeleteController::delete() declaraba como parámetro un Illuminate\Http\Request genérico en lugar del TicketDeleteRequest ya existente en el proyecto, cuyo método authorize() comprueba el permiso delete ticket, de modo que la comprobación de autorización no llegaba a ejecutarse nunca, a diferencia de los módulos de contactos y clientes, que sí filtran por company_id en sus operaciones equivalentes. En el caso concreto del borrado, la ausencia de comprobación era además total, ya que el seeder de permisos no definía ningún permiso de ticket antes de la corrección. Esto resulta en la divulgación del contenido íntegro de tickets ajenos, en la apropiación de esos tickets por parte de otra empresa y en su eliminación no autorizada.

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.9 (corregido por el commit b2b6ffda, de fecha 2026-06-25). El commit de corrección no modificó version.php, que permaneció en 5.4.8; la primera versión que incorpora la corrección es 5.4.9, establecida por el commit inmediatamente posterior 7e86b084. El sumidero de borrado se introdujo en el commit 946a0c5e (2022-10-30) y los de lectura y 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.9 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.9 o superior. La corrección no se etiquetó: la primera release etiquetada que la incorpora es v5.5.3.

Parche

Commit b2b6ffda

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-19539