volvervolver
Inteligencia artificial en Ciberseguridad

POR:
Agustín Orellana
((Ethical Hacking & Research)

COMPARTIR

IDOR: Vulnerabilidad crítica en aplicaciones web

En el amplio universo de la seguridad de la información, las aplicaciones web ocupan un importante lugar debido a su amplio rango de datos y funciones que gestionan. Sin embargo, esta dependencia de las aplicaciones web también las convierte en un objetivo atractivo para los ciberdelincuentes y pone en debate la importancia de abordar las vulnerabilidades que podrían comprometer su seguridad. Una de estas vulnerabilidades críticas es la vulnerabilidad de referencia directa a objetos inseguros (IDOR). En esta publicación abordaremos en profundidad sobre qué se trata esta vulnerabilidad, cómo puede encontrarse, algunos casos reales, la importancia de su impacto para las organizaciones y cómo abordar esta vulnerabilidad desde una perspectiva de buenas prácticas de seguridad para prevenir ataques IDOR.

Definición

La vulnerabilidad IDOR surge debido a deficiencias en el control de acceso y la validación de identidad en una aplicación web. Cuando una aplicación no verifica adecuadamente la autorización de un usuario antes de permitir el acceso a un objeto específico, se produce una vulnerabilidad IDOR. Esto puede ocurrir cuando la aplicación confía únicamente en la información proporcionada por el cliente, como identificadores de objetos en las solicitudes HTTP, sin verificar si el usuario tiene los permisos adecuados para acceder a esos objetos.
Es necesario saber que esta vulnerabilidad en algunos casos suele ser el inicio de una cadena de ataque más compleja.


¿Qué es Broken Access Control?

El control de acceso roto, o "Broken Access Control", es una categoría más amplia de vulnerabilidades de seguridad que incluye la vulnerabilidad IDOR, Broken Access Control actualmente está clasificada como la vulnerabilidad más común según el estudio de OWASP realizado en el 2021. Se refiere a la incapacidad de una aplicación para imponer restricciones adecuadas sobre qué usuarios pueden acceder a qué recursos. Las vulnerabilidades de IDOR son un subconjunto de este problema más amplio y se centran específicamente en las referencias directas a objetos.

Entendiendo el concepto de objeto

Para comprender completamente la vulnerabilidad IDOR, es importante tener claridad sobre el concepto de "objeto" en el contexto de las aplicaciones web. En la programación orientada a objetos, un objeto es una instancia única de una clase que representa una entidad con propiedades y comportamientos específicos. En el contexto de las aplicaciones web, estos objetos pueden ser cualquier tipo de recurso o dato que la aplicación maneja, como perfiles de usuario, archivos, registros de base de datos, etc.

Ejemplos

Para visualizar mejor cómo se manifiesta esta vulnerabilidad en el mundo real, veamos algunos ejemplos:

Acceso a perfiles de usuario

Supongamos que una aplicación de redes sociales asigna a cada usuario un identificador único y utiliza este ID en las URL para acceder a los perfiles de usuario (por ejemplo, /profile/1234). Si un usuario autenticado modifica manualmente la URL para acceder a perfiles que no le corresponden (por ejemplo intentar ingresar al usuario 1337 de la siguiente manera “/profile/1337”), y la aplicación no valida esta acción, se produce una vulnerabilidad IDOR.


En este ejemplo, el usuario autenticado tiene acceso a su propio perfil al acceder a "/perfil/1234". Sin embargo, si el usuario modifica el ID en la URL a "/perfil/1337" y la aplicación no verifica la autorización adecuada, podría acceder al perfil de otro usuario.

Referencia directa a archivos estáticos

Las vulnerabilidades de IDOR a menudo surgen cuando los recursos confidenciales se encuentran en archivos estáticos en el sistema de archivos del lado del servidor. Por ejemplo, un sitio web puede guardar las transcripciones de mensajes de chat en el disco utilizando un nombre de archivo creciente, y permitir a los usuarios recuperarlos visitando una URL como la siguiente:


En esta situación, un atacante puede simplemente modificar el nombre de archivo para recuperar una transcripción creada por otro usuario y potencialmente obtener credenciales de usuario y otros datos confidenciales. Esto también aplica para aplicaciones web donde se almacenan archivos de otras características como por ejemplo un archivo con una extensión “.pdf” el cual puede contener información sensible sobre datos de usuarios, transacciones bancarias, resultados de exámenes médicos, etc. Ambos ejemplos son uno de los tantos escenarios donde se encuentra esta vulnerabilidad.

Referencia directa a objetos de base de datos

Imagine un sitio web que emplea la URL especificada a continuación para obtener información de un cliente, extrayendo los datos de la base de datos.


Aquí, el número de cliente se utiliza directamente como un índice de registro en las consultas que se realizan a la base de datos. Si no hay otros controles en su lugar, un atacante puede simplemente modificar el valor “customer_number”, omitiendo los controles de acceso para ver los registros de otros clientes. Este es un ejemplo de una vulnerabilidad IDOR que conduce a una escalada horizontal de privilegios.

Un atacante podría realizar una escalada de privilegios horizontal y vertical alterando su usuario a uno con privilegios adicionales mientras evita los controles de acceso.

Potencial impacto

Si bien ya aprendimos cómo se podría explotar esta vulnerabilidad en un caso real, es igual de importante ser conscientes del impacto de una vulnerabilidad IDOR puede ser significativo y tener repercusiones graves tanto para los usuarios individuales como para las organizaciones que gestionan las aplicaciones afectadas, ya que esta vulnerabilidad puede ser la desencadenante de otras lo cual la convierte en potencialmente peligrosa. Algunos de los impactos más comunes incluyen:

 • Fuga de datos confidenciales: Los atacantes pueden acceder a información sensible, como datos personales, financieros o médicos, de otros usuarios.

 • Manipulación de datos: Los atacantes pueden modificar, eliminar o crear datos no autorizados, lo que puede tener consecuencias catastróficas para la integridad de los datos.

 • Violación de la privacidad: La privacidad de los usuarios se ve comprometida cuando sus datos personales están expuestos a personas no autorizadas, lo que puede generar una pérdida de confianza por parte de los usuarios.

 • Pérdida de reputación y confianza: Las organizaciones que se ven afectadas pueden perder la confianza de sus usuarios debido a la incapacidad de la organización para proteger sus datos, lo que puede resultar en una disminución de la base de usuarios y en una pérdida de ingresos a largo plazo.

Estrategias de prevención

 • Implementar controles de acceso robustos: Una de las formas más efectivas de mitigar la vulnerabilidad IDOR es implementar controles de acceso robustos en la aplicación. Esto implica verificar en cada solicitud si el usuario tiene los permisos necesarios para acceder al recurso solicitado. Los controles de acceso pueden basarse en roles, privilegios específicos o en el principio de mínimo privilegio, donde los usuarios solo tienen acceso a los recursos necesarios para llevar a cabo sus funciones. También se puede reemplazar el ID (identificador) por el uso de UUID (Identificador Único Universal) con la finalidad de aportar una capa extra de seguridad en la aplicación web.

 • Utilizar tokens de sesión y autorización: Los tokens de sesión y de autorización pueden ayudar a mitigar la vulnerabilidad IDOR al proporcionar una capa adicional de seguridad. Los tokens de sesión se utilizan para autenticar a los usuarios y verificar su identidad en cada solicitud, mientras que los tokens de autorización se utilizan para determinar qué recursos específicos tiene permiso un usuario para acceder. Al implementar tokens de sesión y de autorización correctamente, se pueden evitar los accesos no autorizados a los recursos de la aplicación.

 • Validar la entrada del usuario: La validación adecuada de la entrada del usuario es fundamental para prevenir ataques de IDOR. Esto implica verificar todos los datos proporcionados por el usuario, como identificadores de objetos en las solicitudes HTTP, y asegurarse de que sean válidos y autorizados antes de procesarlos. Sin embargo, también es necesario realizar una correcta sanitización de todos los inputs de la aplicación web. La sanitización de los inputs va un paso más allá al asegurar que los datos sean seguros y no contengan ningún tipo de código malicioso que pueda ser utilizado para manipular el comportamiento de la aplicación. Al sanitizar los inputs, se eliminan caracteres especiales, comandos SQL, etiquetas HTML u otros elementos que podrían ser utilizados para realizar ataques de inyección o manipulación de datos. Esto reduce significativamente el riesgo de que los ciberdelincuentes puedan explotar la vulnerabilidad IDOR al introducir datos manipulados o maliciosos en la aplicación.

 • Implementar listas de control de acceso (ACL): Las listas de control de acceso (ACL) son una herramienta útil para controlar y gestionar el acceso a recursos específicos en una aplicación web. Al crear ACL que definan explícitamente quién tiene permiso para acceder a qué recursos, se puede reducir significativamente el riesgo de vulnerabilidades IDOR. Las ACL pueden basarse en roles de usuario, grupos de usuarios o en criterios específicos de autorización para garantizar que solo los usuarios autorizados puedan acceder a los recursos relevantes.

 • Realizar pruebas de seguridad regulares: Las pruebas de seguridad regulares, como las pruebas de penetración y las auditorías de seguridad, son fundamentales para identificar y remediar vulnerabilidades IDOR en una aplicación web. Estas pruebas pueden ayudar a identificar posibles puntos débiles en el control de acceso y la validación de entrada, así como a evaluar la efectividad de las medidas de mitigación implementadas. Al realizar pruebas de seguridad de forma regular, se puede garantizar que la aplicación esté protegida contra las últimas amenazas y vulnerabilidades de seguridad.

 • Mantenerse actualizado con las mejores prácticas de seguridad: Dado que las amenazas de seguridad evolucionan constantemente, es importante mantenerse actualizado con las mejores prácticas de seguridad y las últimas técnicas de mitigación. Esto puede incluir participar en cursos de formación sobre seguridad informática, seguir las recomendaciones de organizaciones como el Open Web Application Security Project (OWASP) y estar al tanto de las actualizaciones y parches de seguridad para los frameworks y bibliotecas utilizadas en la aplicación.

Al implementar estas medidas de mitigación y remediar la vulnerabilidad IDOR, las organizaciones pueden reducir significativamente el riesgo de exposición a ataques y proteger la integridad y la confidencialidad de los datos de sus usuarios. Sin embargo, es importante recordar que la seguridad de una aplicación web es un proceso continuo y que debe ser abordada de manera proactiva y sistemática para garantizar una protección efectiva contra las amenazas de seguridad.

Conclusión

La vulnerabilidad IDOR no solo es una cuestión técnica, sino también una responsabilidad ética y legal para las organizaciones que gestionan aplicaciones web. Proteger la integridad y la confidencialidad de los datos de los usuarios es fundamental para mantener la confianza del cliente y cumplir con las regulaciones de privacidad y protección de datos.
En última instancia, mencionar que esta vulnerabilidad es una amenaza seria que requiere atención y acción por parte de los desarrolladores, los equipos de seguridad de la información y las organizaciones en su conjunto. Al tomar medidas proactivas para identificar, remediar y prevenir la IDOR, podemos fortalecer la seguridad de nuestras aplicaciones web y a su vez proteger los datos sensibles de los usuarios en el cambiante escenario de amenazas de seguridad informática.