¿Qué es una referencia de objeto directo insegura (IDOR)?
Una referencia de objeto directo insegura (IDOR) es una vulnerabilidad de control de acceso en la que la entrada de un usuario no validada puede utilizarse para el acceso no autorizado a recursos u operaciones como podría ser la instalación o activación de plugins dentro de tu página web WordPress, por ejemplo.
De hecho, los ataques IDOR suelen tener graves consecuencias y son muy difíciles de encontrar, aunque explotarlos pueda ser tan simple como cambiar manualmente un parámetro de URL.
¿Cómo funcionan los ataques IDOR?
Se produce una vulnerabilidad de referencia de objeto directo insegura (IDOR) cuando se cumplen las siguientes tres condiciones:
- La aplicación revela una referencia directa a un recurso u operación interna.
- El usuario puede manipular una URL o un parámetro de un formulario para modificar la referencia directa.
- La página web proporciona acceso a un objeto interno sin verificar si el usuario está autorizado.
Te pondremos un ejemplo:
Supongamos que una tienda online te envía un correo electrónico con un código de promoción personal de un solo uso para gastar una cierta cantidad de dinero en la tienda.
Por supuesto, si que lo quieres, pulsas sobre el botón de descuento y accedes a una URL como www.tudominio.com/descuentoespecial?promocode=40descuento sin verificar si el usuario realmente cualifica el descuento promocional especificado.
Si durante el pago o checkout el usuario es un poco listo e intenta ingresar otros códigos de promoción similares para ver qué sucede y cambia el parámetro promocode por 50descuento y obtiene un descuento diferente el usuario acabará de explotar una vulnerabilidad IDOR.
Otro ejemplo trivial de IDOR podría ser acceder a la cuenta de un usuario simplemente con la ID de usuario incluida en la URL (Siempre y cuando no hubiera un control de acceso) como www.tudominio.com/userinfo/73627.
Tipos de infecciones IDOR
Cómo has podido ver anteriormente las aplicaciones pueden exponer muchos detalles de implementación interna ya sea a través de URL o parámetros de formulario.
De hecho, algunos parámetros como el código de promoción anterior pueden utilizarse para obtener beneficios económicos directos. Otros pueden utilizarse para extraer datos confidenciales o escalar los privilegios de acceso.
Por todo ello, y, dependiendo de las posibilidades de ataque se pueden dividir aproximadamente en cuatro las vulnerabilidades IDOR más comunes:
- Obtener acceso a datos no autorizados: Las referencias a ciertos objetos expuestos pueden revelar identificaciones directas de la base de datos permitiendo a los atacantes recuperar registros de la base de datos que contienen información confidencial. Este método también se suele utilizar para realizar inyecciones de SQL por los ciber delicuentes.
- Realización de operaciones no autorizadas: Al manipular valores de ID de usuario no validados, nombres de comandos o claves de API los atacantes podrán ejecutar operaciones no autorizadas en la aplicación como forzar un cambio de contraseña para tomar el control de la cuenta de un usuario, ejecutar comandos administrativos para agregar usuarios o escalar privilegios u obtener accesos a APIs de forma ilimitada.
- Manipulación de objetos de la aplicación: El acceso a referencias de objetos internos puede permitir que usuarios no autorizados cambien el estado interno y los datos de la aplicación. Como resultado de esta vulnerabilidad, los atacantes podrán alterar las variables de sesión, por ejemplo, para alterar datos, elevar privilegios o acceder a funciones restringidas.
- Obtener acceso directo a los archivos: Este tipo de IDOR permite a los atacantes manipular los recursos del sistema de archivos. Esto podría permitirles cargar archivos, manipular los datos de otros usuarios o descargar contenido pago de forma gratuita.
¿Cómo saber si he sido infectado por un ataque IDOR?
Para identificar una referencia de objeto potencialmente insegura has de saber cómo funciona una aplicación o página web específica, cómo procesa las solicitudes HTTP y qué información debe y no debe revelar en sus respuestas HTTP.
De hecho, para vulnerabilidades más avanzadas que implican pasar datos a través de API, la detección de IDOR puede ser complicada.
Por este motivo, lo mejor será optar por un plugin de seguridad y monitoreo que te permita conocer las acciones llevadas a cabo dentro de tu página web.
Prevención de vulnerabilidades de IDOR
A la hora de prevenir un ataque IDOR lo mejor será optar por:
- Utilizar un plugin de seguridad para WordPress efectivo.
- Monitorear la actividad dentro de tu página web y servidor, para localizar acceso indebidos.
- Mantener actualizados todos tus plugins para evitar fallas de seguridad.
- Mantener tu WordPress actualizado a la última versión.
- Tener tus plantillas o themes de WordPress actualizados.