{"id":28286,"date":"2023-12-11T14:11:59","date_gmt":"2023-12-11T12:11:59","guid":{"rendered":"https:\/\/www.kaspersky.it\/blog\/?p=28286"},"modified":"2023-12-11T14:11:59","modified_gmt":"2023-12-11T12:11:59","slug":"vulnerability-in-hot-cryptowallets-from-2011-2015","status":"publish","type":"post","link":"https:\/\/www.kaspersky.it\/blog\/vulnerability-in-hot-cryptowallets-from-2011-2015\/28286\/","title":{"rendered":"Randstorm: le vulnerabilit\u00e0 dei cripto wallet degli anni 2010"},"content":{"rendered":"<p>Alcuni ricercatori hanno scoperto nella libreria BitcoinJS diverse vulnerabilit\u00e0 che potrebbero esporre alle violazioni i portafogli Bitcoin creati online un decennio fa. Il problema di fondo \u00e8 che le chiavi private per questi portafogli di criptovaluta, o cripto wallet, sono state generate in modo molto pi\u00f9 prevedibile di quanto gli stessi sviluppatori della libreria non si aspettassero.<\/p>\n<h2>Vulnerabilit\u00e0 e conseguenze di Randstorm<\/h2>\n<p>Partiamo dall\u2019inizio. I ricercatori di Unciphered, una societ\u00e0 specializzata nel recupero dell\u2019accesso ai cripto wallet, hanno <a href=\"https:\/\/www.unciphered.com\/blog\/randstorm-you-cant-patch-a-house-of-cards\" target=\"_blank\" rel=\"noopener nofollow\">scoperto e descritto<\/a> una serie di vulnerabilit\u00e0 nella libreria JavaScript BitcoinJS utilizzata da molte piattaforme di criptovaluta online. Tra questi servizi ce ne sono alcuni molto popolari, in particolare Blockchain.info, ora noto come Blockchain.com. I ricercatori hanno soprannominato questo insieme di vulnerabilit\u00e0 Randstorm.<\/p>\n<p>Nel 2014 le vulnerabilit\u00e0 riscontrate nella libreria BitcoinJS sono state risolte. Tuttavia, il problema interessa anche il prodotto dell\u2019utilizzo di questa libreria: i cripto wallet creati con BitcoinJS all\u2019inizio degli anni 2010 potrebbero non essere sicuri, poich\u00e9 trovarne le chiavi private \u00e8 molto pi\u00f9 facile del previsto, nonostante il sistema di criptaggio Bitcoin sottostante.<\/p>\n<p>Secondo le stime dei ricercatori, a causa di Randstorm sono potenzialmente a rischio diversi milioni di portafogli, per un totale di circa 1,4 milioni di Bitcoin. I ricercatori ritengono inoltre che il 3-5% dei portafogli considerati <em>potenzialmente vulnerabili<\/em> agli attacchi, sia <em>effettivamente vulnerabile<\/em> in situazioni reali. In base al tasso di cambio in vigore al momento della pubblicazione di questo articolo (circa 36.500 dollari per 1 Bitcoin) gli autori degli attacchi in grado di sfruttare Randstorm potrebbero mettere le mani su un bottino del valore di 1,5-2,5 miliardi di dollari.<\/p>\n<p>I ricercatori non si sono limitati a sostenere che le vulnerabilit\u00e0 Randstorm possono effettivamente essere utilizzate per attaccare i portafogli di criptovaluta: hanno anche utilizzato queste vulnerabilit\u00e0 per ripristinare l\u2019accesso a diversi portafogli creati su Blockchain.info prima del marzo 2012. Per motivi etici, tuttavia, hanno evitato di pubblicare il progetto PoC (Proof-of-Concept) dell\u2019attacco, perch\u00e9 avrebbe esposto direttamente al rischio di furto decine di migliaia di portafogli di criptovaluta.<\/p>\n<p>I ricercatori hanno quindi contattato i servizi di criptovaluta online noti per aver utilizzato una versione vulnerabile della libreria BitcoinJS, che a loro volta hanno informato i clienti potenzialmente a rischio di un attacco basato sulle vulnerabilit\u00e0 Randstorm.<\/p>\n<h2>La natura delle vulnerabilit\u00e0 Randstorm<\/h2>\n<p>Vediamo ora in dettaglio come funzionano in pratica queste vulnerabilit\u00e0. Al centro della sicurezza di un portafoglio Bitcoin c\u2019\u00e8 la chiave privata. Come ogni moderno sistema di criptaggio, Bitcoin fa affidamento sul fatto che questa chiave sia segreta e non decifrabile. E, come in ogni moderno sistema di criptaggio, questo comporta l\u2019utilizzo di numeri casuali molto lunghi.<\/p>\n<p>Per assicurare la massima sicurezza dei dati che protegge, inoltre, una chiave privata deve essere il pi\u00f9 casuale possibile. Se il numero utilizzato come chiave \u00e8 prevedibile, qualsiasi malintenzionato informato sulla procedura di generazione della chiave potr\u00e0 trovarlo ancora pi\u00f9 facilmente e rapidamente con un attacco di forza bruta.<\/p>\n<p>La generazione di un numero <em>veramente<\/em> casuale <a href=\"https:\/\/engineering.mit.edu\/engage\/ask-an-engineer\/can-a-computer-generate-a-truly-random-number\/\" target=\"_blank\" rel=\"noopener nofollow\">non \u00e8 un\u2019operazione semplice<\/a> e i computer sono inadatti a questo compito, proprio per via della loro natura estremamente prevedibile. Pertanto, in genere otteniamo numeri solo <em>pseudocasuali<\/em> e per aumentare il livello di <em>entropia<\/em> (per usare un termine tecnico che indica l\u2019imprevedibilit\u00e0) durante il processo di generazione delle chiavi ci affidiamo ad alcune funzioni speciali.<\/p>\n<p>Ora torniamo alla libreria BitcoinJS. Per ottenere numeri pseudocasuali \u201cdi alta qualit\u00e0\u201d, questa libreria utilizza un\u2019altra libreria JavaScript denominata JSBN (JavaScript Big Number), in particolare la funzione <em>SecureRandom<\/em>. Come suggerisce il nome, questa funzione \u00e8 stata progettata per generare numeri pseudocasuali idonei per il criptaggio. Per aumentare il livello di entropia, <em>SecureRandom<\/em> si affida alla funzione del browser <em>window.crypto.random<\/em>.<\/p>\n<p>Ed \u00e8 proprio qui che nasce il problema: nella famiglia di browser Netscape Navigator 4.x la funzione <em>window.crypto.random<\/em> era disponibile, ma quando i servizi Web hanno iniziato a utilizzare attivamente la libreria BitcoinJS questi browser erano gi\u00e0 obsoleti. Nei browser pi\u00f9 diffusi all\u2019epoca (Internet Explorer, Google Chrome, Mozilla Firefox e Apple Safari), invece, la funzione <em>window.crypto.random<\/em> semplicemente non era stata implementata.<\/p>\n<p>Poich\u00e9, purtroppo, gli sviluppatori della libreria JSBN non hanno previsto nessun tipo di controllo o messaggio di errore corrispondente, il passaggio per l\u2019incremento del livello di entropia veniva ignorato dalla funzione <em>SecureRandom<\/em> e, di fatto, il compito di creare le chiavi private era affidando al generatore di numeri pseudocasuali standard, <em>Math.random<\/em>.<\/p>\n<p>Questo rappresenta un problema di per s\u00e9, perch\u00e9 <em>Math.random<\/em> <a href=\"https:\/\/security.stackexchange.com\/questions\/181580\/why-is-math-random-not-designed-to-be-cryptographically-secure\" target=\"_blank\" rel=\"noopener nofollow\">non \u00e8 progettato<\/a> per il criptaggio. La situazione venne tuttavia ulteriormente peggiorata dal fatto che l\u2019implementazione di <em>Math.random<\/em> nei browser pi\u00f9 diffusi nel 2011-2015, <a href=\"https:\/\/jandemooij.nl\/blog\/math-random-and-32-bit-precision\/\" target=\"_blank\" rel=\"noopener nofollow\">in particolare Google Chrome<\/a>, conteneva dei bug per cui i numeri prodotti risultavano anche meno casuali del previsto.<\/p>\n<p>A sua volta, la libreria BitcoinJS ha ereditato da JSBN tutti questi problemi. Di conseguenza, le piattaforme che l\u2019hanno utilizzata per generare le chiavi private per i loro portafogli di criptovaluta hanno ottenuto dalla funzione SecureRandom numeri molto meno casuali di quanto gli sviluppatori della libreria non si aspettassero. Essendo generate in modo tanto prevedibile, queste chiavi possono essere facilmente ottenute tramite un attacco di forza bruta, che pu\u00f2 cos\u00ec aprire la strada al furto dei portafogli di criptovaluta vulnerabili.<\/p>\n<p>Come accennato in precedenza, non si tratta un pericolo solo teorico: in pratica, il team di Unciphered \u00e8 stato in grado di sfruttare queste vulnerabilit\u00e0 per ripristinare l\u2019accesso (in altre parole, per violare in modo etico) diversi vecchi portafogli di criptovaluta creati su Blockchain.info.<\/p>\n<h2>Per chi rappresenta un rischio Randstorm<\/h2>\n<p>La libreria vulnerabile JSBN \u00e8 stata utilizzata da BitcoinJS a partire dalla sua introduzione, nel 2011, fino al 2014. Alcuni progetti di criptovaluta potrebbero tuttavia aver utilizzato per un po\u2019 di tempo una versione meno recente della libreria. Considerando il fatto che i bug di Math.random nei browser pi\u00f9 diffusi sono stati risolti nel 2016 (con la modifica degli algoritmi per la generazione di numeri pseudocasuali), possiamo ipotizzare che tutti i portafogli di criptovaluta creati nel periodo compreso tra il 2011 e il 2015 siano potenzialmente vulnerabili.<\/p>\n<p>Come sottolineano i ricercatori, essendo BitcoinJS molto popolare nei primi anni di quel decennio, \u00e8 difficile compilare un elenco completo dei servizi che avrebbero potuto utilizzarne una versione vulnerabile. Pertanto, nel loro rapporto troviamo l\u2019elenco solo delle piattaforme che sono stati in grado di identificare come a rischio:<\/p>\n<ul>\n<li><strong>BitAddress<\/strong>: attualmente in funzione<\/li>\n<li><strong>BitCore<\/strong> (BitPay): attualmente in funzione<\/li>\n<li><strong>Bitgo<\/strong>: attualmente in funzione<\/li>\n<li><strong>info<\/strong>: attualmente in funzione come Blockchain.com<\/li>\n<li><strong>Blocktrail<\/strong>: reindirizza a <code> https:\/\/btc.com <\/code> o a <code> https:\/\/blockchair.com <\/code><\/li>\n<li><strong>BrainWallet<\/strong>: non pi\u00f9 in uso<\/li>\n<li><strong>CoinKite<\/strong>: attualmente vende portafogli hardware<\/li>\n<li><strong>CoinPunk <\/strong>: non pi\u00f9 in uso<\/li>\n<li><strong>Dark Wallet<\/strong>: reindirizza a <code> https:\/\/crypto-engine.org <\/code><\/li>\n<li><strong>DecentralBank<\/strong>: non pi\u00f9 in uso<\/li>\n<li><strong>info<\/strong> (Block.io): attualmente in funzione<\/li>\n<li><strong>EI8HT<\/strong>: non pi\u00f9 in uso<\/li>\n<li><strong>GreenAddress<\/strong>: reindirizza a <code> https:\/\/blockstream.com\/green\/ <\/code><\/li>\n<li><strong>QuickCon<\/strong>: non pi\u00f9 in uso<\/li>\n<li><strong>Robocoin<\/strong>: non pi\u00f9 in uso<\/li>\n<li><strong>Skyhook ATM<\/strong>: reindirizza <code> https:\/\/yuan-pay-group.net <\/code><\/li>\n<\/ul>\n<p>Oltre ai portafogli Bitcoin, possono essere a rischio anche i portafogli Litecoin, Zcash e Dogecoin, poich\u00e9 anche per queste criptovalute esistono librerie basate su BitcoinJS, che \u00e8 ovvio presumere vengano utilizzate per generare le chiavi private per i rispettivi portafogli di criptovaluta.<\/p>\n<p>Il rapporto di Unciphered descrive anche una serie di altre complessit\u00e0 associate a Randstorm. Tuttavia, sostanzialmente il problema \u00e8 che i portafogli creati utilizzando la libreria vulnerabile tra il 2011 e il 2015 possono ancora essere vulnerabili a vari livelli, a seconda delle specifiche circostanze.<\/p>\n<h2>Come proteggersi dalle vulnerabilit\u00e0 Randstorm<\/h2>\n<p>Come affermano giustamente gli stessi ricercatori, questo non \u00e8 il classico caso in cui per risolvere il problema basta mitigare la vulnerabilit\u00e0 nel software: non \u00e8 infatti possibile correggere con una \u201cpatch\u201d le chiavi private dei proprietari dei portafogli e sostituirle con altre chiavi sicure. Anche se sono stati risolti da tempo, questi bug continuano pertanto a interessare i portafogli di criptovaluta creati prima che le vulnerabilit\u00e0 della libreria BitcoinJS venissero corrette. Per i proprietari di questi portafogli \u00e8 quindi importante adottare adeguate misure di protezione.<\/p>\n<p>Poich\u00e9 stilare un elenco completo delle piattaforme di criptovaluta che hanno utilizzato la libreria vulnerabile \u00e8 un compito estremamente complesso, \u00e8 pi\u00f9 sicuro considerare potenzialmente non sicuri tutti i portafogli di criptovaluta creati <em>online<\/em> tra il 2011 e il 2015 (a meno che tu non abbia la certezza che il tuo non lo \u00e8). Naturalmente\u2026 pi\u00f9 un portafoglio \u00e8 pieno e pi\u00f9 risulta allettante per i criminali.<\/p>\n<p>L\u2019ovvia (e unica) soluzione al problema \u00e8 creare nuovi portafogli di criptovaluta in cui spostare tutti i fondi dai portafogli potenzialmente vulnerabili.<\/p>\n<p>E poich\u00e9 si tratta di un\u2019operazione necessaria, \u00e8 meglio procedere con la massima cautela. La protezione delle criptovalute \u00e8 un processo che prevede pi\u00f9 fasi. Per questo motivo, abbiamo creato un elenco di controllo completo, con tante informazioni aggiuntive direttamente accessibili tramite i collegamenti:<\/p>\n<ol>\n<li>Esplora <a href=\"https:\/\/www.kaspersky.it\/blog\/4-key-steps-to-protect-cryptocurrency-properly\/27754\/\" target=\"_blank\" rel=\"noopener\">in dettaglio le principali minacce alle criptovalute e i metodi di protezione<\/a>.<\/li>\n<li>Scopri le <a href=\"https:\/\/www.kaspersky.it\/blog\/top-5-cryptocurrency-heists\/27343\/\" target=\"_blank\" rel=\"noopener\">differenze tra i portafogli di criptovaluta hot e cold<\/a> e i <a href=\"https:\/\/www.kaspersky.it\/blog\/top-eight-crypto-scams-2023\/27875\/\" target=\"_blank\" rel=\"noopener\">modi pi\u00f9 comuni per attaccarli<\/a>.<\/li>\n<li>Utilizza un portafoglio hardware (cold) per la conservazione a lungo termine dei tuoi fondi in criptovaluta principali e un portafoglio hot con fondi minimi per le transazioni quotidiane.<\/li>\n<li>Prima di trasferire tutti i fondi dal vecchio al nuovo portafoglio, installa in tutti i tuoi dispositivi una <a href=\"https:\/\/www.kaspersky.it\/premium?icid=it_bb2023-kdplacehd_acq_ona_smm__onl_b2c_kdaily_lnk_sm-team___kprem___\" target=\"_blank\" rel=\"noopener\">soluzione di protezione affidabile<\/a>. Manterr\u00e0 il tuo smartphone o il computer al sicuro dai <a href=\"https:\/\/www.kaspersky.it\/blog\/doublefinger-crypto-stealer\/27805\/\" target=\"_blank\" rel=\"noopener\">Trojan che cercano di rubare password e chiavi private<\/a> e dai <a href=\"https:\/\/www.kaspersky.it\/blog\/doublefinger-crypto-stealer\/27805\/\" target=\"_blank\" rel=\"noopener\">clipper che sostituiscono gli indirizzi dei portafogli di criptovaluta negli appunti<\/a>, oltre a proteggere il computer dai <a href=\"https:\/\/www.kaspersky.it\/blog\/malicious-cryptominers-2022\/27375\/\" target=\"_blank\" rel=\"noopener\">cryptominer dannosi<\/a> e dagli accessi in remoto non autorizzati.<\/li>\n<li>Non archiviare mai una foto o uno screenshot della seedphrase sullo smartphone, non pubblicare mai la seedphrase nei cloud pubblici, non inviarla mai tramite messaggistica o e-mail e <a href=\"https:\/\/www.kaspersky.it\/blog\/cryptocurrency-giveaway-scam\/26703\/\" target=\"_blank\" rel=\"noopener\">non inserirla da nessuna parte<\/a> tranne quando si recupera una chiave privata persa.<\/li>\n<li>Archivia in modo sicuro la tua chiave privata e la seedphrase per il ripristino. A questo scopo, puoi utilizzare la funzionalit\u00e0 <em>Archivio protezione identit\u00e0<\/em> di <strong><a href=\"https:\/\/www.kaspersky.it\/premium?icid=it_bb2023-kdplacehd_acq_ona_smm__onl_b2c_kdaily_lnk_sm-team___kprem___\" target=\"_blank\" rel=\"noopener\">Kaspersky Premium<\/a><\/strong>, che cripta tutti i dati archiviati utilizzando il sistema AES-256. La password non viene memorizzata da nessuna parte, la conosce solo l\u2019utente (a meno che, ovviamente, non sia su un foglietto adesivo attaccato al monitor) e non pu\u00f2 essere recuperata, quindi l\u2019unica persona con accesso ai tuoi documenti personali sei tu.<\/li>\n<li>In alternativa, puoi usare un portafoglio di criptovaluta cold, che non richiede una seedphrase per il backup della chiave privata. Ecco come funziona, ad esempio, il portafoglio hardware <a href=\"https:\/\/tangem.com\/\" target=\"_blank\" rel=\"noopener nofollow\">Tangem<\/a>.<\/li>\n<\/ol>\n<input type=\"hidden\" class=\"category_for_banner\" value=\"premium-generic\">\n","protected":false},"excerpt":{"rendered":"<p>I portafogli Bitcoin creati tra il 2011 e il 2015 sulle piattaforme online potrebbero non essere sicuri a causa di una vulnerabilit\u00e0 presente nella libreria utilizzata per la generazione delle chiavi.<\/p>\n","protected":false},"author":2706,"featured_media":28288,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2641],"tags":[820,1418,2529,3780,3036,3782,3733,3781,584],"class_list":{"0":"post-28286","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-threats","8":"tag-bitcoin","9":"tag-blockchain","10":"tag-btc","11":"tag-cripto-wallet","12":"tag-criptovalute","13":"tag-portafogli-bitcoin","14":"tag-portafogli-di-criptovaluta","15":"tag-portafoglio-di-criptovaluta","16":"tag-vulnerabilita"},"hreflang":[{"hreflang":"it","url":"https:\/\/www.kaspersky.it\/blog\/vulnerability-in-hot-cryptowallets-from-2011-2015\/28286\/"},{"hreflang":"en-in","url":"https:\/\/www.kaspersky.co.in\/blog\/vulnerability-in-hot-cryptowallets-from-2011-2015\/26702\/"},{"hreflang":"en-ae","url":"https:\/\/me-en.kaspersky.com\/blog\/vulnerability-in-hot-cryptowallets-from-2011-2015\/22125\/"},{"hreflang":"ar","url":"https:\/\/me.kaspersky.com\/blog\/vulnerability-in-hot-cryptowallets-from-2011-2015\/11229\/"},{"hreflang":"en-us","url":"https:\/\/usa.kaspersky.com\/blog\/vulnerability-in-hot-cryptowallets-from-2011-2015\/29456\/"},{"hreflang":"en-gb","url":"https:\/\/www.kaspersky.co.uk\/blog\/vulnerability-in-hot-cryptowallets-from-2011-2015\/26984\/"},{"hreflang":"es-mx","url":"https:\/\/latam.kaspersky.com\/blog\/vulnerability-in-hot-cryptowallets-from-2011-2015\/26892\/"},{"hreflang":"es","url":"https:\/\/www.kaspersky.es\/blog\/vulnerability-in-hot-cryptowallets-from-2011-2015\/29453\/"},{"hreflang":"ru","url":"https:\/\/www.kaspersky.ru\/blog\/vulnerability-in-hot-cryptowallets-from-2011-2015\/36592\/"},{"hreflang":"tr","url":"https:\/\/www.kaspersky.com.tr\/blog\/vulnerability-in-hot-cryptowallets-from-2011-2015\/11903\/"},{"hreflang":"x-default","url":"https:\/\/www.kaspersky.com\/blog\/vulnerability-in-hot-cryptowallets-from-2011-2015\/49943\/"},{"hreflang":"fr","url":"https:\/\/www.kaspersky.fr\/blog\/vulnerability-in-hot-cryptowallets-from-2011-2015\/21291\/"},{"hreflang":"pt-br","url":"https:\/\/www.kaspersky.com.br\/blog\/vulnerability-in-hot-cryptowallets-from-2011-2015\/22070\/"},{"hreflang":"de","url":"https:\/\/www.kaspersky.de\/blog\/vulnerability-in-hot-cryptowallets-from-2011-2015\/30738\/"},{"hreflang":"ja","url":"https:\/\/blog.kaspersky.co.jp\/vulnerability-in-hot-cryptowallets-from-2011-2015\/35364\/"},{"hreflang":"nl","url":"https:\/\/www.kaspersky.nl\/blog\/vulnerability-in-hot-cryptowallets-from-2011-2015\/28948\/"},{"hreflang":"ru-kz","url":"https:\/\/blog.kaspersky.kz\/vulnerability-in-hot-cryptowallets-from-2011-2015\/27215\/"},{"hreflang":"en-au","url":"https:\/\/www.kaspersky.com.au\/blog\/vulnerability-in-hot-cryptowallets-from-2011-2015\/32975\/"},{"hreflang":"en-za","url":"https:\/\/www.kaspersky.co.za\/blog\/vulnerability-in-hot-cryptowallets-from-2011-2015\/32624\/"}],"acf":[],"banners":"","maintag":{"url":"https:\/\/www.kaspersky.it\/blog\/tag\/criptovalute\/","name":"criptovalute"},"_links":{"self":[{"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/posts\/28286","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\/2706"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/comments?post=28286"}],"version-history":[{"count":7,"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/posts\/28286\/revisions"}],"predecessor-version":[{"id":28294,"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/posts\/28286\/revisions\/28294"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/media\/28288"}],"wp:attachment":[{"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/media?parent=28286"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/categories?post=28286"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/tags?post=28286"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}