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)

Una vulnerabilidad IDOR es una falla de seguridad web que ocurre cuando una aplicación permite a los usuarios acceder a recursos, como archivos o entradas de base de datos, usando identificadores directos que ellos controlan. Funciona permitiendo que un atacante cambie un ID en una URL o solicitud para eludir la autorización y ver o manipular datos que no le pertenecen.

Un atacante explota un IDOR al encontrar una parte de una aplicación donde se usa una referencia directa, comouser_id=100 en una URL. Luego manipula este valor, por ejemplo, cambiándolo a user_id=101, para intentar acceder a la cuenta o los datos de otro usuario. Esto a menudo se hace sistemáticamente para extraer grandes cantidades de información.

Sí, absolutamente. A pesar de su simplicidad, IDOR sigue siendo una de las vulnerabilidades más comunes y de mayor impacto que se encuentran hoy en las aplicaciones web y las APIs. OWASP la lista constantemente como un riesgo de seguridad principal, porque los desarrolladores pueden pasar por alto fácilmente la necesidad de verificaciones de autorización adecuadas, especialmente en aplicaciones complejas.

Las organizaciones pueden protegerse implementando verificaciones sólidas de control de acceso en el servidor para cada solicitud. También es una buena práctica usar referencias indirectas e impredecibles para los recursos específicos del usuario, en lugar de exponer claves directas de base de datos como números secuenciales. Las revisiones de código regulares y las pruebas de seguridad son esenciales para la detección y prevención de la vulnerabilidad IDOR.

Protege lo que importa

Protege endpoints, correo electrónico y empleados con el poder de nuestro SOC 24/7. Prueba Huntress gratis y despliega en minutos para empezar a combatir las amenazas.
Probar Huntress gratis