{"id":26107,"date":"2021-10-01T10:04:56","date_gmt":"2021-10-01T08:04:56","guid":{"rendered":"https:\/\/www.kaspersky.es\/blog\/?p=26107"},"modified":"2021-10-01T13:51:00","modified_gmt":"2021-10-01T11:51:00","slug":"what-is-spookjs","status":"publish","type":"post","link":"https:\/\/www.kaspersky.es\/blog\/what-is-spookjs\/26107\/","title":{"rendered":"Spook.js, una historia de terror"},"content":{"rendered":"<p>Un ataque de phishing tiene sentido: haces clic en un enlace, accedes a una p\u00e1gina maliciosa, introduces informaci\u00f3n y un atacante los roba. Pero imag\u00ednate que con tan solo hacer clic en un enlace, un atacante pudiera robar tus datos. Pues est\u00e1 pasando, hoy te hablamos de las p\u00e1ginas maliciosas que explotan una funci\u00f3n fundamental de la CPU para robar datos sin que la v\u00edctima introduzca nada. Y lo peor de todo es que esta vulnerabilidad en cuesti\u00f3n es muy dif\u00edcil, si no imposible, de solucionar.<\/p>\n<p>En el 2018, un grupo de investigadores demostraron que esta situaci\u00f3n era te\u00f3ricamente posible y revelaron las dos primeras variantes de la vulnerabilidad Spectre. Tres a\u00f1os despu\u00e9s, en septiembre del 2021, se ha presenciado el primer ataque en la vida real usando Spectre v1. Conocido como Spook.js, el concepto de ataque es complicado, pero intentaremos destriparlo.<\/p>\n<h2>Spectre v1 a fondo<\/h2>\n<p>La noticia de los dos primeros ataques de esta familia, Spectre y Meltdown, <a href=\"https:\/\/www.kaspersky.es\/blog\/two-severe-vulnerabilities-found-in-intels-hardware\/15077\/\" target=\"_blank\" rel=\"noopener\">surgieron en el 2018<\/a>. Los ataques explotaron el mecanismo de predicci\u00f3n de rama, que est\u00e1 dise\u00f1ado para acelerar la ejecuci\u00f3n de los comandos y que se encuentra en todas las CPU modernas.<\/p>\n<div id=\"attachment_26117\" style=\"width: 730px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-26117\" class=\"wp-image-26117 size-full\" src=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/88\/2021\/09\/01094231\/what-is-spookjs-1.png\" alt=\"\" width=\"720\" height=\"380\"><p id=\"caption-attachment-26117\" class=\"wp-caption-text\">El logotipo de la vulnerabilidad Spectre<\/p><\/div>\n<p>Cuando un usuario introduce una contrase\u00f1a para iniciar sesi\u00f3n en un sitio web, si la contrase\u00f1a es correcta, se ejecuta un conjunto de instrucciones. Si no, se ejecuta otro. Sin embargo, y aqu\u00ed es donde entra en juego la predicci\u00f3n de la rama, antes de recibir la respuesta, la CPU comienza a ejecutar el conjunto de instrucciones que cree que probablemente necesitar\u00e1.<\/p>\n<p>En nuestro ejemplo, si la contrase\u00f1a se introdujo correctamente cien veces antes, la CPU asumir\u00e1 que esta vez no ser\u00e1 diferente. Si la adivina correctamente, el usuario obtiene un aumento de rendimiento. De lo contrario, la CPU descarta las instrucciones ejecutadas especulativamente y ejecuta el otro conjunto.<\/p>\n<p>En un ataque de vulnerabilidad de Spectre, se intenta leer un \u00e1rea de datos a la que el programa no tiene acceso. En la primera etapa del ataque, se realizan m\u00faltiples llamadas a \u00e1reas de datos de acceso abierto, por lo que el sistema de predicci\u00f3n de sucursales est\u00e1 \u201centrenado\u201d para realizar tambi\u00e9n la operaci\u00f3n de lectura prohibida. Al usar la predicci\u00f3n de la rama, la CPU realiza la operaci\u00f3n por adelantado porque est\u00e1 acostumbrada a que el programa solicite leer datos que en realidad se le permite leer. Pero una comprobaci\u00f3n revela que el programa tiene prohibido acceder a los datos, por lo que los c\u00e1lculos ejecutados especulativamente se descartan. Hasta ahora todo va bien, pero los datos le\u00eddos por la CPU se almacenan durante cierto tiempo en la cach\u00e9, la propia memoria de la CPU.<\/p>\n<p>Luego viene la parte m\u00e1s interesante: incapaz de leer los datos confidenciales de la memoria cach\u00e9 de la CPU directamente, el proceso malicioso implementa un llamado ataque de canal lateral para robarlos. Eso implica medir la velocidad de acceso a determinada informaci\u00f3n. Si es relativamente peque\u00f1a, significa que los datos se encuentran en la cach\u00e9. Si es grande, se carga desde la RAM normal. Una secuencia determinada de intentos de lectura da como resultado una filtraci\u00f3n de la informaci\u00f3n secreta.<\/p>\n<p>El resultado es un error fundamental de la CPU cuya \u00fanica soluci\u00f3n es deshabilitar la predicci\u00f3n de ramas por completo, lo que afecta seriamente el rendimiento. Dicho esto, los ataques de Spectre presentan muchas limitaciones:<\/p>\n<ul>\n<li>El atacante debe poder ejecutar el c\u00f3digo del programa en el ordenador o dispositivo m\u00f3vil objetivo<\/li>\n<li>El ataque requiere un programa objetivo espec\u00edfico codificado para crear las condiciones para un ataque exitoso.<\/li>\n<li>Aunque el atacante tuviera \u00e9xito, la extracci\u00f3n de datos es extremadamente lenta (decenas o cientos de <em>bytes<\/em> por segundo) y los errores de lectura son muy posibles.<\/li>\n<li>En general, el robo de datos secretos intencionado, como contrase\u00f1as, claves de cifrado, etc., requiere una combinaci\u00f3n de condiciones.<\/li>\n<\/ul>\n<h2>Spook.js: la aplicaci\u00f3n en la vida real de Spectre v1<\/h2>\n<p>Podr\u00edamos concluir que Spectre no es tan peligroso. Despu\u00e9s de todo, si un atacante puede ejecutar c\u00f3digo en un ordenador objetivo, explotar una de las muchas vulnerabilidades en el sistema operativo o los programas instalados para escalar privilegios y robar datos ser\u00eda mucho m\u00e1s sencillo.<\/p>\n<p>Eso es cierto, pero las p\u00e1ginas web actuales tambi\u00e9n contienen grandes cantidades de c\u00f3digo de programa que se ejecuta en el ordenador del usuario, en el navegador. As\u00ed es como los ataques Spook.js aprovechan la vulnerabilidad Spectre v1: se carga una p\u00e1gina infectada, el navegador ejecuta el c\u00f3digo y el ciberdelincuente roba datos confidenciales.<\/p>\n<p>Los autores de este <a href=\"https:\/\/www.spookjs.com\/\" target=\"_blank\" rel=\"noopener nofollow\">informe<\/a> demostraron algunos ataques pr\u00e1cticos. En primer lugar, robaron una contrase\u00f1a de usuario de Tumblr. En segundo lugar, robaron datos de Lastpass. En tercer lugar, interceptaron una imagen cargada por el usuario desde un almacenamiento privado en un servidor de Google.<\/p>\n<p>Una caracter\u00edstica del navegador Google Chrome hizo que todo fuera posible. Desde la publicaci\u00f3n de informaci\u00f3n sobre Spectre, los desarrolladores de Chrome han tomado medidas para evitar posibles ataques al obligar a los sitios web a cargarse de forma aislada. Debido a que cada sitio web crea su propio proceso, el c\u00f3digo malicioso de una p\u00e1gina no se puede utilizar para robar datos de otro recurso. Pero hay una excepci\u00f3n: varias p\u00e1ginas del mismo sitio o dominio se agrupan en un proceso de navegador com\u00fan. Si el c\u00f3digo malicioso (escrito en JavaScript, de ah\u00ed el .js en el nombre del ataque) se ejecuta en uno de ellos, se pueden robar datos de otras p\u00e1ginas.<\/p>\n<h3>El ataque de Spectre.js en Tumblr<\/h3>\n<p>Como blog colectivo, Tumblr puede albergar c\u00f3digo malicioso, al menos en teor\u00eda. De esta forma, con una p\u00e1gina maliciosa abierta en una pesta\u00f1a, si un usuario intenta iniciar sesi\u00f3n en su cuenta en otra pesta\u00f1a del servicio, el navegador guarda y completa autom\u00e1ticamente el nombre de usuario y la contrase\u00f1a, que luego el c\u00f3digo malicioso puede robar.<\/p>\n<p><span class=\"embed-youtube\" style=\"text-align:center; display: block;\"><iframe class=\"youtube-player\" type=\"text\/html\" width=\"640\" height=\"390\" src=\"https:\/\/www.youtube.com\/embed\/bP9Hquj5PH4?version=3&amp;rel=1&amp;fs=1&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent\" frameborder=\"0\" allowfullscreen=\"true\"><\/iframe><\/span><\/p>\n<p>Al explotar la vulnerabilidad de Spectre, un ataque puede interactuar tangencialmente con otra pesta\u00f1a del mismo sitio y robar datos por medios indirectos. Un ataque exitoso con esta estrategia es capaz de no dejar apenas rastros.<\/p>\n<h3>El ataque de Specter.js en LastPass<\/h3>\n<p>El ataque en el gestor de contrase\u00f1as LastPass fue diferente porque el c\u00f3digo para robar datos usando Spectre v1 estaba incrustado en una extensi\u00f3n maliciosa para Google Chrome. La extensi\u00f3n LastPass tambi\u00e9n se estaba ejecutando en el navegador. En algunos casos, las extensiones tambi\u00e9n se ejecutan en un proceso de navegador com\u00fan, lo que hace posible el robo de datos.<\/p>\n<p><span class=\"embed-youtube\" style=\"text-align:center; display: block;\"><iframe class=\"youtube-player\" type=\"text\/html\" width=\"640\" height=\"390\" src=\"https:\/\/www.youtube.com\/embed\/yz_s4k1zGwA?version=3&amp;rel=1&amp;fs=1&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent\" frameborder=\"0\" allowfullscreen=\"true\"><\/iframe><\/span><\/p>\n<h3>El ataque de Specter.js en Google Cloud Storage<\/h3>\n<p>Otro ejemplo utiliza ataques al almacenamiento en la nube de Google: una pesta\u00f1a del navegador contiene una p\u00e1gina maliciosa alojada en sites.google.com; otra permite a los usuarios cargar im\u00e1genes en su almacenamiento privado en el servicio G Suite. En esta situaci\u00f3n, un atacante puede utilizar c\u00f3digo malintencionado para obtener acceso a las im\u00e1genes.<\/p>\n<div id=\"attachment_26119\" style=\"width: 502px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-26119\" class=\"wp-image-26119 size-full\" src=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/88\/2021\/09\/01094337\/what-is-spookjs-2.png\" alt=\"Comparaci\u00f3n de la imagen original con la robada del almacenamiento en la nube de Google mediante un ataque Spook.js\" width=\"492\" height=\"216\"><p id=\"caption-attachment-26119\" class=\"wp-caption-text\">Imagen original (izquierda) y la que robaron del almacenamiento en la nube de Google mediante un ataque Spook.js. <a href=\"https:\/\/www.spookjs.com\/files\/spook-js.pdf\" target=\"_blank\" rel=\"noopener nofollow\">Fuente<\/a><\/p><\/div>\n<h2>Las limitaciones del m\u00e9todo<\/h2>\n<p>Los investigadores han demostrado c\u00f3mo se puede llevar a cabo el ataque en diferentes CPU, incluidas varias modernas de Intel e incluso la nueva M1 de Apple basada en ARM. En todos los casos, el ataque se realiz\u00f3 en Google Chrome. En principio, varias caracter\u00edsticas \u00fanicas del navegador hacen posible Spook.js. Otros navegadores basados en Chromium, como Microsoft Edge, tambi\u00e9n son vulnerables a este ataque.<\/p>\n<p>Sin embargo, existen ciertas limitaciones. Primero est\u00e1 la baja velocidad del robo de datos (400-600 bytes por segundo, dependiendo de la CPU), raz\u00f3n por la cual el archivo de destino en la \u00faltima demostraci\u00f3n es muy peque\u00f1o. Y, en segundo lugar, est\u00e1 la gran cantidad de errores al robar datos de la memoria cach\u00e9 de la CPU. Hasta un 4 % de los datos son err\u00f3neos; de ah\u00ed los artefactos en la copia robada de la imagen.<\/p>\n<p>El ataque no funciona en procesadores AMD ni en Mozilla Firefox, cuyo motor JavaScript funciona de manera diferente. Los investigadores no descartan la posibilidad de un ataque exitoso sobre los chips AMD y el navegador Firefox, pero para comprobarlo habr\u00e1 que profundizar en la materia.<\/p>\n<p>Por \u00faltimo, un ataque requiere cargar c\u00f3digo malicioso en una p\u00e1gina con el mismo nombre de dominio, como en el caso de blogs o hosting colectivos. Por tanto, es probable que la aplicaci\u00f3n de este m\u00e9todo no funcione en, por ejemplo, un banco.<\/p>\n<h2>No hay motivo para entrar en p\u00e1nico<\/h2>\n<p>El estudio de Spook.js es importante porque los investigadores, por primera vez, han podido demostrar una situaci\u00f3n bastante realista para la explotaci\u00f3n de una de las vulnerabilidades de Spectre. Sin embargo, las posibilidades de un ataque en el mundo real son bajas. En primer lugar, los desarrolladores de Google Chrome, reaccionando a esta investigaci\u00f3n, han reforzado el mecanismo para aislar los sitios cargados unos de otros. Y, en segundo lugar, los ciberdelincuentes tienen muchas formas m\u00e1s f\u00e1ciles de robar datos de los usuarios, desde el <em>malware<\/em> tradicional hasta la ingenier\u00eda social, y esta requiere un conocimiento serio del funcionamiento de bajo nivel de las CPU modernas.<\/p>\n<p>Como trabajo cient\u00edfico, Spook.js est\u00e1 configurado para alterar el panorama del <em>software<\/em> mediante la introducci\u00f3n de nuevas recomendaciones para la seguridad del sitio web (por ejemplo, los autores proponen mover las p\u00e1ginas de autorizaci\u00f3n a un nombre de dominio aislado). Los estudios posteriores pueden encontrar formas de facilitar un poco los ataques, pero lo m\u00e1s probable es que conduzcan a m\u00e1s rondas de mejoras de seguridad. Incluso aunque las vulnerabilidades de tipo Spectre puedan explotarse en masa, los medios de protecci\u00f3n ser\u00e1n los mismos que para cualquier <em>malware<\/em>. Los proveedores de seguridad simplemente agregar\u00e1n los nuevos tipos de ataques a la lista de los que ser\u00e1n monitorizados y bloqueados antes de su ejecuci\u00f3n.<\/p>\n<p>Tambi\u00e9n es posible que alg\u00fan d\u00eda los investigadores se encuentren con una caracter\u00edstica de las vulnerabilidades similares a las de Spectre que requieran una revisi\u00f3n importante de todo el ecosistema inform\u00e1tico moderno. Eso, sin embargo, sigue siendo poco probable. No olvidemos que se necesitaron tres a\u00f1os para pasar de una vulnerabilidad te\u00f3rica al primer ataque pr\u00e1ctico (e incluso entonces, es un ataque con muchas limitaciones).<\/p>\n<p>Spectre tambi\u00e9n se puede usar para ataques dirigidos en los que el beneficio potencial de los datos robados excede los costes de la operaci\u00f3n. Incluso aunque esa situaci\u00f3n sea relevante para tu organizaci\u00f3n, puedes dificultar f\u00e1cilmente los ataques utilizando diferentes navegadores para diferentes contenidos. Por ejemplo, no abras p\u00e1ginas y servicios web con informaci\u00f3n confidencial en el mismo navegador donde te entretienes <em>online<\/em>. La mejor opci\u00f3n es gestionar la informaci\u00f3n confidencial en un entorno aislado, en una m\u00e1quina virtual o simplemente en un dispositivo aislado.<\/p>\n<p><strong><input type=\"hidden\" class=\"category_for_banner\" value=\"ksc-trial-generic\"><\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>C\u00f3mo funciona Spook.js, el primer ataque pr\u00e1ctico basado en Spectre.<\/p>\n","protected":false},"author":665,"featured_media":26116,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1348],"tags":[551,13,16,2500,3346,784],"class_list":{"0":"post-26107","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-threats","8":"tag-ataques","9":"tag-chrome","10":"tag-google","11":"tag-spectre","12":"tag-spook-js","13":"tag-vulnerabilidades"},"hreflang":[{"hreflang":"es","url":"https:\/\/www.kaspersky.es\/blog\/what-is-spookjs\/26107\/"},{"hreflang":"en-in","url":"https:\/\/www.kaspersky.co.in\/blog\/what-is-spookjs\/23412\/"},{"hreflang":"en-ae","url":"https:\/\/me-en.kaspersky.com\/blog\/what-is-spookjs\/18890\/"},{"hreflang":"ar","url":"https:\/\/me.kaspersky.com\/blog\/what-is-spookjs\/9481\/"},{"hreflang":"en-us","url":"https:\/\/usa.kaspersky.com\/blog\/what-is-spookjs\/25477\/"},{"hreflang":"en-gb","url":"https:\/\/www.kaspersky.co.uk\/blog\/what-is-spookjs\/23554\/"},{"hreflang":"es-mx","url":"https:\/\/latam.kaspersky.com\/blog\/what-is-spookjs\/22989\/"},{"hreflang":"it","url":"https:\/\/www.kaspersky.it\/blog\/what-is-spookjs\/25703\/"},{"hreflang":"ru","url":"https:\/\/www.kaspersky.ru\/blog\/what-is-spookjs\/31583\/"},{"hreflang":"tr","url":"https:\/\/www.kaspersky.com.tr\/blog\/what-is-spookjs\/10139\/"},{"hreflang":"x-default","url":"https:\/\/www.kaspersky.com\/blog\/what-is-spookjs\/42202\/"},{"hreflang":"fr","url":"https:\/\/www.kaspersky.fr\/blog\/what-is-spookjs\/17812\/"},{"hreflang":"pt-br","url":"https:\/\/www.kaspersky.com.br\/blog\/what-is-spookjs\/18218\/"},{"hreflang":"de","url":"https:\/\/www.kaspersky.de\/blog\/what-is-spookjs\/27503\/"},{"hreflang":"ja","url":"https:\/\/blog.kaspersky.co.jp\/what-is-spookjs\/31722\/"},{"hreflang":"nl","url":"https:\/\/www.kaspersky.nl\/blog\/what-is-spookjs\/27672\/"},{"hreflang":"ru-kz","url":"https:\/\/blog.kaspersky.kz\/what-is-spookjs\/24395\/"},{"hreflang":"en-au","url":"https:\/\/www.kaspersky.com.au\/blog\/what-is-spookjs\/29770\/"},{"hreflang":"en-za","url":"https:\/\/www.kaspersky.co.za\/blog\/what-is-spookjs\/29565\/"}],"acf":[],"banners":"","maintag":{"url":"https:\/\/www.kaspersky.es\/blog\/tag\/vulnerabilidades\/","name":"vulnerabilidades"},"_links":{"self":[{"href":"https:\/\/www.kaspersky.es\/blog\/wp-json\/wp\/v2\/posts\/26107","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kaspersky.es\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kaspersky.es\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kaspersky.es\/blog\/wp-json\/wp\/v2\/users\/665"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kaspersky.es\/blog\/wp-json\/wp\/v2\/comments?post=26107"}],"version-history":[{"count":5,"href":"https:\/\/www.kaspersky.es\/blog\/wp-json\/wp\/v2\/posts\/26107\/revisions"}],"predecessor-version":[{"id":26121,"href":"https:\/\/www.kaspersky.es\/blog\/wp-json\/wp\/v2\/posts\/26107\/revisions\/26121"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kaspersky.es\/blog\/wp-json\/wp\/v2\/media\/26116"}],"wp:attachment":[{"href":"https:\/\/www.kaspersky.es\/blog\/wp-json\/wp\/v2\/media?parent=26107"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kaspersky.es\/blog\/wp-json\/wp\/v2\/categories?post=26107"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kaspersky.es\/blog\/wp-json\/wp\/v2\/tags?post=26107"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}