Saltar al contenido
← Volver a hallazgos
Marzo 2026AltaCVSS 8.6Objetivo: aplicación de gestión corporativa (caso anonimizado)

IDOR en API REST con exposición masiva de datos personales

Referencia directa insegura en un endpoint de API REST. Cambiar el identificador numérico y secuencial del cuerpo JSON devolvía el expediente completo de cualquier usuario.

  • CWE-639
  • IDOR
  • BOLA
  • API REST
  • Fuga de PII
  • RGPD

Resumen

El endpoint devolvía el expediente solicitado sin comprobar los permisos del usuario autenticado. Recorrer el rango de identificadores habría dado acceso a la base de usuarios completa.

Sin autorización a nivel de objeto (BOLA), un único endpoint exponía los datos personales de todos los usuarios y sus documentos adjuntos. El fallo está corregido.

La puntuación CVSS 8.6 se calcula sobre el impacto verificado: lectura no autorizada de expedientes completos, con documentos de identidad.

Detalles técnicos

Respuesta del endpoint

Cada respuesta devolvía el expediente completo del usuario, con los documentos adjuntos:

Respuesta: registro completo
{
  "record": {
    "id": "582941",
    "full_name": "[NOMBRE COMPLETO]",
    "id_type": "national_id",
    "id_number": "[DOCUMENTO IDENTIDAD]",
    "phone": "[TELEFONO]",
    "email": "[EMAIL]",
    "address": "[DIRECCION]",
    "organization": "[EMPRESA]",
    "documents": {
      "photo":        "PHOTO_582941_[DATE].jpg",
      "id_scan":      "DOC_582941_[DATE].pdf",
      "certificate":  "CERT_582941_[DATE].pdf",
      "signature":    "SIGN_582941_[DATE].tif",
      "consent_gdpr": "GDPR_582941_[DATE].pdf"
    },
    "status": "active"
  }
}

Automatización del ataque

Un bucle sobre el rango de identificadores automatiza la extracción:

Pseudocódigo: enumeración automatizada
for record_id in range(500000, 600000):
    response = api_request(record_id)
    if response.status == "OK":
        save_record(response.record)
        # nombre, documento, teléfono, email, firma digital...

Las brechas de confidencialidad entran en el régimen sancionador del RGPD. El encaje de cada caso lo determina la autoridad de control. En España, la AEPD instruye el procedimiento.

Impacto

  • Exposición masiva de datos personales de todos los usuarios del sistema
  • Acceso a documentos sensibles: fotografías, documentos de identidad y firmas digitales
  • Incumplimiento del RGPD por acceso no autorizado a datos personales
  • Riesgo de suplantación de identidad con la documentación obtenida
  • Enumeración completa de la base de usuarios por identificadores secuenciales

Remediación

  • Autorización a nivel de objeto. Verificar en cada petición que el usuario tiene permisos sobre el recurso solicitado.
  • Identificadores no predecibles. Sustituir los IDs secuenciales por UUID.
  • Rate limiting por endpoint. Limitar la frecuencia de peticiones para dificultar la enumeración masiva.
  • Minimizar los datos de la respuesta. Devolver solo los campos que la vista necesita.
  • Registro y alertas. Detectar patrones de acceso anómalos sobre el endpoint.

Referencias

Más análisis

Este vector se comprueba endpoint a endpoint, no con la salida de un escáner

Cuéntanos qué APIs quieres auditar. Respondemos en menos de 24 horas.

Solicitar auditoríaLlamar