XUT_ / COURSES / PENETRATION TESTER

Vulnerability V - Broken Function Level Authorisation

¿Cómo Ocurre?

Broken Function Level Authorization refleja un escenario donde un usuario con bajos privilegios bypassea las comprobaciones del sistema y consigue acceso a información confidencial haciéndose pasar por un usuario con altos privilegios. Considera el escenario de un control de acceso con políticas complejas con varias jerarquías, roles y grupos y una separación difusa entre funciones administrativas y regulares. Un atacante podría aprovecharse de estos problemas para acceder a recursos no autorizados de otro usuario o funciones administrativas.


Impacto Posible

El ataque apunta principalmente los principios de seguridad y no repudio. Puede llevar al atacante a hacerse pasar por un usuario autorizado y darle permisos administrativos.


Ejemplo Práctico

  1. A Bob le han asignado la tarea de desarrollar un panel de administración para los ejecutivos de la compañía para que puedan ver los detalles de usuarios y tareas específicas.
  2. Bob ha desarrollado un endpoint /apirule5/users_v para recopilar la información de los usuarios de la base de datos. Para incrementar la protección, ha añadido otra capa de seguridad añadiendo un header especial isAdmin en cada petición. La API solo recopila información de usuarios si isAdmin=1 y el Authorizatio-Token es correcto. El token de autorización de Alice (HR) es YWxpY2U6dGVzdCFAISM6Nzg5Nzg=. Vulnerability V - Broken Function Level Authorisation
  3. Podemos ver que Alice no es un user Admin pero puede ver los datos de los empleados configurando peticiones personalizadas al endpoint con isAdmin=1.
  4. El problema puede resolverse implementando reglas de autorización correctas y comprobando su los roles funcionales de cada usuario en la base de datos durante la query. Bob ha implementado otro endpoint /apirule5/users_s que valida el rol de cada usuario además de lo anterior.

Medidas de Mitigación

  • Asegura diseño correcto y comprobación de todos los sistemas de autorización y denegación de acceso.
  • Asegura que las operaciones sólo se permiten a aquellos usuarios que corresponda.
  • Asegúrate de revisar los endpoints API en busca de debilidades de nivel de autorización y ten en cuenta las apps y los grupos de jerarquía.