Explotando IDOR's: detección, impacto y prevención
Un IDOR (Insecure Direct Object Reference) ocurre cuando una aplicación permite acceder y manipular objetos internos, como un ID de base de datos o un nombre de archivo, sin verificar la autorización del usuario. Se detecta cruzando identificadores entre dos sesiones distintas y se previene con autorización por objeto, identificadores no predecibles y validación de entrada.

¿Qué es un IDOR?
Un IDOR (Insecure Direct Object Reference, referencia directa insegura a objetos) es una vulnerabilidad de seguridad que ocurre cuando un atacante puede acceder y manipular directamente objetos internos de la aplicación —como un ID de base de datos o un nombre de archivo— sin la debida autorización.
Esta vulnerabilidad es especialmente peligrosa porque puede permitir que un atacante acceda a información confidencial o realice acciones maliciosas en nombre de un usuario legítimo.
Las aplicaciones son cada vez más utilizadas en nuestra vida cotidiana, desde compras en línea hasta la gestión de nuestras finanzas personales. Pero a medida que aumenta su popularidad, también lo hacen las amenazas a la seguridad, y el IDOR es una de las más frecuentes.
Por ejemplo, en un sitio de comercio electrónico, un atacante podría explotar un IDOR para cambiar el precio de un producto o incluso para acceder a los datos de pago de un usuario sin autorización.
Un ejemplo concreto
Imaginemos un «actor» que quiere acceder a una aplicación que le permite visualizar documentos personales. Tiene un documento con el identificador id=1000 y para acceder a él solo necesita visitar:
https://www.ejemplo-idor.com/document?id=1000
Ahora bien, ¿qué pasa si el usuario cambia el valor id=1000 por id=2000, que corresponde al documento de otra persona?
Si la vulnerabilidad está presente, la aplicación va a responder de manera satisfactoria y permitirá el acceso al documento ajeno.

Cómo detectar IDOR’s
- Revisar todos los inputs de la aplicación en busca de identificadores numéricos, alfanuméricos o de cualquier índole que puedan identificar y otorgar propiedad del objeto a un usuario particular.
- Recorrer todo el flujo con dos usuarios diferentes para identificar esos objetos identificadores únicos que podrían verse afectados. Una vez detectados, cruzarlos: el identificador del usuario A probarlo en la sesión del usuario B, y viceversa.
- Usar un proxy intermedio en las pruebas, como Burp Suite u OWASP ZAP, para ver el request y el response completos y así encontrar todos los puntos vulnerables posibles.
- Sumar plugins auxiliares en esos proxies para automatizar la detección. Recomiendo AutoRepeater o Autorize de Burp Suite.
¿Cómo prevenir IDOR?
La buena noticia es que el IDOR es prevenible. Estas son las buenas prácticas que más impacto tienen:
- Validación de entrada de usuario. Validar cada input realizado por el usuario para asegurarse de que no contenga caracteres malintencionados que puedan explotar la vulnerabilidad.
- Autenticación y autorización adecuadas. Las aplicaciones deben tener mecanismos que garanticen que los usuarios solo accedan a la información y funciones que les corresponden.
- Utilización de tokens de sesión. Los tokens de sesión son una forma de autenticar y autorizar de forma segura, y ayudan a prevenir ataques IDOR.
- Limitación del acceso directo a objetos internos. Evitar exponer IDs de base de datos o nombres de archivo y usar en su lugar identificadores aleatorios.
En resumen: la vulnerabilidad IDOR es una amenaza real para las aplicaciones, pero con buenas prácticas de seguridad se puede prevenir.


