Ataques con target=”_blank”

Cuando surgió un debate en un artículo sobre las novedades de WordPress 4.7 y luego, posteriormente, se abrió en los foros de soporte me puse a investigar un poco y así poder poner algo de luz en este asunto.
 
¿Qué es la vulnerabilidad target=”_blank”?.
Esta vulnerabilidad, también conocida como reverse tabnabbing, un tipo de ataque de phishing en el que el atacante reemplaza la pestaña legítima y fiable por un documento malicioso usando el selector window.opener.location.assign() cuando se accede mediante un enlace de apertura en nueva ventana/pestaña, o sea del tipo target=”_blank”.
Lo que hace el atacante es, usando el selector window.opener.location, llevar al usuario a alguna página falsa que simula ser la original o ejecuta algún JavaScript en la página de apertura en la que confía el usuario.
Explicado de manera sencilla, con el reverse tabnabbing, cuando haces clic en una web para abrir una página nueva y se abre en una nueva pestaña, si luego pretendes volver usando el sistema “Atrás” del navegador te parece volver a la web original y sin que tú te des cuenta se cambia automáticamente a esa página falsa que simula ser la buena.
Parece la página web original que estabas viendo pero tiene una url distinta (que se puede ver claramente en la barra de dirección http). El problema es que la mayoría de los usuarios no se dan cuenta de que la URL ha cambiado, ya que no se suelen fijar casi nunca, menos si piensan que están en una web en la que confían, por ejemplo esta.
Luego, por ejemplo, la página web falsa les pedirá que accedan de nuevo a su cuenta pero ya no estás donde te creías que provienes sino en una copia de la pestaña original en la que hay otro documento, en este caso malicioso. Si introduces tus datos ya te has entregado a los hackers y harán lo que sea con tus credenciales.
En esta página tienes un ejemplo no malicioso del reverse tabnabbing por si quieres probarlo en tus carnes sin peligro.
 
¿Qué hace la relación rel=”nofollow noopener noreferrer”?.
El modo de evitar la vulnerabilidad reverse tabnabbing es añadir a tus enlaces que se abren en una nueva ventana/pestaña las relaciónes de enlace rel=”nofollow noopener”.
   – El atributo nofollow en código HTML para que los motores de búsqueda no tengan en cuenta los enlaces externos. El objetivo del atributo nofollow es impedir que la publicación de enlaces comprados en sitios Web con un alto PageRank se utilice para falsear el cálculo de relevancia de los sitios Web destino del enlace, obteniendo una ventaja en su posicionamiento en las páginas de resultados.
   – El atributo noopener en código HTML para evitar ataques crossdomain en páginas abiertas con target=”_blank” y evitar que una nueva ventana pueda acceder a la propiedad window.opener.location, mandándonos a una página desde la que hacer un ataque de phising.
   – El atributo noreferrer se añade porque el navegador Firefox no reconoce la relación anterior (noopener).
Quedaría rel=”nofollow noopener noreferrer” y de este modo, para evitar la vulnerabilidad, tu enlace externo debería ser así:
 
<a href=”url del enlace externo” target=”_blank” rel=”nofollow noopener noreferrer”>Texto del enlace externo</a>
 
De este modo se elimina la posibilidad de aplicar la citada vulnerabilidad. Sencillo, ¿no?. Lo malo es si tienes que ir añadiendo esto en html a cada enlace externo uno a uno, pero ahora podemos usar WordPress y es más fácil.
 
¿Afecta al SEO añadir nofollow noopener noreferrer?.
Una pregunta que ha surgido en muchos foros y en muchos comentarios es si esto afectará en algo al SEO.
Pues según han respondido desde Google a preguntas de webmasters es un simple enlace y no añade ni quita ni afecta el posicionamiento a los enlaces, tengan nofollow o no, a los que se añada el noopener noreferrer.
 
¿Cómo soluciona esta vulnerabilidad en WordPress?.
Como comenté al principio del artículo, en la versión 4.7.4 de WordPress se incorporó la actualización del editor incluido TinyMCE que soluciona esta vulnerabilidad añadiendo automáticamente la relación rel=”noopener noreferrer” a todos los enlaces con target=”_blank”, tanto a los nuevos contenidos como a los existentes si los abres para editarlos. Eso sí, que quede claro que TinyMCE solo añade la relación noopener noreferrer en los enlaces que tú decidas que abran en ventana/pestaña nueva, o sea, en los que hagas esto:

¿Y si no quiero que WordPress me proteja de la vulnerabilidad reverse tabnabbing?.
Si prefieres vivir peligrosamente puedes desactivar esta funcionalidad del editor TinyMCE de WordPress añadiendo el siguiente código a tu plugin de utilidades o al archivo functions.php del tema hijo activo, pero NO LO HAGAS:
 
// Esto desactiva voluntariamente una funcionalidad de seguridad de tinyMCE.
// NO ES RECOMENDABLE usar este código.
add_filter(‘tiny_mce_before_init’,’tinymce_allow_unsafe_link_target’);
function tinymce_allow_unsafe_link_target( $mceInit ) {
$mceInit[‘allow_unsafe_link_target’]=true;
return $mceInit;
}
 
Entonces ¿qué hago?.
Nada. En serio. El hecho de que se añada la relación rel=”nofollow noopener noreferrer” a los enlaces que abren en ventana/pestaña nueva es una funcionalidad de seguridad que te protege a ti y tus visitantes de una vulnerabilidad grave, de robo de información, y el hecho de que WordPress/TinyMCE nos protejan de esto es bueno.

Volver a Navegadores a fondo Volver al menú de Internet Volver a Inicio

* Más información en Target blank, the most underestimated vulnerability ever, en The target blank vulnerability by example y en About: rel=”noopener”

Anuncios