Skip to content

Broken Object Level Authorization

Authorization Bypass Through User-Controlled Key

Es una vulnerabilidad de seguridad que ocurre cuando una aplicación no verifica adecuadamente que un usuario tenga permisos para acceder a un objeto específico que intenta manipular.

También conocida como "Authorization Bypass Through User-Controlled Key", esta vulnerabilidad permite a atacantes acceder o modificar recursos a los que no deberían tener acceso simplemente cambiando identificadores en las peticiones.

  • Mecanismo de la vulnerabilidad
c
Usuario A → ID: 123 → Tiene acceso a recurso A
Usuario B → ID: 456 → No debería acceder a recurso A

Ejemplos

API vulnerable:

c
GET /api/orders/1001
Authorization: Bearer <token_usuario_B>

Respuesta:

c
json

{
  "order_id": 1001,
  "user_id": 150,
  "items": [...],
  "total": 250.00
}

Ataque:

c
# Usuario B (ID: 200) prueba IDs secuenciales
curl -H "Authorization: Bearer token_B" https://api.tienda.com/orders/1002
curl -H "Authorization: Bearer token_B" https://api.tienda.com/orders/1003
Sistema Bancario - Transferencias entre cuentas

API vulnerable:

c
POST /api/transfer
Content-Type: application/json
Authorization: Bearer <token>
{
  "from_account": "ACC123",
  "to_account": "ACC456", 
  "amount": 1000
}

Ataque:

c
POST /api/transfer
Content-Type: application/json
Authorization: Bearer <token_usuario_A>
{
  "from_account": "ACC789",  // Cuenta de otro usuario
  "to_account": "ACC456",
  "amount": 5000
}

Escenarios Comunes de BOLA

  • IDs Secuenciales
c
// PATRÓN DE ATAQUE COMÚN
// https://api.app.com/users/1
// https://api.app.com/users/2
// https://api.app.com/users/3
  • UUIDs Predecibles
c
# Aunque sean UUIDs, sin verificación son vulnerables
/document/123e4567-e89b-12d3-a456-426614174000
/document/123e4567-e89b-12d3-a456-426614174001

3. Parámetros en Query Strings

http

GET /api/files?user_id=456 GET /api/invoices?company_id=789