Vulnerabilidad de referencia directa a objetos insegura (IDOR)
Vulnerabilidad de referencia directa a objetos insegura (IDOR)
Escrito por: Monica Burgess
Publicado: 07/11/25
Una vulnerabilidad de referencia directa a objetos insegura (IDOR) es una falla común y sorprendentemente simple en las aplicaciones web. Ocurre cuando una aplicación da acceso directo a objetos a partir de datos ingresados por el usuario. Esto puede permitir que los atacantes evadan la autorización y accedan a recursos que no deberían, como datos de otros usuarios, con solo cambiar un valor en una URL.
¿Qué es una vulnerabilidad de referencia directa a objetos insegura (IDOR)?
Una referencia directa insegura a objetos (IDOR) es una vulnerabilidad de control de acceso que surge cuando una aplicación usa datos ingresados por el usuario para acceder directamente a objetos. Piénsalo como un hotel donde tu tarjeta llave (tu sesión de usuario) debería abrir solo tu habitación (tus datos), pero una falla te permite cambiar el número de habitación en la tarjeta para acceder a cualquier habitación que quieras. Este tipo de falla, categorizada por OWASP, puede exponer archivos sensibles, registros de bases de datos y otra información privada, lo que puede llevar a una filtración de datos significativa.
¿Cuándo se descubrió?
El concepto de IDOR existe desde que las aplicaciones web comenzaron a usar referencias directas para acceder a recursos. Fue identificado formalmente y popularizado por el Open Web Application Security Project (OWASP) como parte de su lista Top 10 de riesgos críticos de seguridad de las aplicaciones web. Aunque no tiene una sola "fecha de descubrimiento" como un error de software específico, OWASP la incluyó por primera vez en su lista Top 10 inaugural en 2007, lo que destaca su prevalencia y potencial de daño.
Productos y versiones afectados
A diferencia de las vulnerabilidades ligadas a un software específico, IDOR es una falla de diseño que puede afectar a cualquier aplicación web, framework o API, sin importar la pila tecnológica. Es un error de lógica, no un error de software. Por lo tanto, cualquier producto que no aplique correctamente los controles de acceso al recuperar recursos específicos del usuario es potencialmente vulnerable.
Producto/Tecnología | Versiones afectadas | Versiones corregidas / Enlaces de parches |
Aplicaciones web personalizadas | Cualquier versión con lógica de control de acceso defectuosa | N/A (requiere cambios a nivel de código) |
API (REST, GraphQL) | Cualquier versión que exponga identificadores en los endpoints | N/A (requiere rediseño de las verificaciones de autorización) |
Sistemas de gestión de contenido (CMS) | Complementos/temas personalizados o núcleo sin verificaciones adecuadas | N/A (requiere prácticas de desarrollo seguro) |
Descripción técnica de IDOR
La causa raíz de una vulnerabilidad IDOR es no validar que un usuario esté autorizado a acceder al objeto específico que solicita. La aplicación confía en la entrada proporcionada por el usuario sin cuestionarla. Por ejemplo, un usuario podría ver su propio perfil en una URL como https://example.com/profile?user_id=123. Un atacante podría manipular este parámetro a https://example.com/profile?user_id=456 para ver el perfil de otro usuario.
La lógica vulnerable suele verse así en pseudocódigo:object = database.find(parameter['id'])return object.render()
Una implementación segura agregaría una verificación de autorización:object = database.find(parameter['id'])if object.owner == current_user.id:return object.render()else:return "Access Denied"
Esta vulnerabilidad puede manifestarse en URLs, campos de formulario, encabezados o solicitudes de API donde se usa un identificador (como un ID numérico, un nombre de usuario o un nombre de archivo) para referenciar un recurso. La explotabilidad del IDOR suele ser alta porque es muy fácil de probar.
Tácticas, técnicas y procedimientos (TTPs)
Los atacantes que explotan una vulnerabilidad IDOR suelen seguir un patrón sencillo. Primero, identifican dónde la aplicación usa referencias directas a objetos, como en parámetros de URL (id=123), campos ocultos de formulario o endpoints de API (/api/v1/users/123). Luego, manipulan estos identificadores incrementando, disminuyendo o adivinando valores para acceder a datos de otros usuarios. Esta técnica, conocida como manipulación de parámetros, es el núcleo de la mayoría de los ataques IDOR.
Indicadores de compromiso
Los indicadores de compromiso (IOC) de una vulnerabilidad IDOR suelen ser conductuales en lugar de firmas estáticas. Entre los aspectos clave a monitorear está una sola cuenta de usuario o dirección IP accediendo rápidamente a una gran cantidad de recursos al iterar identificadores. Por ejemplo, ver solicitudes secuenciales para file.php?id=1, file.php?id=2, file.php?id=3, etc., desde la misma fuente es una enorme señal de alerta. Intentos inusuales o fallidos de acceso en una amplia variedad de IDs de objetos en los registros del servidor son otro fuerte indicador de compromiso de la vulnerabilidad IDOR.
Pruebas de concepto y exploits conocidos
Como el IDOR es un defecto de lógica, una prueba de concepto (PoC) genérica de IDOR suele consistir solo en demostrar que cambiar un ID en una solicitud otorga acceso no autorizado. Numerosos informes públicos de bug bounty detallan cómo investigadores han encontrado y demostrado IDORs en plataformas importantes. Por ejemplo, una PoC muy conocida involucró una app de viajes compartidos donde cambiar un ID numérico en una llamada a la API podía recuperar el historial de viajes y los datos personales de otros usuarios. No se necesita un marco de explotación complejo; herramientas tan simples como la consola de desarrollador de un navegador web o Burp Suite bastan para encontrar y demostrar el exploit IDOR.
Cómo detectar una vulnerabilidad IDOR
La detección de vulnerabilidades IDOR implica tanto escaneo automatizado como revisión manual de código. Las herramientas de pruebas dinámicas de seguridad de las aplicaciones (DAST) pueden configurarse para manipular parámetros y buscar señales de filtración de información. Sin embargo, estas herramientas suelen tener dificultades para entender el contexto, lo que hace que las pruebas manuales sean fundamentales. Los analistas de seguridad y los desarrolladores deben revisar las rutas de código que manejan identificadores proporcionados por el usuario para asegurar que se realicen verificaciones de control de acceso sólidas en cada solicitud. La detección efectiva de vulnerabilidades IDOR requiere mirar la aplicación desde la perspectiva de un atacante y preguntarse: "¿Qué pasa si cambio este valor?"
Impacto y riesgo de una vulnerabilidad IDOR
El impacto de un IDOR puede variar de menor a catastrófico. En el peor de los casos, una vulnerabilidad IDOR puede llevar a una filtración de datos a gran escala, exponiendo información sensible de los usuarios como nombres, direcciones, datos financieros y mensajes privados. Esto no solo viola la privacidad del usuario, sino que también puede resultar en sanciones financieras importantes según regulaciones como GDPR y CCPA. El daño reputacional puede ser inmenso, erosionando la confianza del cliente. En algunos casos, un exploit IDOR puede escalarse para permitir que los atacantes modifiquen o eliminen datos, o incluso tomen control de otras cuentas de usuario.
Estrategias de mitigación y remediación
La mejor mitigación de vulnerabilidades IDOR es evitar por completo las referencias directas a objetos. En su lugar, usa mapas de referencia indirecta que asocien identificadores impredecibles por usuario (como UUIDs) con las claves reales de la base de datos. Si las referencias directas son inevitables, el paso más crítico es implementar verificaciones estrictas de control de acceso en el servidor para cada solicitud que acceda a un recurso privado. Un parche para IDOR no es una actualización de software tradicional, sino una corrección a nivel de código que agrega estas verificaciones de autorización faltantes. Nunca confíes en controles del lado del cliente para ocultar u oscurecer estos identificadores, ya que se pueden eludir fácilmente.
Preguntas frecuentes sobre la vulnerabilidad de referencia directa a objetos insegura (IDOR)