Una API web es vulnerable a Broken Function Level Authorization(BFLA) si permite que usuarios no autorizados o sin privilegios interactúen e invoquen puntos finales privilegiados, concediendo acceso a operaciones sensibles o información confidencial.
Diferencia clave vs BOLA:
- BOLA: Puedes acceder al endpoint, pero no a objetos de otros usuarios
- BFLA: No deberías poder acceder NI SIQUIERA al endpoint
Para comprender la diferencia entre BOLA (Broken Object Level Authorization) y BFLA (Broken Function Level Authorization), imaginemos un edificio de oficinas. En el caso de BOLA, tienes acceso legítimo al edificio y puedes entrar a tu propia oficina (ID 101), pero el sistema tiene un error que también te permite entrar a la oficina de María (ID 102), accediendo así a recursos que no te pertenecen. En cambio, con BFLA, siendo un empleado normal, no deberías ni siquiera intentar entrar a la sala de servidores, pero el sistema falla y te permite acceder a este espacio privilegiado que está completamente fuera de tu nivel de autorización. Mientras BOLA se trata de acceder horizontalmente a objetos de otros usuarios en el mismo nivel, BFLA implica acceder verticalmente a funciones o endpoints que deberían estar restringidos a roles superiores.
Ejemplo:
- BOLA (Broken Object Level Authorization)
// Endpoint: /api/files/{file_id}
// Usuario Juan (ID: 123) hace:
GET /api/files/456 // Archivo de María
// La API debería bloquearlo, pero responde:
{
"id": 456,
"owner": "maria@company.com",
"content": "Documento confidencial de María" // ¡BOLA!
}- Caso BFLA (Broken Function Level Authorization)
// Endpoint: /api/admin/database-backup ← Solo para admins
// Usuario Juan (empleado normal) hace:
GET /api/admin/database-backup
// La API debería decir "403 Forbidden", pero responde:
{
"backup": "Base de datos completa...",
"users_passwords": "hashes...",
"config": "claves secretas..." // ¡BFLA!
}| - | BOLA | BFLA |
|---|---|---|
| ¿Qué puedes acceder? | Objetos de otros | Funciones/endpoints privilegiados |
| ¿El endpoint existe para ti? | ✅ Sí | ❌ No debería |
| Ejemplo | Ver archivo de otro usuario | Usar panel de administración |
| Acceso | Horizontal (mismo nivel) | Vertical (hacia arriba) |