Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Attacco alla RAM: Cold boot attack

Ecco come in determinate condizioni è possibile attaccare il computer a partire dalla memoria volatile. A rischio anche i dati crittografati
Ecco come in determinate condizioni è possibile attaccare il computer a partire dalla memoria volatile. A rischio anche i dati crittografati
Link copiato negli appunti

Cosa succede quando la vulnerabilità è in un componente hardware da sempre ritenuto sicuro? Cosa succede se tale componente è standard e presente in praticamente tutti i computer? Cosa succede se questo componente è attualmente utilizzato (e non può essere altrimenti) per salvare informazioni sensibili? La spiacevole risposta a queste inquietanti domande arriva da una ricerca portata avanti e pubblicata nel 2008 dalla Princeton University, che dimostra come, in alcuni casi, nemmeno un computer spento possa essere ritenuto sicuro.

Quando ad essere vulnerabile è la RAM

Il componente di cui parlavamo in apertura è la memoria RAM di sistema; a differenza dei dischi, la RAM dinamica utilizzata come memoria centrale dei calcolatori viene cancellata nel momento in cui il computer viene spento, così che i dati in essa contenuti non siano più disponibili. Il funzionamento della DRAM infatti prevede la memorizzazione di informazioni in formato binario associato a delle capacità presenti sul modulo di memoria (bit 1 per capacità carica, bit 0 per capacità scarica): con il passare del tempo la carica decade e l'informazione viene persa - per questo motivo mentre la macchina è accesa è attuato un procedimento di refresh che si occupa di ricaricare correttamente le capacità, consentendo loro di mantenere lo stato corretto corrispondente all'informazione memorizzata. Nel momento in cui l'alimentazione viene interrotta, anche il procedimento di refresh termina, e col tempo tutta l'informazione degrada (i bit cambiano di valore) fino a perdersi del tutto.

Quanto tempo serve veramente perché questo accada? Esistono condizioni in cu i questo tempo di decadimento possa essere rallentato?

Benchè il tempo di refresh nelle DRAM moderne sia dell'ordine dei millisecondi, in realtà gli studi dimostrano che il tempo di decadimento dell'informazione senza refresh è dell'ordine dei secondi a temperatura ambiente. Raffreddando i moduli di memoria, però, tali tempi aumentano in modo inversamente proporzionale alla temperatura: le informazioni possono rimanere pressoché intatte in un modulo DRAM non alimentato anche per minuti o ore.

Tab. 1 - Tempo di decadimento misurato nei test
Memoria Tempo trascorso
(secondi)
% Errore a 30°C
(ambiente)
% Errore a -50°C
(aria compressa)
Infineon SDRAM
128 MB (1999)
60 41 0
Infineon SDRAM
128 MB (1999)
300 50 0.00009
Samsung DDR RAM
512 MB (2001)
360 50 0
Samsung DDR RAM
512 MB (2001)
600 50 0.000036
Micron DDR RAM
256 MB (2003)
120 41 0.00105
Micron DDR RAM
256 MB (2003)
360 42 0.00144
Infineon DDR2 RAM
512 MB (2006)
40 50 0.025
Infineon DDR2 RAM
512 MB (2006)
80 50 0.18

La tabella mostra i tempi rilevati su moduli DRAM di anzianità decrescente: è possibile notare come nelle tecnologie più recenti i tempi di decadimento siano più rapidi (e quindi, nel contesto di questo articolo, si può asserire che le memorie più recenti sono più sicure), tuttavia il dato preoccupante è la differenza tra i tempi misurati a temperatura ambiente e i tempi misurati a una temperatura di -50° C: alcuni moduli più vecchi, risalenti al 2001, se mantenuti a questa temperatura non perdono l'informazione neanche dopo 6 minuti. In tutti i casi esaminati, inoltre, la percentuale di errore rilevata è inferiore all'1% dopo un minuto. Per raffreddare un modulo DRAM a -50°C è sufficiente prendere una bomboletta di aria compressa - solitamente utilizzata per le pulizie e acquistabile a pochi euro in qualunque negozio di elettronica - capovolgerla e spruzzarne il contenuto direttamente sui chip della memoria: rapido, economico e indolore.

