Por qué BOLA
es la #1.
Broken Object Level Authorization es la primera categoría del OWASP API Security Top 10 desde su primera edición en 2019, y se ha mantenido en la cima cada revisión posterior. La razón es estructural: BOLA es la consecuencia natural de un atajo arquitectónico que se siente correcto cuando lo escribes.
El desarrollador implementa el endpoint GET /api/loans/{id}. Recupera el préstamo de la base de datos. Lo devuelve. El frontend solo solicita IDs que pertenecen al usuario autenticado, así que el flujo "funciona". Los tests pasan porque los tests también solo piden IDs que les pertenecen. La pieza faltante (verificar que el usuario autenticado es el dueño del recurso) parece redundante porque el flujo nunca la ejercita.
Hasta que un atacante con un proxy interceptando peticiones cambia el ID. Y el servidor responde con datos que no debería.
Tres patrones, mismas consecuencias
En auditorías a más de 47 plataformas a lo largo de los últimos años, los hallazgos de BOLA caen consistentemente en tres patrones arquitectónicos. Este writeup los describe con casos reales anonimizados, las técnicas exactas de detección y las remediaciones que funcionan a nivel de framework, no como parches por endpoint.
- Patrón 1 · Trust ciego en el ID del path o query. El más común. El servidor obtiene el recurso por el ID provisto por el cliente sin filtrar por owner.
- Patrón 2 · ID embebido en el JWT como autoridad. El cliente puede modificar el JWT (porque la firma no se valida o porque el secreto está expuesto) y suplantar otra cuenta.
- Patrón 3 · Cross-tenant leak en multi-tenant. La aplicación tiene aislamiento por tenant, pero un endpoint (a veces solo uno) lo olvida.
De cada 10 APIs que evaluamos manualmente, 7 tienen al menos un endpoint con BOLA explotable. El tiempo promedio de detección manual es de 30-90 minutos por endpoint vulnerable, dependiendo del tamaño del API.