{"id":25703,"date":"2021-10-04T11:30:31","date_gmt":"2021-10-04T09:30:31","guid":{"rendered":"https:\/\/www.kaspersky.it\/blog\/?p=25703"},"modified":"2021-10-04T17:37:33","modified_gmt":"2021-10-04T15:37:33","slug":"what-is-spookjs","status":"publish","type":"post","link":"https:\/\/www.kaspersky.it\/blog\/what-is-spookjs\/25703\/","title":{"rendered":"Spook.js, una spaventosa storia della buonanotte"},"content":{"rendered":"<p>In confronto, un attacco di phishing ha senso: si clicca su un link, si arriva su una pagina dannosa, si inseriscono alcuni dettagli e un criminale informatico li ruba. Qui, invece, funziona diversamente: fate clic su un link e un cyber criminale ruba i vostri dati. Proprio cos\u00ec, oggi parliamo di pagine dannose che sfruttano una caratteristica fondamentale della CPU per rubare dati senza che la vittima inserisca nulla. La vulnerabilit\u00e0 in questione \u00e8 molto difficile, se non impossibile, da risolvere.<\/p>\n<p>Nel 2018, i ricercatori hanno dimostrato che il tutto era teoricamente possibile, svelando le prime due varianti della vulnerabilit\u00e0 Spectre. Tre anni dopo, a settembre 2021, si \u00e8 verificato il primo attacco in condizioni reali utilizzando Spectre v1: conosciuto come Spook.js. Il concetto di attacco \u00e8 complicato, ma cercheremo di renderlo comprensibile.<\/p>\n<h2>I precedenti di Spectre v1<\/h2>\n<p>La notizia dei primi due attacchi di questa famiglia, Spectre e Meltdown, \u00e8 <a href=\"https:\/\/www.kaspersky.it\/blog\/two-severe-vulnerabilities-found-in-intels-hardware\/14880\/\" target=\"_blank\" rel=\"noopener\">scoppiata nel 2018<\/a>. Gli attacchi hanno sfruttato il meccanismo della predizione delle diramazioni, progettato per accelerare l\u2019esecuzione dei comandi, presente in tutte le moderne CPU.<\/p>\n<div id=\"attachment_25707\" style=\"width: 730px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-25707\" class=\"wp-image-25707 size-full\" src=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/89\/2021\/10\/04112349\/what-is-spookjs-1.png\" alt=\"\" width=\"720\" height=\"380\"><p id=\"caption-attachment-25707\" class=\"wp-caption-text\">Logo della vulnerabilit\u00e0 Spectre<\/p><\/div>\n<p>Quando un utente inserisce una password per accedere a un sito web, se la password \u00e8 corretta, si dovranno seguire delle istruzioni. In caso contrario, si esegue un\u2019alternativa. Tuttavia, ed \u00e8 qui che entra in gioco la previsione delle diramazioni, prima di ricevere la risposta, la CPU inizia ad eseguire il set di istruzioni che considera pi\u00f9 necessario.<\/p>\n<p>Nel nostro esempio, se la password \u00e8 stata inserita correttamente un centinaio di volte prima, la CPU assumer\u00e0 che questa volta non sar\u00e0 diversa. Se indovina correttamente, l\u2019utente ottiene un aumento delle prestazioni. In caso contrario, la CPU scarta le istruzioni eseguite speculativamente ed esegue l\u2019alternativa.<\/p>\n<p>In un attacco di vulnerabilit\u00e0 Spectre, viene fatto un tentativo di leggere un\u2019area dati a cui il programma non ha accesso. Nella prima fase dell\u2019attacco, vengono effettuate pi\u00f9 chiamate ad aree di dati ad accesso aperto, per cui il sistema di predizione delle diramazioni viene \u201cpreparato\u201d ad eseguire anche l\u2019operazione di lettura proibita. Usando la predizione delle diramazioni, la CPU esegue l\u2019operazione in anticipo perch\u00e9 \u00e8 abituata al programma che richiede la lettura di dati che, in realt\u00e0, pu\u00f2 effettuare. Ma un controllo rivela che al programma \u00e8 proibito l\u2019accesso ai dati, quindi i calcoli eseguiti speculativamente vengono scartati. Fin qui tutto bene, ma i dati letti dalla CPU sono conservati per un certo tempo nella cache, la memoria propria della CPU.<\/p>\n<p>Poi arriva la parte pi\u00f9 interessante: non avendo modo di leggere direttamente i dati confidenziali dalla cache della CPU, il processo dannoso mette in atto un cosiddetto attacco side-channel per rubarli. Questo comporta la misurazione della velocit\u00e0 di accesso a certe informazioni. Se \u00e8 relativamente basso, significa che i dati si trovano nella cache. Se non lo \u00e8, viene caricato dalla normale RAM. Una sequenza impostata di tentativi di lettura si traduce in una fuga di informazioni segrete.<\/p>\n<p>Il risultato \u00e8 un difetto fondamentale della CPU la cui unica soluzione \u00e8 disabilitare completamente la predizione delle diramazioni, influenzando cos\u00ec seriamente le prestazioni. Detto questo, gli attacchi Specter hanno molte limitazioni:<\/p>\n<ul>\n<li>Il criminale informatico deve essere in grado di eseguire il codice del programma sul computer o sul dispositivo mobile bersaglio;<\/li>\n<li>L\u2019attacco richiede uno specifico programma di destinazione codificato in modo da creare le condizioni per un attacco di successo;<\/li>\n<li>Anche se l\u2019attacco ha successo, l\u2019estrazione dei dati \u00e8 estremamente lenta, decine o centinaia di byte al secondo, e gli errori di lettura sono tutt\u2019altro che impossibili;<\/li>\n<li>In generale, rubare i dati segreti previsti, come password, chiavi di cifratura e cos\u00ec via, richiede una serie di condizioni.<\/li>\n<\/ul>\n<h2>Spook.js, applicazione reale di Spectre v1<\/h2>\n<p>Potremmo concludere che Spectre non \u00e8 poi cos\u00ec pericoloso. Dopo tutto, se un cyber criminale potesse eseguire il codice su un computer in particolare, sfruttare una delle tante vulnerabilit\u00e0 del sistema operativo o dei programmi installati per aumentare i privilegi e rubare dati sarebbe molto pi\u00f9 semplice.<\/p>\n<p>Tuttavia, le moderne pagine web contengono anche grandi quantit\u00e0 di codice di programma che viene eseguito sul computer dell\u2019utente, nel browser. Ed \u00e8 proprio come gli attacchi Spook.js sfruttano la vulnerabilit\u00e0 Spectre v1: si carica una pagina infetta, il browser esegue il codice e il criminale informatico ruba dati riservati.<\/p>\n<p>Gli autori <a href=\"https:\/\/www.spookjs.com\" target=\"_blank\" rel=\"noopener nofollow\">del report<\/a> hanno dimostrato alcuni attacchi pratici. In primo luogo, hanno rubato una password utente da Tumblr. In secondo luogo, hanno rubato dati da Lastpass. Infine, hanno intercettato un\u2019immagine caricata dall\u2019utente dallo storage privato su un server di Google.<\/p>\n<p>Una caratteristica del browser Google Chrome ha reso tutto questo possibile. Dal rilascio delle informazioni su Spectre, gli sviluppatori di Chrome hanno preso misure per scongiurare potenziali attacchi costringendo i siti web a caricare in isolamento. Poich\u00e9 ogni sito web crea il proprio processo, il codice dannoso su una pagina non pu\u00f2 essere usato per rubare dati da un\u2019altra risorsa. Ma c\u2019\u00e8 un\u2019eccezione: pi\u00f9 pagine dello stesso sito o dominio sono raggruppate in un processo comune del browser. Se il codice dannoso (scritto in JavaScript, da cui il .js nel nome dell\u2019attacco) viene eseguito su una di esse, i dati sulle altre pagine possono essere rubati.<\/p>\n<h3>Attacco Spectre.js su Tumblr<\/h3>\n<p>Come blog collettivo, Tumblr pu\u00f2 ospitare codice dannoso, almeno in teoria. In questo modo, con una pagina dannosa aperta in una scheda, se un utente cerca di accedere al proprio account sul servizio in un\u2019altra scheda, il browser salva e compila automaticamente il nome utente e la password, che il codice malevolo pu\u00f2 quindi rubare.<\/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>Sfruttando la vulnerabilit\u00e0 Spectre, un attacco pu\u00f2 interagire indirettamente con un\u2019altra scheda dello stesso sito e rubare dati con mezzi indiretti. Un attacco riuscito con questo approccio non lascia quasi nessuna traccia.<\/p>\n<h3>Attacco Specter.js a LastPass<\/h3>\n<p>L\u2019attacco al gestore di password LastPass era diverso in quanto il codice per rubare i dati utilizzando Spectre v1 era incorporato in un\u2019estensione dannosa per Google Chrome. L\u2019estensione LastPass era anche in esecuzione nel browser. In alcuni casi, le estensioni sono anche eseguite in un processo comune del browser, rendendo possibile il furto di dati.<\/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<p>\u00a0<\/p>\n<h3>Attacco Specter.js sullo spazio di archiviazione Google Cloud<\/h3>\n<p>Un altro esempio riguarda gli attacchi allo spazio di archiviazione cloud di Google: una scheda del browser contiene una pagina dannosa ospitata su sites.google.com; un\u2019altra permette agli utenti di caricare immagini sul loro archivio privato nel servizio G Suite. In questo scenario, un attaccante pu\u00f2 utilizzare un codice dannoso per ottenere l\u2019accesso alle immagini.<\/p>\n<div id=\"attachment_25708\" style=\"width: 502px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-25708\" class=\"wp-image-25708 size-full\" src=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/89\/2021\/10\/04112540\/what-is-spookjs-2.png\" alt=\"Confronto dell'immagine originale con quella rubata dallo spazio di archiviazione cloud di Google usando un attacco Spook.js\" width=\"492\" height=\"216\"><p id=\"caption-attachment-25708\" class=\"wp-caption-text\">Immagine originale (a sinistra) e quella rubata dallo spazio di archiviazione di Google utilizzando un attacco Spook.js. <a href=\"https:\/\/www.spookjs.com\/files\/spook-js.pdf\" target=\"_blank\" rel=\"noopener nofollow\">Fonte<\/a><\/p><\/div>\n<h2>Limiti del metodo<\/h2>\n<p>I ricercatori hanno mostrato come l\u2019attacco pu\u00f2 essere effettuato su diverse CPU, tra cui diverse moderne di Intel e anche il nuovo Apple M1 basato su ARM. In tutti i casi, l\u2019attacco \u00e8 stato compiuto utilizzando Google Chrome. In linea di principio, diverse caratteristiche uniche del browser rendono Spook.js possibile. Anche altri browser basati su Chromium, come Microsoft Edge, sono vulnerabili a questo attacco.<\/p>\n<p>Tuttavia, ci sono alcune limitazioni. Il primo \u00e8 la bassa velocit\u00e0 del furto di dati (400-600 byte al secondo, a seconda della CPU), motivo per cui il file di destinazione nell\u2019ultima demo \u00e8 molto piccolo. Il secondo \u00e8 il gran numero di errori quando si rubano dati dalla cache della CPU. Fino al 4% dei dati \u00e8 errato; da qui gli artefatti nella copia rubata dell\u2019immagine.<\/p>\n<p>L\u2019attacco non funziona sui processori AMD o Mozilla Firefox, il cui motore JavaScript funziona in modo diverso. I ricercatori non escludono la possibilit\u00e0 di un attacco riuscito sui chip AMD e sul browser Firefox, ma la verifica di ci\u00f2 richieder\u00e0 ulteriori studi.<\/p>\n<p>Infine, un attacco richiede il caricamento di codice dannoso su una pagina con lo stesso nome di dominio, come nel caso di blog collettivi o hosting. Applicare questo metodo, per esempio, al sito web di una banca probabilmente non funzioner\u00e0.<\/p>\n<h2>Non andate nel panico<\/h2>\n<p>Lo studio di Spook.js \u00e8 importante perch\u00e9 i ricercatori, per la prima volta, sono stati in grado di dimostrare uno scenario abbastanza realistico per lo sfruttamento di una delle vulnerabilit\u00e0 Spectre. Tuttavia, le possibilit\u00e0 di un attacco nel mondo reale sono basse. In primo luogo, gli sviluppatori di Google Chrome, sulla base di questa ricerca, hanno rafforzato il meccanismo di isolamento dei siti caricati tra loro. In secondo luogo, i criminali informatici hanno molti modi pi\u00f9 semplici per rubare i dati degli utenti, dal malware tradizionale all\u2019ingegneria sociale, e questo richiede una seria conoscenza del funzionamento di basso livello delle moderne CPU.<\/p>\n<p>Come lavoro scientifico, Spook.js \u00e8 destinato a modificare il panorama del software attraverso l\u2019introduzione di nuove raccomandazioni per la sicurezza dei siti web (per esempio, gli autori propongono di spostare le pagine di autorizzazione in un nome di dominio separato). Gli studi successivi potrebbero trovare modi per rendere gli attacchi un po\u2019 pi\u00f9 facili, ma molto probabilmente porteranno a pi\u00f9 cicli di miglioramenti della sicurezza. Anche se le vulnerabilit\u00e0 di tipo Spectre possono essere sfruttate in massa, i mezzi di protezione saranno gli stessi di qualsiasi malware. I fornitori di sicurezza aggiungeranno semplicemente i nuovi tipi di attacchi alla lista di quelli da monitorare e bloccare prima dell\u2019esecuzione.<\/p>\n<p>\u00c8 anche possibile che un giorno i ricercatori si imbattano in una caratteristica di vulnerabilit\u00e0 simile a quella di Spectre che richiede una grande rielaborazione dell\u2019intero ecosistema IT moderno. Questo, tuttavia, rimane improbabile. Non dimentichiamo che ci sono voluti tre anni per passare da una vulnerabilit\u00e0 teorica al primo attacco pratico (e anche allora, \u00e8 un attacco con molti limiti).<\/p>\n<p>Spectre pu\u00f2 anche essere usato per attacchi mirati in cui il potenziale beneficio dei dati rubati supera i costi dell\u2019operazione. Anche se questo scenario \u00e8 rilevante per la vostra organizzazione, potete facilmente rendere gli attacchi pi\u00f9 difficili utilizzando browser diversi per contenuti diversi. Per esempio, non aprite pagine e servizi web con informazioni sensibili nello stesso browser dove ottenete il vostro intrattenimento online. Idealmente, gestite le informazioni riservate in un ambiente isolato, in una macchina virtuale, o semplicemente su un dispositivo separato.<\/p>\n<p><strong><input type=\"hidden\" class=\"category_for_banner\" value=\"ksc-trial\"><\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Come funziona Spook.js, il primo attacco pratico basato su Spectre.<\/p>\n","protected":false},"author":665,"featured_media":25704,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2641],"tags":[20,30,33,2693,3579,584],"class_list":{"0":"post-25703","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-threats","8":"tag-attacchi","9":"tag-chrome","10":"tag-google","11":"tag-spectre","12":"tag-spook-js","13":"tag-vulnerabilita"},"hreflang":[{"hreflang":"it","url":"https:\/\/www.kaspersky.it\/blog\/what-is-spookjs\/25703\/"},{"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":"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.it\/blog\/tag\/vulnerabilita\/","name":"vulnerabilit\u00e0"},"_links":{"self":[{"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/posts\/25703","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/users\/665"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/comments?post=25703"}],"version-history":[{"count":3,"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/posts\/25703\/revisions"}],"predecessor-version":[{"id":25706,"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/posts\/25703\/revisions\/25706"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/media\/25704"}],"wp:attachment":[{"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/media?parent=25703"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/categories?post=25703"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/tags?post=25703"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}