Questa tecnica può essere estesa abbassando ulteriormente la temperatura delle memorie: con l'utilizzo di azoto liquido si raggiungono i -196° C garantendo così tempi di decadimento dei dati di diverse ore, anche in moduli costruiti con tecnologie recenti, e con un errore sempre inferiore a pochi punti percentuale. Considerando che, come vedremo fra poco, gli errori possono essere corretti con tecniche analitiche, con tempi e difficoltà crescenti ovviamente con la percentuale d'errore, è possibile concludere che la RAM è un posto intrinsecamente insicuro dove mettere dati sensibili.

Ma di quali dati stiamo parlando? I problemi maggiori derivano dalle chiavi crittografiche utilizzate ad esempio per cifrare i contenuti sensibili di un disco con software come Truecrypt, oppure per firmare certificati SSL nei web server, ma anche altre informazioni preziose come la password di login di Mac OS X possono trovarsi in RAM.

Come funziona l'attacco

Ora che abbiamo capito che la RAM è vulnerabile perchè può mantenere in memoria dati sensibili per alcuni minuti, anzichè cancellarsi in poche frazioni di secondo se non alimentata, vediamo come questo possa essere sfruttato per appropriarsi dei dati di interesse in essa contenuti. Lo scenario tipico richiede di poter accedere fisicamente alla macchina target mentre questa è accesa, per poi fare un'immagine del contenuto della memoria centrale. Questo significa che l'attacco ha successo anche nel caso in cui il PC sia in stand-by, o semplicemente con lo schermo bloccato e protetto da password.

Se pensate che il problema non sia del tutto rilevante, potreste essere in errore: in tempi recenti sono stati sottratti dati sensibili da laptop rubati in numerosi casi di interesse giornalistico: 98.000 social security number, dati personali di 300.000 dipendenti di un piano sanitario, dati riservati di 196.000 clienti di un'industria finanziaria statunitense, e molto altro. Per questo, proteggere i dati del proprio PC portatile in modo che risultino inaccessibili anche in caso di furto sarebbe consigliabile a molti professionisti del settore, o a chiunque mantenga sul proprio disco ingenti quantità di informazioni confidenziali. Tuttavia, a causa della vulnerabilità qui descritta, questo non sempre è possibile anche nel caso si usino password d'accesso o software per la crittografia dei dischi.

