sábado, 8 de noviembre de 2008

Reflexiones sobre el Clickjacking.



Robert Hansen y Jeremiah Grossman son dos investigadores de seguridad que han alertado hace ya varias semanas de un peligro en Internet referente a los navegadores: clickjacking o "secuestro de clicks". Es un ataque aún en fase de experimentación que podría ser perfeccionado y usado para fines indebidos ya de manera masiva. ¿Exactamente a qué se refiere ese término de secuestro de clicks o como también ha sido llamado "UI Redressing"?

¿Qué es?
Debemos entender que una página web puede contener los llamados "frames". La idea de estos frames es es tener regiones en una página usando iframes, dando como resultado que la página de "X" tenga un frame con la página "Y". Por ejemplo entramos a la página de El Universal y dentro de la página hay un recuadro del sitio GMail para estar leyendo noticias y leer el correo en la misma página.

Ahora bien, la idea es que este iframe (inline frame) podría ser escondido de la vista del usuario y presentar otra página a la vista del usuario. Esto significa que se crean una especie de capas, donde la capa superior es visible al usuario pero deja pasar los clicks a la capa de abajo. La capa superior me presenta por ejemplo un botón que dice "Deje un comentario", pero es un botón "virtual" porque recuerden que la capa superior deja pasar todos los clicks. Cuando el usuario hace click en este botón de la capa superior, realmente está haciendo click en lo que está en la capa inferior, y en esa capa inferior está la página "real" con botones reales.

Ok, aquí viene la explicación del ataque. Ustedes saben que cuando entran a un sitio como GMail y abren otra página del mismo sitio, entran automáticamente a su cuenta. Inclusive si se salen y sin cerrar el navegador vuelven a entrar al sitio, entran a su cuenta directamente. Esto es debido a la persistencia de las sesiones que mantienen los navegadores para comodidad del usuario (¿quién quiere estar tecleando a cada rato sus nombres de usuario y contraseñas? :).

De esto se aprovecha el clickjacking. El atacante puede poner en la capa inferior una página de GMail presentando el botón de "Ingresa". Arriba presenta una capa de un sitio por ejemplo de Blogging y pone un botón atractivo que diga "Comenta este blog y entra a un concurso". El usuario hace click en este botón llamativo esperando hacer un comentario y poder concursar en un sorteo, pero al hacer click en ese botón, realmente abajo está el botón de "Ingresa" de GMail y es al que el usuario verdaderamente le hace click. El atacante se la juega esperando que la persistencia de las sesiones lo ayude y que el usuario ingrese directamente a su cuenta de GMail sin que se le pida su nombre de usuario y contraseña. En resumen, es una cuestión de capas: la capa superior presenta algo al usuario con el fin de que haga click en algún botón de esta capa superior, pero en la capa inferior (que el usuario no ve) existe otra página que es la real.

Ejemplo real.
Nada mejor que ver un ejemplo de esto que estoy explicando...una imagen vale más que mil palabras. Y no sólo es ilustrativo, realmente funciona. El sitio demostrativo está aquí.
El sitio pide entrar a una cuenta de MySpace con nuestro nombre de usuario y contraseña; se puede abrir en otra ventana o pestaña. Luego regresamos al sitio demostrativo y hacemos click en un botón rojo que sólo dice "click 1" y luego en otro botón amarillo que dice "now here". Atrás de esos dos botones está un fondo blanco y vacío. Con estos dos clicks hemos hecho que nuestro perfil de MySpace sea público y que todo mundo pueda verlo (claro, debemos verificar que antes de este ejercicio nuestro perfil sea privado para ver el cambio).

¿Cómo sucedió esto? Sólo abrí mi cuenta de MySpace en OTRA ventana y aquí en el sitio demostrativo sólo hice click en unos botones inofensivos. Pues bien, estos botones "inofensivos" representan la capa superior. Atrás estaba abierta la página de MySpace posicionada adecuadamente para cambiar el perfil a un estado de público. El sitio demostrativo ofrece poder ver lo que está detrás al hacer click en donde dice "Click here to set the opacity of the Myspace iframe to something more visible". Escalofriante, cierto? La capa inferior real de MySpace aparece fantasmagóricamente en modo opacado.

Otros sitios que hablan del secuestro de clicks.
Pueden leer una entrevista con Jeremiah Grossman, uno de los dos investigadores que han traído esta situación a la atención del público. También existe un FAQ interesante. Finalmente, ZDNet habla un poco de esto también. Cabe mencionar que Jeremiah Grossman tiene un blog por si es de su interés donde entre otras cuestiones, habla del clickjacking.

¿Qué hacer?
Lo mejor que podemos hacer por el momento es usar una extensión de Firefox bastante eficiente. Claro, tendrán que usar Firefox...pero eso ya lo hacen, cierto? :-) Si no han probado el Firefox 3, deberían hacerlo: junto con sus características de seguridad, sus extensiones, su interfaz y su compatibilidad con páginas web del Internet 2.0, no querrán regresar a IE.

Otra posible solución es usar el navegador Lynx ya que es basado en texto, pero no va a ser una experiencia web nada agradable...tal vez usarlo para ciertos sitios de los cuales sospechemos pero aún así si tienen la oportunidad de probarlo, verán a lo que me refiero cuando les digo que navegar Internet hoy en día con un navegador basado en texto no es lo mejor.

Finalmente pueden deshabilitar totalmente el scripting de los navegadores, pero me pregunto: es funcional?

Conclusiones.
No está de más evaluar usar la extensión de Firefox de la cual ya hablamos. No es un ataque todavía común y no me enterado de que ya se esté usando para fines maliciosos (pero que yo no esté enterado no quiere decir que no existan ataques). Otro punto es que este ataque está basado en HTTP, por lo cual un firewall perimetral no sería de mucha ayuda, tampoco un antivirus o un firewall personal.

Estamos viendo que los ataques como este de clickjacking o el de sockstress están aparentemente rebasando a las soluciones de seguridad, dejando a las organizciones y usuarios con muchas preguntas y pocas respuestas. ¿Me protege mi firewall o antivirus contra estos innovadores ataques como el clickjacking o sockstress? ¿Lo hace el hecho de estar al día en el parchado? ¿Un filtrado de contenido web lo hace?

Como dije, las soluciones de seguridad deben de informar y estar al día en este tipo de ataques...pareciera que algunos fabricantes de seguridad viven alrededor del año 2000, donde los ataques eran otros y no los que estamos viendo hoy en día.