{"id":18218,"date":"2021-10-04T18:26:15","date_gmt":"2021-10-04T21:26:15","guid":{"rendered":"https:\/\/www.kaspersky.com.br\/blog\/?p=18218"},"modified":"2021-10-05T12:52:31","modified_gmt":"2021-10-05T15:52:31","slug":"what-is-spookjs","status":"publish","type":"post","link":"https:\/\/www.kaspersky.com.br\/blog\/what-is-spookjs\/18218\/","title":{"rendered":"Spook.js, uma hist\u00f3ria de ninar assustadora"},"content":{"rendered":"<p>Em compara\u00e7\u00e3o, um ataque de <a href=\"https:\/\/www.kaspersky.com.br\/blog\/brasileiros-maiores-alvos-phishing-mundo\/17045\/\" target=\"_blank\" rel=\"noopener\">phishing<\/a> comum funciona assim: voc\u00ea clica em um link, acessa uma p\u00e1gina maliciosa, insere alguns detalhes e um invasor os rouba. J\u00e1 nesse novo golpe o que acontece \u00e9: voc\u00ea clica em um link e um invasor rouba seus dados. Isso mesmo, hoje estamos falando sobre p\u00e1ginas maliciosas que exploram um recurso fundamental da CPU para roubar dados sem exigir que a v\u00edtima insira nada. E a vulnerabilidade em quest\u00e3o \u00e9 muito dif\u00edcil, sen\u00e3o imposs\u00edvel, de consertar.<\/p>\n<p>Em 2018, pesquisadores provaram que o cen\u00e1rio era teoricamente poss\u00edvel, revelando as duas primeiras variantes da vulnerabilidade <a href=\"https:\/\/www.kaspersky.com.br\/blog\/35c3-spectre-meltdown-2019\/11289\/\" target=\"_blank\" rel=\"noopener\">Spectre<\/a>. Tr\u00eas anos depois, em setembro de 2021, o mundo viu o primeiro ataque na vida real usando o Spectre v1. Conhecido como Spook.js, o conceito de ataque \u00e9 complicado, mas vamos tentar simplificar.<\/p>\n<h2>Hist\u00f3rico do Spectre v1<\/h2>\n<p>Not\u00edcias dos dois primeiros ataques desta fam\u00edlia \u2013 Spectre e Meltdown \u2013 surgiram em 2018. Os ataques exploraram o mecanismo de previs\u00e3o de ramifica\u00e7\u00f5es, que foi projetado para acelerar a execu\u00e7\u00e3o de comandos, encontrado em todas as CPUs modernas.<\/p>\n<div id=\"attachment_18220\" style=\"width: 730px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" aria-describedby=\"caption-attachment-18220\" class=\"wp-image-18220 size-full\" src=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/94\/2021\/10\/04181801\/what-is-spookjs-1.png\" alt=\"Logotipo da vulnerabilidade Spectre\" width=\"720\" height=\"380\"><p id=\"caption-attachment-18220\" class=\"wp-caption-text\">Logotipo da vulnerabilidade Spectre<\/p><\/div>\n<p>\u00a0<\/p>\n<p>Quando um usu\u00e1rio insere uma senha para fazer login em um site, se a senha estiver correta, um conjunto de instru\u00e7\u00f5es \u00e9 executado. Caso contr\u00e1rio, outro conjunto \u00e9 acionado. No entanto \u2013 e \u00e9 aqui que a previs\u00e3o de desvio entra em a\u00e7\u00e3o \u2013 antes de receber a resposta, a CPU come\u00e7a a executar o conjunto de instru\u00e7\u00f5es que acha que provavelmente precisar\u00e1.<\/p>\n<p>Em nosso exemplo, se a senha foi inserida corretamente cem vezes antes, a CPU assumir\u00e1 que desta vez n\u00e3o ser\u00e1 diferente. Se adivinhar corretamente, o usu\u00e1rio obt\u00e9m um aumento de desempenho. Caso contr\u00e1rio, a CPU descarta as instru\u00e7\u00f5es executadas especulativamente e executa o outro conjunto.<\/p>\n<p>Em um ataque na vulnerabilidade Spectre, \u00e9 feita uma tentativa de ler uma \u00e1rea de dados \u00e0 qual o programa n\u00e3o tem acesso. No primeiro est\u00e1gio do ataque, v\u00e1rias chamadas s\u00e3o feitas para \u00e1reas de dados de acesso aberto, por meio das quais o sistema de previs\u00e3o de ramifica\u00e7\u00e3o \u00e9 \u201ctreinado\u201d para executar tamb\u00e9m a opera\u00e7\u00e3o de leitura proibida. Usando a previs\u00e3o de ramifica\u00e7\u00e3o, a CPU realiza a opera\u00e7\u00e3o com anteced\u00eancia porque \u00e9 usada para o programa solicitar a leitura de dados que realmente tem permiss\u00e3o para ler. Mas uma verifica\u00e7\u00e3o revela que o programa est\u00e1 proibido de acessar os dados, ent\u00e3o os c\u00e1lculos executados especulativamente s\u00e3o descartados. At\u00e9 agora, tudo bem \u2013 mas os dados lidos pela CPU s\u00e3o armazenados por algum tempo no cache, a pr\u00f3pria mem\u00f3ria da CPU.<\/p>\n<p>Em seguida, vem a parte mais interessante: sem nenhuma maneira de ler os dados confidenciais do cache da CPU diretamente, o processo malicioso implanta um ataque de canal lateral para roub\u00e1-lo. Isso envolve medir a velocidade de acesso a certas informa\u00e7\u00f5es. Se for relativamente pequeno, isso significa que os dados est\u00e3o localizados no cache. Se for grande, \u00e9 carregado da RAM normal. Uma sequ\u00eancia definida de tentativas de leitura resulta em um vazamento das informa\u00e7\u00f5es secretas.<br>\nO resultado \u00e9 uma falha fundamental da CPU, cuja \u00fanica corre\u00e7\u00e3o \u00e9 desabilitar completamente a previs\u00e3o de ramifica\u00e7\u00e3o, afetando seriamente o desempenho. Dito isso, os ataques Spectre t\u00eam muitas limita\u00e7\u00f5es:<\/p>\n<p>\u25cf O invasor deve ser capaz de executar o c\u00f3digo do programa no computador de destino ou dispositivo m\u00f3vel;<br>\n\u25cf O ataque requer um programa de destino espec\u00edfico codificado de forma a criar as condi\u00e7\u00f5es para um ataque bem-sucedido;<br>\n\u25cf Mesmo se o ataque for bem-sucedido, a extra\u00e7\u00e3o de dados \u00e9 extremamente lenta \u2013 dezenas ou centenas de bytes por segundo \u2013 e os erros de leitura est\u00e3o longe de ser imposs\u00edveis;<br>\n\u2022 Em geral, roubar os dados secretos pretendidos, como senhas, chaves de criptografia e assim por diante, requer uma combina\u00e7\u00e3o de condi\u00e7\u00f5es.<\/p>\n<h2>Spook.js \u2013 aplica\u00e7\u00e3o da vida real do Spectre v1<\/h2>\n<p>Podemos concluir que o Spectre n\u00e3o \u00e9 t\u00e3o perigoso. Afinal, se um invasor pode executar c\u00f3digo em um computador de destino, seria muito mais simples explorar uma das muitas vulnerabilidades no sistema operacional ou programas instalados para escalar privil\u00e9gios e roubar dados.<\/p>\n<p>Isso \u00e9 verdade, mas as p\u00e1ginas da Web modernas tamb\u00e9m cont\u00eam grandes quantidades de c\u00f3digo de programa que s\u00e3o executados no computador do usu\u00e1rio, no navegador. \u00c9 assim que os ataques Spook.js exploram a vulnerabilidade do Specter v1: uma p\u00e1gina infectada \u00e9 carregada, o navegador executa o c\u00f3digo e o cibercriminoso rouba dados confidenciais.<\/p>\n<p>Os autores do <a href=\"https:\/\/www.spookjs.com\/\" target=\"_blank\" rel=\"noopener nofollow\">relat\u00f3rio<\/a> demonstraram alguns ataques pr\u00e1ticos. Primeiro, eles roubaram uma senha de usu\u00e1rio do Tumblr. Em segundo, dados do Lastpass. Terceiro, interceptaram uma imagem carregada pelo usu\u00e1rio de um armazenamento privado em um servidor do Google.<\/p>\n<p>Um recurso do navegador Google Chrome tornou tudo poss\u00edvel. Desde o lan\u00e7amento de informa\u00e7\u00f5es sobre Spectre, os desenvolvedores do Chrome tomaram medidas para evitar ataques potenciais, for\u00e7ando os sites a carregar de forma isolada. Como cada site cria seu pr\u00f3prio processo, o c\u00f3digo malicioso em uma p\u00e1gina n\u00e3o pode ser usado para roubar dados de outro recurso. Mas h\u00e1 uma exce\u00e7\u00e3o: v\u00e1rias p\u00e1ginas do mesmo site ou dom\u00ednio s\u00e3o agrupadas em um processo de navegador comum. Se o c\u00f3digo malicioso (escrito em JavaScript, da\u00ed o .js no nome do ataque) for executado em um deles, os dados em outras p\u00e1ginas podem ser roubados.<\/p>\n<h3>Ataque Spectre.js no Tumblr<\/h3>\n<p>Como um blog coletivo, o Tumblr pode hospedar c\u00f3digo malicioso, pelo menos em teoria. Dessa forma, com uma p\u00e1gina maliciosa aberta em uma guia, se um usu\u00e1rio tentar fazer login em sua conta no servi\u00e7o em outra guia, o navegador salva e preenche automaticamente o nome de usu\u00e1rio e a senha \u2013 que o c\u00f3digo malicioso pode ent\u00e3o roubar.<\/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>Ao explorar a vulnerabilidade do Spectre, um ataque pode interagir tangencialmente com alguma outra guia do mesmo site e roubar dados por meios indiretos. Um ataque bem-sucedido usando essa abordagem quase n\u00e3o deixa rastros.<\/p>\n<h3>Ataque de Specter.js em LastPass<\/h3>\n<p>O ataque ao gerenciador de senhas LastPass foi diferente, pois o c\u00f3digo para roubar dados usando o Specter v1 foi embutido em uma extens\u00e3o maliciosa para o Google Chrome. A extens\u00e3o LastPass tamb\u00e9m estava em execu\u00e7\u00e3o no navegador. Em alguns casos, as extens\u00f5es tamb\u00e9m s\u00e3o executadas em um processo de navegador comum, tornando poss\u00edvel o roubo de dados.<\/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>Ataque Specter.js no Google Cloud Storage<\/h3>\n<p>Outro exemplo usa ataques ao armazenamento em nuvem do Google: uma guia do navegador cont\u00e9m uma p\u00e1gina maliciosa hospedada em sites.google.com; outra permite que os usu\u00e1rios fa\u00e7am upload de imagens para seu armazenamento privado no servi\u00e7o G Suite. Nesse cen\u00e1rio, um invasor pode usar c\u00f3digo malicioso para obter acesso \u00e0s imagens.<\/p>\n<div id=\"attachment_18221\" style=\"width: 502px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" aria-describedby=\"caption-attachment-18221\" class=\"wp-image-18221 size-full\" src=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/94\/2021\/10\/04182341\/what-is-spookjs-2.png\" alt=\"Imagem original (\u00e0 esquerda) e aquela roubada do armazenamento em nuvem do Google usando um ataque Spook.js.\" width=\"492\" height=\"216\"><p id=\"caption-attachment-18221\" class=\"wp-caption-text\">Imagem original (\u00e0 esquerda) e aquela roubada do armazenamento em nuvem do Google usando um ataque Spook.js.<\/p><\/div>\n<h2><\/h2>\n<h2>Limita\u00e7\u00f5es do m\u00e9todo<\/h2>\n<p>Os pesquisadores mostraram como o ataque pode ser realizado em diferentes CPUs, incluindo v\u00e1rios processadores modernos da Intel e at\u00e9 mesmo o novo Apple M1 baseado em ARM. Em todos os casos, o ataque foi realizado no Google Chrome. Em princ\u00edpio, v\u00e1rios recursos exclusivos do navegador tornam o Spook.js poss\u00edvel. Outros navegadores baseados em Chromium, como o Microsoft Edge, tamb\u00e9m s\u00e3o vulner\u00e1veis a esse ataque.<\/p>\n<p>No entanto, existem certas limita\u00e7\u00f5es. A primeira \u00e9 a baixa velocidade de roubo de dados (400\u2013600 bytes por segundo, dependendo da CPU), raz\u00e3o pela qual o arquivo de destino na \u00faltima demonstra\u00e7\u00e3o \u00e9 muito pequeno. A segunda \u00e9 o grande n\u00famero de erros ao roubar dados do cache da CPU. At\u00e9 4% dos dados est\u00e3o errados; da\u00ed os artefatos na c\u00f3pia roubada da imagem.<\/p>\n<p>O ataque n\u00e3o funciona em processadores AMD ou no Mozilla Firefox, cujo JavaScript funciona de forma diferente. Os pesquisadores n\u00e3o est\u00e3o descartando a possibilidade de um ataque bem-sucedido aos chips AMD e ao navegador Firefox, mas verificar isso exigir\u00e1 mais estudos.<\/p>\n<p>Por fim, um ataque requer o upload de um c\u00f3digo malicioso para uma p\u00e1gina com o mesmo nome de dom\u00ednio, como no caso de blogs ou hospedagem coletiva. Aplicar esse m\u00e9todo, digamos, ao site de um banco provavelmente n\u00e3o funcionar\u00e1.<\/p>\n<h2>N\u00e3o h\u00e1 motivo para p\u00e2nico<\/h2>\n<p>O estudo do Spook.js \u00e9 importante porque os pesquisadores, pela primeira vez, conseguiram demonstrar um cen\u00e1rio bastante realista para a explora\u00e7\u00e3o de uma das vulnerabilidades do Spectre. No entanto, as chances de um ataque no mundo real s\u00e3o baixas. Primeiro, os desenvolvedores do Google Chrome, com base nessa pesquisa, refor\u00e7aram o mecanismo para isolar sites carregados uns dos outros. Em segundo lugar, os cibercriminosos t\u00eam muitas maneiras mais f\u00e1ceis de roubar dados do usu\u00e1rio, do malware tradicional \u00e0 engenharia social, e isso exige um conhecimento s\u00e9rio do funcionamento de baixo n\u00edvel das CPUs atuais.<\/p>\n<p>Como um trabalho cient\u00edfico, o Spook.js \u00e9 definido para alterar o cen\u00e1rio do software por meio da introdu\u00e7\u00e3o de novas recomenda\u00e7\u00f5es para seguran\u00e7a de sites (por exemplo, os autores prop\u00f5em mover as p\u00e1ginas de autoriza\u00e7\u00e3o para um nome de dom\u00ednio separado). Estudos subsequentes podem encontrar maneiras de tornar os ataques um pouco mais f\u00e1ceis, mas muito provavelmente eles levar\u00e3o a mais rodadas de aprimoramentos de seguran\u00e7a. Mesmo que as vulnerabilidades do tipo Spectre possam ser exploradas em massa, os meios de prote\u00e7\u00e3o ser\u00e3o os mesmos de qualquer malware. Os fornecedores de seguran\u00e7a simplesmente adicionar\u00e3o os novos tipos de ataques \u00e0 lista daqueles a serem monitorados e bloqueados antes da execu\u00e7\u00e3o.<\/p>\n<p>Tamb\u00e9m \u00e9 poss\u00edvel que um dia os pesquisadores encontrem um recurso de vulnerabilidades no Spectrque exige uma grande reformula\u00e7\u00e3o de todo o ecossistema de TI moderno. Isso, no entanto, permanece improv\u00e1vel. N\u00e3o vamos esquecer que levou tr\u00eas anos para passar de uma vulnerabilidade te\u00f3rica para o primeiro ataque pr\u00e1tico (e mesmo assim, \u00e9 um ataque com muitas limita\u00e7\u00f5es).<\/p>\n<p>O Spectre tamb\u00e9m pode ser usado para ataques direcionados nos quais o benef\u00edcio potencial dos dados roubados excede os custos da opera\u00e7\u00e3o. Mesmo que esse cen\u00e1rio seja relevante para sua organiza\u00e7\u00e3o, voc\u00ea pode facilmente tornar os ataques mais dif\u00edceis usando diferentes navegadores para diferentes conte\u00fados. Por exemplo, n\u00e3o abra p\u00e1ginas e servi\u00e7os web com informa\u00e7\u00f5es confidenciais no mesmo navegador em que obt\u00e9m seu entretenimento online. O ideal \u00e9 lidar com dados sens\u00edveis em um ambiente isolado, em uma m\u00e1quina virtual ou simplesmente em um dispositivo separado.<\/p>\n<input type=\"hidden\" class=\"category_for_banner\" value=\"ksc-trial-generic\">\n","protected":false},"excerpt":{"rendered":"<p>Como o Spook.js, primeiro ataque pr\u00e1tico por Spectre, funciona.<\/p>\n","protected":false},"author":665,"featured_media":18219,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1260],"tags":[218,28,30,33,1377,2787,267],"class_list":{"0":"post-18218","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-threats","8":"tag-ameacas","9":"tag-ataques","10":"tag-chrome","11":"tag-google","12":"tag-spectre","13":"tag-spook-js","14":"tag-vulnerabilidades"},"hreflang":[{"hreflang":"pt-br","url":"https:\/\/www.kaspersky.com.br\/blog\/what-is-spookjs\/18218\/"},{"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":"es","url":"https:\/\/www.kaspersky.es\/blog\/what-is-spookjs\/26107\/"},{"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":"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.com.br\/blog\/tag\/ameacas\/","name":"amea\u00e7as"},"_links":{"self":[{"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/posts\/18218","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/users\/665"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/comments?post=18218"}],"version-history":[{"count":3,"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/posts\/18218\/revisions"}],"predecessor-version":[{"id":18256,"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/posts\/18218\/revisions\/18256"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/media\/18219"}],"wp:attachment":[{"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/media?parent=18218"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/categories?post=18218"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/tags?post=18218"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}