Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

BOLA y BFLA, autorización en una API

5 tareas · 40 min · Principiante

Los dos fallos que más se encuentran en APIs son de autorización, y se confunden porque se ven parecidos desde fuera. El primero, a nivel de objeto, ocurre cuando una cuenta puede pedir un objeto que no es suyo. El segundo, a nivel de función, cuando una cuenta de un rol puede invocar una operación que es de otro rol. Se arreglan en sitios distintos del código, así que nombrar bien cuál es el fallo es parte del hallazgo. Trabajas con el registro de la prueba autorizada de Tamarindo Envíos: siete peticiones de tres cuentas de prueba sobre datos sintéticos. Lees el registro, no envías nada.

0 de 5 · 0%

Objetivo de la sala

Los dos fallos que más se encuentran en APIs son de autorización, y se confunden porque se ven parecidos desde fuera. El primero, a nivel de objeto, ocurre cuando una cuenta puede pedir un objeto que no es suyo. El segundo, a nivel de función, cuando una cuenta de un rol puede invocar una operación que es de otro rol. Se arreglan en sitios distintos del código, así que nombrar bien cuál es el fallo es parte del hallazgo. Trabajas con el registro de la prueba autorizada de Tamarindo Envíos: siete peticiones de tres cuentas de prueba sobre datos sintéticos. Lees el registro, no envías nada.

En el Top 10 de APIs de OWASP, BOLA (API1) es la autorización a nivel de objeto rota: el servidor no comprueba que el objeto pedido, identificado por un número o un texto en la ruta, en un parámetro o en el cuerpo, pertenezca a quien lo pide. BFLA (API5) es la autorización a nivel de función rota: el servidor no comprueba que el rol de quien llama pueda ejecutar esa operación, por ejemplo una función administrativa que acepta a un cliente normal.

La pregunta que los separa es sobre qué falla la comprobación. Si el problema es de quién es el dato, es de objeto. Si el problema es de quién puede usar la operación, es de función.

Responde para continuar

Una cuenta de rol cliente ejecuta con éxito una operación reservada a operadores sobre un envío que es suyo. ¿Qué fallo es?

Ver pista de ayuda

El envío es suyo, así que el objeto no es el problema. Lo que no se comprobó es el rol frente a la función.

Es habitual que el desarrollador proteja la operación principal y olvide las que cuelgan de ella: la factura, el historial, las notas del envío. El patrón se ve en el registro: la operación hermana responde 403 y la que cuelga de la misma ruta responde 200.

Abre registro_de_pruebas y busca una operación que haya devuelto 200 a una cuenta de cliente sobre un envío de otro cliente, en la misma ruta que otra operación sí bloqueó.

Responde para continuar

¿Qué operación entregó a tester_a la factura de un envío que pertenece a otro cliente?

Ver pista de ayuda

Ejecuta `SELECT * FROM registro_de_pruebas` y compara el dueño del objeto con el cliente de la cuenta que hizo la petición.

El mismo registro tiene una petición de una cuenta de cliente a una operación de gestión de repartidores. La prueba válida no es sobre el objeto: es sobre el rol. Compara cuentas_de_prueba con el registro y busca la operación que el rol cliente no debería poder ejecutar y que respondió 200.

Responde para continuar

¿Qué operación de gestión ejecutó con éxito una cuenta de rol cliente?

Ver pista de ayuda

Ejecuta `SELECT * FROM cuentas_de_prueba` para ver los roles y revisa en el registro qué operación de repartidores devolvió 200 a tester_a.

La corrección de BOLA es comprobar, en el servidor y en cada operación, que el objeto pedido pertenece a quien lo pide o que su rol permite verlo. Usar identificadores aleatorios y largos en lugar de números secuenciales dificulta recorrerlos, pero no sustituye la comprobación: si alguien obtiene un identificador válido, el servidor lo sirve igual. OWASP recomienda ambas cosas, la comprobación y los identificadores impredecibles, y una prueba automática de autorización antes de cada despliegue. La corrección de BFLA es otra: una comprobación de rol por operación, preferiblemente central y con denegación por defecto.

Responde para continuar

El equipo de Tamarindo propone cambiar los números de envío por identificadores aleatorios y dar el hallazgo por cerrado. ¿Qué respondes en el informe?

Ver pista de ayuda

Un identificador impredecible dificulta recorrer objetos, pero no sustituye la comprobación de pertenencia.

El hallazgo se documenta con lo mínimo que lo demuestra: la cuenta que hizo la petición, la operación y la ruta, el objeto pedido y su dueño, el código de respuesta, la fecha y la hora, y qué se esperaba. Se hace con las cuentas de prueba, sobre una muestra pequeña y sin recorrer series de identificadores; los datos que aparezcan se tapan o se sustituyen en el informe. Nunca se incluyen datos reales de terceros, y si un dato real apareciera, se notifica al contacto del cliente y se deja de probar esa operación.

Responde para continuar

Vas a documentar el hallazgo de la factura ajena. ¿Qué evidencia incluyes?

Ver pista de ayuda

Mínimo que lo demuestre, reproducible y sin datos de más. Una muestra, no un volcado.

Inicia sesión para registrar tus puntos y progreso en el ranking.

Whoami-Labs Pro

Whoami-Labs Pro utiliza cookies

Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad