Vulnerabilidades de seguridad en chopo.com.mx

Acceso no autorizado a datos personales de pacientes y resultados de sus estudios

Last updated: August 19, 2023 (438c03b)

Línea del tiempo

Contexto

Laboratorio Médico del Chopo es una cadena de laboratorios mexicana con más de 70 años de existencia y presencia en todo el país. Generalmente es la primera opción para realizar estudios médicos en mi familia.

Hace poco noté que era muy fácil obtener los datos personales de terceros al intentar agregar a mi hija a mi cuenta para poder agendarle una serie de estudios. Esto motivó que investigara qué otras vulnerabilidades existían en el sitio y de qué forma mis datos personales estaban expuestos.

A continuación se encuentran los detalles de las dos vulnerabilidades de seguridad que pude encontrar. En ambos casos solo es necesario autenticarse en el sitio para poder llamar los endpoints no seguros y obtener datos no relacionados con la cuenta autenticada.

Vulnerabilidad A: extracción de datos personales

El endpoint https://www.chopo.com.mx/metro/patients/search/searchpost/ permite obtener los detalles personales de cualquier paciente a partir del id del paciente. Al ser el id del paciente un entero secuencial, sería trivial realizar múltiples llamadas para extraer los detalles de la totalidad de los pacientes presentes en la base de datos. Los detalles personales expuestos son nombre completo, género, teléfono, email y fecha de nacimiento.

En el ejemplo siguiente es necesario sustituir los valores de product_patient_id, form_key y PHPSESSID por valores válidos generados al iniciar sesión en el sitio:

Esta llamada devuelve una URL en la que es posible consultar los datos personales antes mencionados de cualquier usuario:
Vulnerabilidad A
Vulnerabilidad A

Esta vulnerabilidad no ha sido resuelta, siendo verificada por última vez el 19 de agosto. Si bien la URL devuelta ya no incluye los datos personales de forma legible, sigue siendo posible obtenerlos a partir del id del paciente, el cuál continúa siendo un entero secuencial.

Vulnerabilidad B: descarga de resultados de estudios médicos

El endpoint https://www.chopo.com.mx/metro/postventa/results/laboratorio/ permitía obtener los resultados de laboratorio de cualquier estudio a partir del orderAdmissionKey. Al ser el id orderAdmissionKey un entero secuencial, hubiera sido trivial realizar múltiples llamadas para extraer los detalles de la totalidad de los estudios presentes en la base de datos. Los detalles personales expuestos eran el nombre completo, género y fecha de nacimiento del paciente; nombre completo del doctor tratante, si existe; y el resultado de los estudios realizados.

En el ejemplo siguiente era necesario sustituir los valores de product_patient_id, form_key y PHPSESSID por valores válidos generados al iniciar sesión en el sitio:

Vulnerabilidad B
Vulnerabilidad B

Esta vulnerabilidad fue aparentemente resuelta, siendo verificada por última vez el 19 de agosto. Se cambió el id orderAdmissionKey a una cadena de texto, que presumiblemente es un token generado a partir del id entero secuencial original.

Conclusión

Es preocupante que la primera vulnerabilidad aquí descrita siga sin resolverse y que los datos personales de quienes hacemos uso de los servicios del Laboratorio Médico del Chopo sigan expuestos y puedan ser recolectados por cualquiera. Es necesario diseñar un mejor proceso para poder acceder a los datos de terceros de una forma más segura.