El clickjacking (clasificado como un ataque de reparación de la interfaz de usuario o UI redressing ) es una técnica maliciosa que consiste en engañar a un usuario para que haga clic en algo diferente de lo que percibe, revelando así potencialmente información confidencial o permitiendo que otros tomen el control de su computadora mientras hacen clic en objetos aparentemente inocuos, incluidas páginas web . [1] [2] [3] [4] [5]
El clickjacking es un ejemplo del problema del proxy confuso , en el que se engaña a una computadora para que haga un mal uso de su autoridad. [6]
En 2002, se observó que era posible cargar una capa transparente sobre una página web y que la entrada del usuario afectara a la capa transparente sin que el usuario se diera cuenta. [7] Sin embargo, las soluciones recién comenzaron a aparecer alrededor de 2004, [8] y el problema general fue ignorado en gran medida como un problema importante hasta 2008. [7]
En 2008, Jeremiah Grossman y Robert Hansen (de SecTheory) descubrieron que Adobe Flash Player podía ser víctima de un secuestro de clics, lo que permitía a un atacante acceder al ordenador de un usuario sin su conocimiento. [7] Grossman y Hansen acuñaron el término "secuestro de clics", [9] [10] una combinación de las palabras "clic" y "secuestro". [7]
A medida que se descubrieron más ataques de naturaleza similar, se cambió el enfoque del término "reparación de UI" para describir la categoría de estos ataques, en lugar de solo el clickjacking en sí. [7]
Una forma de clickjacking aprovecha las vulnerabilidades presentes en las aplicaciones o páginas web para permitir al atacante manipular la computadora del usuario para su propio beneficio.
Por ejemplo, una página víctima de un secuestro de clics engaña al usuario para que realice acciones no deseadas haciendo clic en enlaces ocultos. En una página víctima de un secuestro de clics, los atacantes cargan otra página sobre la página original en una capa transparente para engañar al usuario para que realice acciones cuyos resultados no serán los esperados por el usuario. Los usuarios desprevenidos piensan que están haciendo clic en botones visibles, mientras que en realidad están realizando acciones en la página invisible, haciendo clic en botones de la página que se encuentra debajo de la capa. La página oculta puede ser una página de autenticación; por lo tanto, los atacantes pueden engañar a los usuarios para que realicen acciones que nunca tuvieron intención de realizar. No hay forma de rastrear dichas acciones hasta los atacantes más tarde, ya que los usuarios se habrían autenticado genuinamente en la página oculta.
El clickjacking clásico se refiere a una situación en la que un atacante utiliza capas ocultas en páginas web para manipular las acciones que realiza el cursor de un usuario, lo que resulta en engañar al usuario sobre lo que realmente se está haciendo clic. [18]
Un usuario puede recibir un correo electrónico con un enlace a un vídeo sobre una noticia, pero otra página web, por ejemplo, una página de producto en Amazon , puede estar "oculta" encima o debajo del botón "REPRODUCIR" del vídeo de la noticia. El usuario intenta "reproducir" el vídeo, pero en realidad "compra" el producto en Amazon. El hacker solo puede enviar un único clic, por lo que se basa en el hecho de que el visitante ha iniciado sesión en Amazon y tiene habilitado el pedido con un solo clic.
Si bien la implementación técnica de estos ataques puede ser complicada debido a incompatibilidades entre navegadores, una serie de herramientas como BeEF o Metasploit Project ofrecen una explotación casi totalmente automatizada de clientes en sitios web vulnerables. El clickjacking puede verse facilitado por –o puede facilitar– otros ataques web, como XSS . [19] [20]
El likejacking es una técnica maliciosa que consiste en engañar a los usuarios que visitan un sitio web para que le den " Me gusta " a una página de Facebook u otras publicaciones o cuentas de redes sociales que no tenían intención de darles "Me gusta". [21] El término "likejacking" proviene de un comentario publicado por Corey Ballou en el artículo Cómo darle "Me gusta" a cualquier cosa en la Web (de forma segura) , [22] que es una de las primeras publicaciones documentadas que explican la posibilidad de una actividad maliciosa con respecto al botón "Me gusta" de Facebook. [23]
Según un artículo en IEEE Spectrum , en uno de los hackatones de Facebook se desarrolló una solución al likejacking . [24] Hay disponible un bookmarklet "Me gusta" que evita la posibilidad de likejacking presente en el botón "Me gusta" de Facebook . [25]
El clickjacking anidado, a diferencia del clickjacking clásico, funciona incrustando un web frame malicioso entre dos frames de la página web original e inofensiva : el de la página enmarcada y el que se muestra en la ventana superior. Esto funciona debido a una vulnerabilidad en la cabecera HTTP X-Frame-Options
, en la que, cuando este elemento tiene el valor SAMEORIGIN
, el navegador web solo revisa las dos capas mencionadas anteriormente. El hecho de que se puedan añadir frames adicionales entre estos dos sin ser detectados significa que los atacantes pueden utilizar esto en su beneficio.
En el pasado, con Google+ y la versión defectuosa de X-Frame-Options
, los atacantes podían insertar marcos de su elección utilizando la vulnerabilidad presente en el motor de búsqueda de imágenes de Google . Entre los marcos de visualización de imágenes, que también estaban presentes en Google+, estos marcos controlados por los atacantes podían cargarse y no estar restringidos, lo que les permitía engañar a quienquiera que llegara a la página de visualización de imágenes. [13]
CursorJacking es una técnica de corrección de la interfaz de usuario para cambiar el cursor de la ubicación que percibe el usuario, descubierta en 2010 por Eddy Bordi, un investigador de vulnerabilidad.fr. [26] Marcus Niemietz demostró esto con un icono de cursor personalizado y en 2012 Mario Heiderich lo hizo ocultando el cursor. [27]
Jordi Chancel, investigador de Alternativ-Testing.fr, descubrió una vulnerabilidad de CursorJacking al utilizar código Flash, HTML y JavaScript en Mozilla Firefox en sistemas Mac OS X (corregido en Firefox 30.0) que puede provocar la ejecución de código arbitrario y el espionaje de cámaras web. [28]
Una segunda vulnerabilidad de CursorJacking fue descubierta nuevamente por Jordi Chancel en Mozilla Firefox en sistemas Mac OS X (corregido en Firefox 37.0) utilizando nuevamente código Flash , HTML y JavaScript que también puede llevar al espionaje a través de una cámara web y a la ejecución de un complemento malicioso, permitiendo la ejecución de malware en el equipo del usuario afectado. [29]
A diferencia de otras técnicas de clickjacking que reparan una interfaz de usuario, MouseJack es una vulnerabilidad de interfaz de usuario basada en hardware inalámbrico reportada por primera vez por Marc Newlin de Bastille.net en 2016 que permite que la entrada de teclado externo se inyecte en dispositivos vulnerables. [30] Logitech proporcionó parches de firmware, pero otros fabricantes no respondieron a esta vulnerabilidad. [31]
En el clickjacking sin navegador, los atacantes utilizan vulnerabilidades en los programas para replicar el clickjacking clásico en ellos, sin necesidad de utilizar la presencia de un navegador web.
Este método de clickjacking es predominantemente entre los dispositivos móviles, generalmente en los dispositivos Android , especialmente debido a la forma en que funcionan las notificaciones . Debido a que las notificaciones tienen un pequeño retraso entre el momento en que se solicita la notificación y el momento en que la notificación realmente se muestra en la pantalla, los atacantes pueden usar ese espacio para crear un botón ficticio que se encuentra oculto debajo de la notificación y en el que aún se puede hacer clic. [7]
CookieJacking es una forma de clickjacking en la que se roban cookies de los navegadores web de la víctima . Esto se hace engañando al usuario para que arrastre un objeto que parece inofensivo pero que, de hecho, hace que el usuario seleccione todo el contenido de la cookie que se está atacando. A partir de ahí, el atacante puede adquirir la cookie y todos los datos que posee. [15] [ aclaración necesaria ]
En el caso del fileJacking, los atacantes utilizan la capacidad del navegador web para navegar por el ordenador y acceder a los archivos del mismo con el fin de adquirir datos personales. Para ello, engañan al usuario para que establezca un servidor de archivos activo (a través de la ventana de selección de archivos y carpetas que utilizan los navegadores). Con esto, los atacantes pueden acceder y tomar archivos de los ordenadores de sus víctimas. [16]
Un artículo de 2014 de un investigador de la Universidad Carnegie Mellon descubrió que, si bien los navegadores se niegan a completar automáticamente las contraseñas si el protocolo de la página de inicio de sesión actual es diferente del protocolo vigente en el momento en que se guardó la contraseña, algunos administradores de contraseñas completan de manera insegura las contraseñas de la versión http de las contraseñas guardadas en https. La mayoría de los administradores no protegían contra ataques basados en iFrame y redireccionamiento y exponían contraseñas adicionales en los casos en que se había utilizado la sincronización de contraseñas entre varios dispositivos. [17]
Se puede añadir protección contra el clickjacking (incluido el likejacking) a las versiones de escritorio y móviles de Mozilla Firefox [32] instalando el complemento NoScript : su función ClearClick, lanzada el 8 de octubre de 2008, impide que los usuarios hagan clic en elementos de página invisibles o "reparados" de documentos o applets incrustados. [33] Según el "Manual de seguridad del navegador" de Google de 2008, ClearClick de NoScript es un "producto disponible gratuitamente que ofrece un grado razonable de protección" contra el clickjacking. [34] La protección contra el nuevo ataque de cursorjacking se añadió a NoScript 2.2.8 RC1. [27]
El complemento para navegadores web "NoClickjack" ( extensión para navegadores ) agrega protección contra clickjack del lado del cliente para usuarios de Google Chrome , Mozilla Firefox , Opera y Microsoft Edge sin interferir con el funcionamiento de iFrames legítimos. NoClickjack se basa en tecnología desarrollada para GuardedID. El complemento NoClickjack es gratuito.
GuardedID (un producto comercial) incluye protección contra clickjack del lado del cliente para usuarios de Internet Explorer sin interferir con el funcionamiento de iFrames legítimos. [35] La protección contra clickjack de GuardedID obliga a que todos los marcos se vuelvan visibles. GuardedID trabaja [ aclaración necesaria ] con el complemento NoClickjack para agregar protección para Google Chrome , Mozilla Firefox , Opera y Microsoft Edge .
Gazelle es un navegador web seguro del proyecto Microsoft Research basado en IE, que utiliza un modelo de seguridad similar al del sistema operativo y tiene sus propias defensas limitadas contra el clickjacking. [36] En Gazelle, una ventana de origen diferente solo puede dibujar contenido dinámico sobre el espacio de pantalla de otra ventana si el contenido que dibuja es opaco.
La API Intersection Observer v2 [37] introduce el concepto de seguimiento de la "visibilidad" real de un elemento objetivo tal como lo definiría un ser humano. [38] Esto permite que un widget enmarcado detecte cuándo está siendo cubierto. La función está habilitada de forma predeterminada desde Google Chrome 74, lanzado en abril de 2019. [39] La API también está implementada por otros navegadores basados en Chromium , como Microsoft Edge y Opera.
Los propietarios de sitios web pueden proteger a sus usuarios contra el redireccionamiento de la interfaz de usuario (clickjacking basado en marcos) en el lado del servidor al incluir un fragmento de JavaScript framekiller en aquellas páginas que no desean que se incluyan dentro de marcos de diferentes fuentes. [34]
Este tipo de protección basada en JavaScript no siempre es fiable, sobre todo en Internet Explorer [34], donde este tipo de contramedidas se pueden eludir "por diseño" incluyendo la página de destino dentro de un elemento [40] .<IFRAME SECURITY=restricted>
En 2009, se introdujo en Internet Explorer 8 un nuevo encabezado HTTP X-Frame-Options
que ofrecía una protección parcial contra el clickjacking [41] [42] y fue adoptado por otros navegadores ( Safari , [43] Firefox , [44] Chrome , [45] y Opera [46] ) poco después. El encabezado, cuando lo establece el propietario del sitio web, declara su política de encuadre preferida: los valores de DENY
, , o evitarán cualquier encuadre, encuadre por parte de sitios externos o permitirán el encuadre solo por parte del sitio especificado, respectivamente. Además de eso, algunos sitios de publicidad devuelven un valor no estándar con la intención de permitir enmarcar su contenido en cualquier página (equivalente a no establecer X-Frame-Options en absoluto).ALLOW-FROM origin
SAMEORIGIN
ALLOWALL
En 2013, el encabezado X-Frame-Options se publicó oficialmente como RFC 7034, [47] pero no es un estándar de Internet. El documento se proporciona únicamente con fines informativos. La Recomendación de Política de Seguridad de Contenido de Nivel 2 del W3C proporciona una directiva de seguridad alternativa, frame-ancestors, que tiene como objetivo dejar obsoleto el encabezado X-Frame-Options. [48]
Un encabezado de seguridad como X-Frame-Options no protegerá a los usuarios contra ataques de clickjacking que no utilicen un marco. [49]
La frame-ancestors
directiva Content Security Policy (introducida en la versión 1.1) puede permitir o no la incrustación de contenido por parte de páginas potencialmente hostiles que utilicen iframes, objetos, etc. Esta directiva deja obsoleta la directiva X-Frame-Options. Si una página se sirve con ambos encabezados, el navegador debería preferir la política frame-ancestors. [50] —aunque algunos navegadores populares desobedecen este requisito. [51]
Ejemplos de políticas de antecesores de marco:
# No se permite la incrustación. Todos los iframes, etc., estarán en blanco o contendrán una página de error específica del navegador.Política de seguridad de contenido: antecesores del marco 'ninguno'
# Permitir únicamente la incrustación de contenido propio .Política de seguridad de contenido: antecesores del marco 'self'
# Permitir que orígenes específicos incorporen este contenidoPolítica de seguridad de contenido: antecesores del marco www.example.com www.wikipedia.org