Su otro nombre, corrección de la interfaz de usuario (UI), describe mejor lo que está sucediendo
El clickjacking (secuestro de clic) es un ataque que engaña a los usuarios para que piensen que están haciendo clic en una cosa cuando en realidad están haciendo clic en otra.
Su otro nombre, User Interface (UI) Redressing [corrección de la interfaz de usuario (UI)], describe mejor lo que está sucediendo. Los usuarios creen que están utilizando la interfaz de usuario normal de una página web, pero en realidad hay una interfaz de usuario oculta que controla el sitio; en otras palabras, la interfaz de usuario ha sido rediseñada.
Cuando los usuarios hacen clic en algo que consideran seguro, la interfaz de usuario oculta realiza una acción diferente.
El ataque es posible gracias a los marcos (frames) HTML (iframes), la capacidad de mostrar páginas web dentro de otras páginas web mediante marcos. Si una página web se permite mostrar dentro de un marco, un atacante puede cubrir la página web original con una capa oculta y transparente con sus propios elementos de interfaz de usuario y JavaScript.
Luego, el atacante engaña a los usuarios para que visiten la página maliciosa, que parece exactamente la misma que la de un sitio que los usuarios conocen y en el que confían. No hay ninguna indicación de que exista una interfaz de usuario oculta sobre el sitio original.
Los usuarios hacen clic en un enlace o un botón esperando una acción determinada del sitio original, y en su lugar se ejecuta el script del atacante. Sin embargo, el script del atacante también puede ejecutar la acción esperada para que parezca que no ha ocurrido nada malo.
El clickjacking en sí no es el objetivo final del ataque; es simplemente un medio para lanzar algún otro ataque haciendo creer a los usuarios que están haciendo algo seguro. El ataque real puede ser prácticamente cualquier cosa posible a través de páginas web.
Esto abarca desde acciones maliciosas, como instalar malware o robar credenciales, hasta cosas más inocuas, como aumentar las estadísticas de clics en sitios no relacionados, aumentar los ingresos por publicidad en sitios, ganar "Me gusta" en Facebook o aumentar las visualizaciones de vídeos de YouTube.
¿Existen defensas contra el secuestro de clics?
No existen defensas perfectas contra el secuestro de clics, pero hay medidas que puedes tomar para reducir el riesgo. En el lado del cliente, es eficaz deshabilitar JavaScript, pero como muchos sitios dependen de JavaScript, desactivarlo hace que muchos sitios queden inutilizables.
Existen algunos productos comerciales que pueden brindar protección sin afectar el uso real de los iframes. Esto puede funcionar bien dentro de una organización, donde los productos se pueden implementar en los escritorios de los empleados, pero no hace nada para proteger a los clientes que usan los sitios web de la organización.
¿Qué son las X-Frame-Options?
Otra opción es utilizar el encabezado HTTP X-Frame-Options. Permite que una aplicación especifique si se deniega simplemente el uso de marcos, mediante el valor DENY, o si se permite el uso de marcos, mediante los valores SAMEORIGIN o ALLOW-FROM. Los navegadores modernos más comunes admiten esta opción de encabezado, pero es posible que otros navegadores no la admitan.
Posibles opciones de X-Frame:
X-Frame-Options: DENY
X-Frame-Options: SAMEORIGIN
X-Frame-Options: ALLOW-FROM https://example.com/
¿Qué es la Política de Seguridad de Contenido (Content Security Policy, CSP)?
La última y más moderna opción para la defensa contra el secuestro de clics es utilizar la Política de Seguridad de Contenido (CSP) y su directiva frame-ancestors. Esta directiva permite al desarrollador de aplicaciones prohibir todo uso de marcos o especificar dónde está permitido, de forma similar a X-Frame-Options.
CSP no está disponible en todos los navegadores, y los plugins y extensiones del navegador pueden ser capaces de eludir la política. Si se utilizan tanto el encabezado X-Frame-Options como los antecesores de marcos de CSP, se supone que los navegadores prefieren las directivas de CSP, pero no todos lo harán.
Posibles configuraciones de antecesores de marcos de CSP:
Content-Security-Policy: frame-ancestors 'none'
Content-Security-Policy: frame-ancestors 'self'
Content-Security-Policy: frame-ancestors example.com
Como ninguna de estas defensas es perfecta, la defensa en profundidad es una buena práctica y no hay nada de malo en utilizar las tres defensas en tus sitios web.
Cómo detectar el clickjacking
Técnicamente hablando, cualquier sitio web que esté abierto a ser incrustado en un iframe puede ser vulnerable a ataques de clickjacking. Por eso es tan importante que tanto los administradores de sitios web como los usuarios finales sean proactivos para prevenirlos.
¿Cómo se puede comprobar la vulnerabilidad de un sitio al clickjacking? Un método consiste en codificar una página HTML específica y utilizarla para intentar incrustar una página sensible de un sitio en un iframe. OWASP ofrece una muestra de código HTML para realizar esta prueba.
La mayoría de los métodos de protección contra el clickjacking se basan en el origen de la página, es decir, en el hecho de que el dominio de la página maliciosa es diferente del dominio de la página legítima (por ejemplo, dummy.com frente a legit.com). Por lo tanto, al ejecutar esta página de prueba, es mejor no ejecutarla en el mismo dominio que la página de destino (por ejemplo, legit.com).
Una vez que ejecutes el código HTML, debería indicarte si la página que estás probando es vulnerable al secuestro de clics. Con más pruebas, puedes determinar si un ataque de secuestro de clics podría evadir alguna de las protecciones ya instaladas en la página.