Clickjacking (clasificado como ataque de reparación de la interfaz de usuario o reparación de la interfaz de usuario ) es una técnica maliciosa que engaña 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 algo aparentemente Objetos inocuos, incluidas páginas web . [1] [2] [3] [4] [5]
El clickjacking es un ejemplo del problema del diputado 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 hacer que la entrada del usuario afectara la capa transparente sin que el usuario se diera cuenta. Sin embargo, esto fue ignorado principalmente como un problema importante hasta 2008. [7]
En 2008, Jeremiah Grossman y Robert Hansen (de SecTheory) descubrieron que se podía hacer clic en Adobe Flash Player , lo que permitía a un atacante obtener acceso a la computadora de un usuario sin su conocimiento. [7] Grossman y Hansen acuñaron el término "clickjacking", [8] [9] un acrónimo de las palabras "click" y "hijacking". [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 simplemente el clickjacking en sí. [7]
Una forma de clickjacking aprovecha las vulnerabilidades presentes en aplicaciones o páginas web para permitir al atacante manipular la computadora del usuario para su propio beneficio.
Por ejemplo, una página con clics engaña al usuario para que realice acciones no deseadas haciendo clic en enlaces ocultos. En una página con clickjack, 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 mismos que espera. Los usuarios desprevenidos piensan que están haciendo clic en botones visibles, cuando en realidad están realizando acciones en la página invisible, haciendo clic en los botones de la página 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 pretendieron. No hay forma de rastrear tales acciones hasta los atacantes más adelante, ya que los usuarios habrían sido autenticados 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 induce a error al usuario sobre en qué realmente se hace clic. [17]
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 la página de un producto en Amazon , puede estar "oculta" encima o debajo del botón "REPRODUCIR" del vídeo de noticias. El usuario intenta "reproducir" el vídeo pero en realidad "compra" el producto en Amazon. El pirata informático solo puede enviar un solo clic, por lo que confía en el hecho de que el visitante ha iniciado sesión en Amazon y tiene habilitado el pedido con 1 clic.
Si bien la implementación técnica de estos ataques puede ser un desafío debido a las incompatibilidades entre navegadores, varias 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 . [18] [19]
Likejacking es una técnica maliciosa para engañar a los usuarios que ven un sitio web para que " les guste " una página de Facebook u otras publicaciones/cuentas de redes sociales que no tenían la intención de darles "me gusta" intencionalmente. [20] El término "likejacking" proviene de un comentario publicado por Corey Ballou en el artículo Cómo dar "Me gusta" a cualquier cosa en la Web (de forma segura) , [21] que es una de las primeras publicaciones documentadas que explica la posibilidad de actividad maliciosa con respecto a El botón "me gusta" de Facebook. [22]
Según un artículo de IEEE Spectrum , en uno de los hackathons de Facebook se desarrolló una solución para el likejacking . [23] Hay disponible un marcador "Me gusta" que evita la posibilidad de secuestro de me gusta presente en el botón Me gusta de Facebook . [24]
El clickjacking anidado, en comparación con el clickjacking clásico, funciona incrustando un marco web malicioso entre dos marcos 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 el encabezado HTTP X-Frame-Options
, en la que, cuando este elemento tiene el valor SAMEORIGIN
, el navegador web solo comprueba las dos capas antes mencionadas. El hecho de que se puedan agregar cuadros adicionales entre estos dos sin ser detectados significa que los atacantes pueden usarlo para 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 aprovechando 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 el atacante podían cargarse y no restringirse, lo que permitía a los atacantes engañar a quien llegaba a la página de visualización de imágenes. [12]
CursorJacking es una técnica de reparación de la interfaz de usuario para cambiar el cursor desde la ubicación que percibe el usuario, descubierta en 2010 por Eddy Bordi, investigador devulnerability.fr. [25] Marcus Niemietz demostró esto con un ícono de cursor personalizado, y en 2012 Mario Heiderich lo hizo ocultando el cursor. [26]
Jordi Chancel, investigador de Alternativ-Testing.fr, descubrió una vulnerabilidad CursorJacking usando código Flash, HTML y JavaScript en Mozilla Firefox en sistemas Mac OS X (corregido en Firefox 30.0) que puede conducir a la ejecución de código arbitrario y al espionaje de la cámara web. [27]
Jordi Chancel volvió a descubrir una segunda vulnerabilidad de CursorJacking en Mozilla Firefox en sistemas Mac OS X (corregida en Firefox 37.0) utilizando una vez más código Flash, HTML y JavaScript que también puede conducir 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 ordenador del usuario afectado. [28]
A diferencia de otras técnicas de clickjacking que reparan una interfaz de usuario, MouseJack es una vulnerabilidad de interfaz de usuario inalámbrica basada en hardware reportada por primera vez por Marc Newlin de Bastille.net en 2016, que permite inyectar entradas de teclados externos en dispositivos vulnerables. [29] Logitech proporcionó parches de firmware, pero otros fabricantes no respondieron a esta vulnerabilidad. [30]
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 prevalece principalmente entre dispositivos móviles, generalmente en dispositivos Android , especialmente debido a la forma en que funcionan las notificaciones del sistema . Debido a que las notificaciones del sistema 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 son capaces de 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 aparentemente parece inofensivo, pero que en realidad hace que el usuario seleccione todo el contenido de la cookie a la que se dirige. Desde allí, el atacante puede adquirir la cookie y todos los datos que posee. [14] [ se necesita aclaración ]
En fileJacking, los atacantes utilizan la capacidad del navegador web para navegar a través de la computadora y acceder a archivos informáticos para adquirir datos personales. Lo hace engañando 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 ahora pueden acceder y tomar archivos de las computadoras de sus víctimas. [15]
Un artículo de 2014 de un investigador de la Universidad Carnegie Mellon encontró que, si bien los navegadores se niegan a completar automáticamente si el protocolo en la página de inicio de sesión actual es diferente del protocolo en el momento en que se guardó la contraseña, algunos administradores de contraseñas completarían de manera insegura las contraseñas para la versión http. de contraseñas guardadas en https. La mayoría de los administradores no protegieron contra ataques basados en iFrame y redirección y expusieron contraseñas adicionales cuando se había utilizado la sincronización de contraseñas entre múltiples dispositivos. [dieciséis]
Se puede agregar protección contra el clickjacking (incluido el likejacking) a las versiones de escritorio y móvil de Mozilla Firefox [31] instalando el complemento NoScript : su función ClearClick, lanzada el 8 de octubre de 2008, evita que los usuarios hagan clic en elementos de página invisibles o "reparados". de documentos incrustados o applets. [32] 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. [33] Se agregó protección contra el nuevo ataque de secuestro de cursor a NoScript 2.2.8 RC1. [26]
El complemento del navegador web "NoClickjack" ( extensión del navegador ) 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. [34] La protección contra clickjack GuardedID obliga a que todos los fotogramas se vuelvan visibles. GuardedID se une [ se necesita aclaración ] 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 de investigación de Microsoft basado en IE, que utiliza un modelo de seguridad similar al sistema operativo y tiene sus propias defensas limitadas contra el clickjacking. [35] En Gazelle, una ventana de origen diferente sólo 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 [36] introduce el concepto de rastrear la "visibilidad" real de un elemento objetivo como lo definiría un ser humano. [37] Esto permite que un widget enmarcado detecte cuando está siendo cubierto. La función está habilitada de forma predeterminada desde Google Chrome 74, lanzado en abril de 2019. [38] La API también se implementa en otros navegadores basados en Chromium , como Microsoft Edge y Opera.
Los propietarios de sitios web pueden proteger a sus usuarios contra la reparación 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. [33]
Esta protección basada en JavaScript no siempre es fiable. Esto es especialmente cierto en Internet Explorer, [33] donde este tipo de contramedida se puede eludir "por diseño" al incluir la página de destino dentro de un elemento. [39]<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 [40] [41] y fue adoptado por otros navegadores ( Safari , [42] Firefox , [43] Chrome , [44] y Opera [ 45] ) poco después. El encabezado, cuando lo establece el propietario del sitio web, declara su política de encuadre preferida: valores de DENY
, , o evitarán cualquier encuadre, encuadre por sitios externos o permitirán encuadre solo por el 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 configurar X-Frame-Options en absoluto).ALLOW-FROM origin
SAMEORIGIN
ALLOWALL
En 2013, el encabezado X-Frame-Options se publicó oficialmente como RFC 7034, [46] pero no es un estándar de Internet. El documento se proporciona únicamente con fines informativos. La recomendación de nivel 2 de la política de seguridad de contenido del W3C proporciona una directiva de seguridad alternativa, frame-ancestors, cuyo objetivo es dejar obsoleto el encabezado X-Frame-Options. [47]
Un encabezado de seguridad como X-Frame-Options no protegerá a los usuarios contra ataques de clickjacking que no utilicen un marco. [48]
La frame-ancestors
directiva de Política de seguridad de contenido (introducida en la versión 1.1) puede permitir o no permitir la incrustación de contenido por páginas potencialmente hostiles utilizando iframe, objetos, etc. Esta directiva deja obsoleta la directiva X-Frame-Options. Si una página se presenta con ambos encabezados, el navegador debería preferir la política de ancestros del marco. [49] , aunque algunos navegadores populares desobedecen este requisito. [50]
Ejemplos de políticas de marco-ancestros:
# No permitir 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: ancestros del marco 'ninguno'
# Permitir la incrustación únicamente de contenido propio .Política de seguridad de contenido: ancestros del marco 'yo'
# Permitir que orígenes específicos incrusten este contenidoPolítica-de-seguridad-de-contenido: frame-ancestors www.example.com www.wikipedia.org