Torniamo quindi allo scenario d'attacco: una volta appropriatosi del PC, ancora alimentato e quindi con la RAM contenente dati intatti, il primo problema per l'attaccante è evitare che il sistema operativo o il BIOS cancellino o sovrascrivano la memoria prima che egli riesca a farne un'immagine da elaborare per estrarre le informazioni di interesse. Per evitare che il sistema operativo faccia piazza pulita dei dati durante un normale riavvio, si usa il cold boot, ossia si forza la macchina a spegnersi togliendo la batteria o agendo sul pulsante di alimentazione, per poi riaccenderla immediatamente. Il caricamento del BIOS della macchina non richiede azioni particolarmente distruttive sulla memoria cen trale, tuttavia in alcuni sistemi è possibile abilitare un check della memoria distruttivo nella fase di POST (Power-On Self Test) del BIOS; tale check può solitamente essere disabilitato o bypassato attivando un'opzione di avvio veloce dal menu di configurazione del BIOS stesso.
Per appropriarsi dell'immagine della RAM è però necessario caricare almeno un software che si occupi del dump: è importante che tale software non richieda il caricamento di un intero sistema operativo per essere eseguito, pena la possibilità che il sistema operativo stesso sovrascriva buona parte della memoria, che per il momento continua a mantenere i dati sensibili della vittima. Il software sviluppato nella ricerca a Princeton è infatti un'applicazione stand-alone che richiede pochissima memoria, e che può essere avviato in uno qualsiasi dei seguenti modi:

  • Avvio da interfaccia di rete via PXE
    In molti PC moderni è possibile avviare il sistema via rete attraverso l'ambiente PXE (Preboot eXecution Environment) di Intel: collegando via ethernet alla macchina della vittima un altro PC che esegua il software di dump, è possibile trasferire l'immagine della RAM su un file locale. Attraverso una rete gigabit, la procedura richiede circa 30 secondi per 1 GB di RAM.
  • Avvio da disco USB
    Una memoria USB può essere utilizzata per il boot da periferica esterna: in questo caso il software di dump gira sul dispositivo USB (anche un semplice lettore mp3!) e salva su questo l'immagine della memoria centrale del sistema vittima. Il tempo richiesto è in questo caso di circa 4 minuti per 1 GB di RAM.
  • Avvio da EFI
    Una terza alternativa è il boot da interfaccia EFI (Extensible Firmware Interface), una recente alternativa ai normali BIOS già presente in molti sistemi Apple, che consente di integrare in essa applicazioni esterne. Il software per il dump della memoria è quindi utilizzato come applicazione esterna EFI via netboot, raggiungendo un tempo di trasferimento pari a circa 1 minuto per 1 GB di RAM.

È facile notare che si tratta di un procedimento molto veloce e poco costoso, se si dispone degli strumenti adatti (tutti i software qui descritti, incluso il dumper della memoria, sono liberamente scaricabili dal sito dei ricercatori linkato a inizio articolo). Ma cosa succede se la macchina della vittima dispone di limitazioni di sicurezza che impediscano sistematicamente l'avvio da periferiche esterne o che prevedano la cancellazione non bypassabile di tutto il contenuto della memoria RAM da parte del BIOS? Anche in questo caso la soluzione c'è ed è semplice e alla portata di tutti: è possibile rimuovere fisicamente i moduli di memoria dal PC, e montarli in un'altra macchina di proprietà dell'attaccante pensata appositamente per farne il dump del contenuto. A causa dei fenomeni descritti precedentemente, raffreddare i chip con una bomboletta di aria compressa prima di estrarre il modulo consente ai dati in esso contenuti di non decadere per diversi secondi o minuti con un'ottima probabilità - c'è quindi tutto il tempo necessario per il trasferimento del modulo da un PC all'altro.

Scenari pratici di utilizzo

Questo tipo di attacco può essere utilizzato in particolare per ottenere l'accesso a dati presenti su dischi crittati con sistemi come Microsoft BitLocker, Apple FileVault o il già citato TrueCrypt. Le chiavi di cifratura sono recuperate dalla memoria attraverso un'accurata analisi dell'immagine della RAM ottenuta con il procedimento sopra descritto: sono stati studiati metodi per ricostruire le chiavi anche in caso di un tasso d'errore elevato (fino al 50%) e metodi per identificare la posizione delle chiavi in memoria, evitando un'assai dispendiosa ricerca esaustiva. Entrambe l e tecniche sfruttano la crittoanalisi e la necessità di mantenere in memoria informazioni sui procedimenti per il calcolo delle chiavi, per motivi di performance. Alcuni risultati con algoritmi di crittografia molto noti sono presentati in tabella.

Tab. 2 - Ricostruzione di chiavi da porzioni danneggiate di memoria
Algoritmo % Errore Risultato
DES Fino a 50% La probabilità di ricostruire correttamente la chiave è superiore al 98%
3DES 112 bit Fino a 50% La probabilità di ricostruire correttamente la chiave è superiore al 97%
3DES 156 bit Fino a 50% La probabilità di ricostruire correttamente la chiave è superiore al 96%
AES 128 bit Fino a 30% La ricostruzione delle chiavi richiede un tempo dell'ordine dei secondi
RSA 2048 bit Fino a 6% La ricostruzione delle chiavi richiede un tempo dell'ordine dei minuti
RSA 1024 bit Fino a 10% La ricostruzione delle chiavi richiede un tempo dell'ordine dei minuti

