Exploiting crAPI: BOLA & Broken Auth

Daniel GómezDaniel Gómez
3 min read

Utilizaremos API completamente ridícula (crAPI) para aprender cómo funciona BOLA & Broken Auth. crAPI es una plataforma moderna, basada en una arquitectura de microservicios. Esta plataforma ayuda a comprender los diez riesgos de seguridad de API más críticos.


Broken Object Level Authorization - BOLA

Broken Object-Level Authorization (BOLA), o Autorización a Nivel de Objeto Rota, constituye uno de los riesgos de seguridad más significativos y urgentes para las aplicaciones que operan con bases de datos. Los atacantes pueden explotar fácilmente los endpoints de API vulnerables a BOLA manipulando el ID de un objeto enviado en una solicitud de API. Esto se debe a que el componente de servidor no suele rastrear completamente el estado del cliente. En su lugar, el componente de servidor suele basarse en parámetros como los ID de objeto enviados por el cliente para decidir a qué objetos se puede acceder.

El diagrama de entidad-relación (ERD) que se presenta a continuación es fundamental para entender cómo se aplican las vulnerabilidades de BOLA. Este diagrama ilustra las tablas (entidades), sus columnas (atributos) y las relaciones entre ellas, lo cual es clave para comprender la organización de los datos en una aplicación.

  • Acceso a perfiles ajenos: Si la API que expone profile no verifica que el id en la URL (/profiles/{id}) sea el id del usuario autenticado, un atacante podría cambiar id=0 por id=1 y acceder al teléfono y fecha de nacimiento de "David".

  • Modificación de publicaciones ajenas: Si una API permite modificar un post usando su id (/posts/{id}), pero no verifica que el userid de ese post coincida con el userid del usuario que hace la solicitud, un atacante podría modificar la publicación de otro.

  • Acceso a comentarios/avisos no autorizados: De manera similar, si se puede acceder a un comment o notice por su id, se debe verificar si el usuario tiene permiso para ver el post o forum al que pertenecen.

  • Roles (role en la tabla user): La columna role es fundamental para implementar una autorización basada en roles (Role-Based Access Control - RBAC). Un atacante podría intentar cambiar su propio rol o explotar una BOLA para realizar acciones que solo un "manager" debería poder hacer.

¿Por qué BOLA ocupa el puesto número 1 en el OWASP API Security Top 10?

La razón principal por la que BOLA se sitúa como la vulnerabilidad más crítica reside en cómo se diseñan y programan muchos endpoints de API. Un endpoint puede ser conceptualizado como una función matemática: recibe una entrada de datos (una solicitud) y devuelve una salida de datos (una respuesta). A menudo se omite la validación de si el usuario autenticado posee realmente la autorización necesaria para acceder o manipular el objeto específico al que intenta referirse a través de su identificador. Esta omisión convierte al endpoint en una puerta de entrada para accesos no autorizados a datos y funcionalidades.


Broken Authentication

El mecanismo de autenticación es un blanco fácil para los atacantes, ya que está expuesto a todo el mundo. Aunque pueden requerirse conocimientos técnicos más avanzados para explotar algunos problemas de autenticación, generalmente existen herramientas de explotación disponibles.

¿Por qué es Peligrosa?

Si la autenticación está rota, un atacante puede asumir la identidad de otro usuario. Una vez autenticado, puede hacer lo que haría ese usuario legítimo, incluyendo:

  • Acceder a datos privados.

  • Realizar transacciones.

  • Modificar información.


▶️ A continuación, comparto un video donde se muestra con más detalle el proceso de ataque usando las vulnerabilidades API de BOLA & Broken Auth. 👇


Referencia:

  1. https://dl.acm.org/doi/10.1145/3658644.3690227

  2. https://www.researchgate.net/publication/382422973_Asegurando_tus_APIs_Explorando_el_OWASP_Top_10_de_Seguridad_en_APIs

  3. https://owasp.org/API-Security/editions/2023/en/0x11-t10/

  4. https://salt.security/blog/api1-2023-broken-object-level-authentication

  5. https://github.com/OWASP/crAPI


0
Subscribe to my newsletter

Read articles from Daniel Gómez directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Daniel Gómez
Daniel Gómez

Bachiller en Ciencias de Informática y Sistemas, con experiencia en seguridad de la información, cumplimiento de controles y auditoría conforme a la norma ISO/IEC 27001. Especializado en la identificación de riesgos, análisis de vulnerabilidades y aplicación de medidas de seguridad para la protección de activos digitales. Actualmente, me encuentro en proceso de certificación eWPTX, profundizando mis conocimientos avanzados en pruebas de penetración web, incluyendo técnicas modernas de evasión, explotación de vulnerabilidades complejas, uso de ataques personalizados y evaluación de aplicaciones web en entornos empresariales.