XUT_ / COURSES / PENETRATION TESTER

Vulnerability III - Excessive Data Exposure

¿Cómo Ocurre?

La exposición excesiva de información ocurre cuando las aplicaciones tienden a divulgar más información de la deseada al usuario a través de la respuesta API. Los desarrolladores de la aplicación tienden a exponer todas las propiedades del objeto sin considerar su nivel de sensibilidad. Dejan la tarea de filtrado al desarrollador frontend antes de ser mostrada al usuario. De esta manera, un atacante puede interceptar la respuesta de la API y extraer información delicada.


Impacto Posible

Un actor malicioso podría esnifar el tráfico de red y acceder fácilmente a información confidencial, incluyendo detalles personales como números de cuentas, de teléfono, tokens de acceso y más.


Ejemplo Práctico

  1. La compañía MHT ha lanzado un portal web basado en comentarios que toma los comentarios de los usuarios y los almacena den la base de datos y otra información como localización, dispositivo, etc.
  2. A Bob le han encargado desarrollar el endpoint para mostrar los comentarios de los usuarios en el sitio web principal de la compañía. Ha desarrollado el endpoint apirule3/comment_v/{id} que recoge la información disponible de la base de datos. Bob asumió que el desarrollador front-end filtraría la información que se muestra. Vulnerability III - Excessive Data Exposure
  3. El problema aquí es que la API está mandando más información de la deseada. En lugar de confiar en el desarrollador front-end, sólo deberíamos de enviar al front end información necesaria.
  4. Al darse cuenta de su error, Bob actualizó el endpoint y creó uno válido en /apirule3/comment_s/{id} que devuelve sólo la información necesaria para el desarrollador. Vulnerability III - Excessive Data Exposure

Medidas de Mitigación

  • Nunca dejes tareas de filtración de información sensible al desarrollador front-end.
  • Asegura la revisión de cuando en cuando de la respuesta para garantizar que sólo devuelve información esencial.
  • Evita usar métodos genéricos como to_string() y to_json().
  • Usa el testeo del endpoint de la API a través de varios casos y verifica si la API filtra información adicional.