Gli attacchi portati contro i più comuni sistemi di cifratura dei dischi mostrano che questi software spesso non sono sufficienti a impedire l'accesso ai dati nel caso in cui il furto del dispositivo avvenga a computer acceso o in stand-by. L'intero processo può richiedere pochi minuti e pochi semplici strumenti per consentire la lettura delle informazioni crittate, e anche nel caso in cui la memoria fosse parzialmente corrotta sarebbe possibile utilizzare algotirmi specifici per ricostruire le chiavi in tempi brevi e con buona probabilità, ottenendo di conseguenza pieno accesso al disco.

Una nota importante riguarda in particolare il sistema BitLocker, incluso in alcune versioni di Windows Vista. BitLocker può funzionare in due modalità: basic mode e advanced mode. Nella prima, le chiavi di cifratura vengono caricate in memoria centrale all'avvio del sistema, prima del login, rendendo di fatto un cold boot attack applicabile anche a un PC spento al momento del furto. La seconda modalità richiede invece l'inserimento di una password o di una chiave USB prima di caricare le chiavi in RAM, e in questo caso la vulnerabilità del sistema non è superiore a quella di software analoghi come FileVault e TrueCrypt.

Suggerimenti di protezione

Questo tipo di attacco, benchè, ricordiamo, limitato allo specifico caso in cui sia consentito accesso fisico a una macchina accesa, in stand-by, o appena spenta, è di fatto difficilmente contrastabile; tuttavia esistono alcuni accorgimenti che sarebbe meglio seguire per rendere più difficoltoso il procedimento appena descritto.

  • Cancellare la RAM all'avvio
    Impostare il BIOS per cancellare completamente la memoria centrale durante la fase di POST impedisce a un attaccante che non possa bypassare tale fase di portare a termine l'attacco senza rimuovere fisicamente i moduli della RAM e rimontarli su un sistema più permissivo.
  • Impedire l'avvio via rete o da periferica esterna
    Impostare una password necessaria per consentire l'avvio di un sistema dalla rete o da una periferica rimovibile impedisce a un attaccante di portare a termine l'attacco senza rimuovere fisicamente i moduli; è tuttavia possibile che in alcuni casi l'attaccante riesca a resettare l'NVRAM (una memoria non volatile utilizzata dal BIOS) della macchina, rendendo di fatto nuovamente possibile l'avvio di sistemi da periferiche esterne o rete senza la richiesta di credenziali.
  • Chiudere accuratamente il sistema
    Attivare lo screen-lock o mettere il PC in stan d-by non è sufficiente per impedire questo attacco. Spegnere la macchina o metterla in hybernate per qualche minuto è sufficiente, a meno che non stiate utilizzando BitLocker in modalità basic. Quando possibile, sarebbe quindi consigliato spegnere del tutto il sistema e tenerlo d'occhio per almeno qualche minuto prima di allontanarsi: questo impedisce a un eventuale ladro di praticare un cold boot attack sulla vostra macchina. Ovviamente se utilizzate BitLocker, impostatelo sulla modalità advanced.
  • Impedire accesso fisico ai moduli di memoria
    Proteggere fisicamente i moduli, ad esempio avvitandoli o incassandoli con resina epossidica, può scoraggiare un attaccante o impedirgli di trasferire la memoria su un altro sistema, da cui estrarre l'immagine contenente i dati sensibili.

È caldamente consigliato seguire questi consigli, nel caso pensaste che il vostro sistema sia potenzialmente a rischio di questo tipo di attacco.

Ti consigliamo anche