IDOR (Insecure Direct Object Reference)
🌐 Vulnerabilidad: Insecure Direct Object Reference (IDOR)
🕵️♂️ ¿Qué es IDOR?
Insecure Direct Object Reference (IDOR) es una vulnerabilidad que ocurre cuando una aplicación permite a un usuario acceder directamente a recursos u objetos (como archivos, registros o parámetros) mediante identificadores que no están protegidos adecuadamente. Si no se implementan controles de acceso, un atacante puede manipular estos identificadores para acceder a datos o acciones no autorizadas.
⚙️ ¿Cómo se produce?
La aplicación usa identificadores directos para acceder a recursos:
Ejemplo: URL que incluye un identificador de usuario o recurso.
El atacante manipula el identificador:
Cambia
123
por124
para acceder a recursos de otro usuario:
Si no hay validación de acceso:
El atacante puede acceder, modificar o eliminar datos de otros usuarios.
🛠️ Mecanismo de ataque
Ejemplo de una API vulnerable:
El atacante cambia el identificador 123
por 124
y obtiene información sobre otro pedido:
🎯 Impacto
Exposición de información sensible: Datos personales, detalles financieros, etc.
Modificación no autorizada: Cambiar información de otros usuarios.
Eliminación de datos: Un atacante podría borrar información importante.
Escalada de privilegios: Acceso a recursos administrativos o restringidos.
📉 Puntaje CVSS v3
Vector de ataque: Red (Explotable remotamente)
Complejidad del ataque: Baja
Impacto en confidencialidad: Alto
Impacto en integridad: Alto
Impacto en disponibilidad: Bajo a medio
Puntaje CVSS v3: 7.0 - 9.0 (Alto - Crítico) 🔥
🧑💻 Ejemplo práctico
Código vulnerable en PHP:
📌 Ataque: El atacante manipula la URL:
Esto devuelve datos de otro usuario, como:
🛡️ ¿Cómo prevenir IDOR?
1️⃣ Implementar controles de acceso
Verifica que el usuario tenga permisos para acceder al recurso solicitado:
2️⃣ Uso de identificadores indirectos
En lugar de usar identificadores directos, usa identificadores únicos que no sean predecibles (como UUID o tokens):
3️⃣ Validar siempre las solicitudes
Revisa en el backend si el usuario tiene permisos para cada acción o recurso.
4️⃣ Evitar exponer identificadores sensibles
Si no es estrictamente necesario, no expongas datos como IDs internos en las URLs o respuestas API.
5️⃣ Auditorías y registros
Registra todas las solicitudes de acceso a recursos para detectar patrones de abuso.
6️⃣ Implementar controles en la base de datos
Asegúrate de que las consultas incluyan filtros que restrinjan los datos según los permisos del usuario:
💡 Dato extra: Aunque IDOR es fácil de entender y explotar, también es relativamente simple de prevenir mediante controles de acceso adecuados y mejores prácticas de diseño.
🚨 Nota importante: Esta vulnerabilidad forma parte del OWASP Top 10 debido a su prevalencia y facilidad de explotación.
Última actualización
¿Te fue útil?