¿Cómo Ocurre?
Generalmente, los endpoints de las APIs se utilizan para recuperar y manipular información a través de identificadores. BOLA se refiere al Insecure Direct Object Reference (IDOR), que crea un escenario donde el usuario usa la funcionalidad de input y obtiene acceso al recurso que no están autorizados a acceder. En una API, dichos controles son implementados normalmente mediante la programación en modelos (Arquitectura Model-View-Controller) a nivel de código.
Impacto Posible
La ausencia de controles para prevenir el acceso no autorizado a objetos puede llevar a una exfiltración de información y en algunos casos a la pérdida total de control sobre la cuenta. La información de los usuarios o suscriptores juega un papel crítico en la reputación de la marca. Si dicha información se filtra, resultará en una gran pérdida económica.
Ejemplo Práctico
- Bob está trabajando como desarrollador API en la compañía MHT y desarrolló un endpoint en
/apirule1/users/{ID}que permite a otras aplicaciones o desarrolladores pedir información mandando el ID de un empleado.
- El problema con el endpoint es que no está validando la llamada para saber si es válida o no y tampoco si la persona haciendo la llamada tiene el permiso para hacerla.
- La solución a este problema es bastante sencillo. Bob debe implementar un mecanismo de autorización a través del cual identificar quién puede hacer qué llamadas a la API.
- Esto se consigue mediante tokens de autorización o de acceso en el header. Después de esto, sólo introducir un token de autorización válido te dará acceso a los resultados.

Medidas de Mitigación
- Un mecanismo de autorización que confíe en políticas de usuario y jerarquías debería de ser implementado adecuadamente.
- Controles de acceso estricto para comprobar si el usuario registrado está autorizado para realizar acciones específicas.
- Promover el uso de valores completamente aleatorios para que sean imposibles de predecir.
