Quali sono le implicazioni sulla sicurezza dell'attacco "Row Hammer"?

15

Ho appena scoperto l'attacco Row Hammer . In base alla descrizione, questo sembra estremamente pericoloso, ma mi chiedo quale percentuale di dispositivi sono effettivamente interessati da questi. Esistono modi per proteggersi se non sostituendo la RAM con una che supporta ECC?

    
posta d33tah 09.03.2015 - 22:19
fonte

3 risposte

6

L'implicazione di sicurezza di base è che un utente non privilegiato può elevare il proprio accesso al livello root / kernel.

Project Zero di Google è stato testato 29 diversi laptop prodotto tra il 2010-2014 compreso, e ha rilevato che 15 erano vulnerabili e 14 non lo erano. Essi avvertono che questa dimensione del campione non è sufficiente per essere considerata rappresentativa, ma è comunque suggestivo che questo sia improbabile che sia un problema isolato.

I documenti originali Lanciare i bit nella memoria senza accedervi suggeriscono che il problema è molto più ampio:

Among 129 DRAM modules we analyzed (comprising 972 DRAM chips), we discovered disturbance errors in 110 modules (836 chips). In particular, all modules manufactured in the past two years (2012 and 2013) were vulnerable

L'unico vero modo per mitigare l'attacco è di non eseguire binari arbitrari sul tuo sistema e di non consentire a nessun altro di accedere al tuo sistema se possono avere intenzioni ostili. Questo è ovviamente un problema per le risorse di elaborazione condivise, ad es. università, strutture di hosting, ecc. I fornitori di servizi cloud potrebbero essere potenzialmente vulnerabili (è stato segnalato un danneggiamento della memoria di successo all'interno di VM, ma resta da vedere quanto sia sfruttabile).

L'uso di ECC, sebbene non sia una garanzia di sicurezza, potrebbe ridurre la probabilità di successo dello sfruttamento. La mitigazione completa è quella di aggiornare ad un sistema che impiega qualche difesa: un controller di memoria o DRAM che rileva attivamente ed evita l'exploit. La disponibilità di tali controller o DRAM al momento è sconosciuta, ma sono noti che esistono. I produttori di memoria sono a conoscenza di questo problema da un po 'di tempo e le specifiche per LPDDR4 includono attenuazioni, quindi i laptop futuri saranno protetti.

    
risposta data 10.03.2015 - 18:27
fonte
5

La RAM ECC non è necessariamente immune; La memoria ECC fissa in modo affidabile i flips a un bit e rileva la maggior parte dei lanci a due bit, il che rende l'attacco più difficile, ma non concettualmente impercettibile.

La RAM non ECC non è necessariamente debole; infatti, come per la definizione di come dovrebbe comportarsi la RAM, non dovrebbe mai capitare un singolo bit flip. Quello di cui stiamo parlando è la RAM con un difetto: la RAM non funziona come dovrebbe. Il fatto deprimente è che tali difetti sono molto più comuni di quanto si pensi normalmente, poiché in condizioni normali , tali difetti non vengono attivati spesso (o affatto).

La soluzione è ottenere RAM non difettosa. Il problema sottostante diventa quindi: in che modo rilevare che la RAM è difettosa? Il noto strumento MemTest86 include un test "row hammer" (almeno dal v6, disponibile nella versione gratuita).

Per una soluzione solo software, si potrebbe immaginare un "aggiornamento manuale" fatto dal kernel. Qualche thread del kernel farebbe regolarmente quanto segue, per tutte le pagine nella RAM fisica:

  • Blocca la pagina (cioè contrassegnala come non accessibile per il codice userland).
  • Capovolgi tutti i bit nella pagina, assicurandoti una cancellazione della cache con i relativi codici opzionali.
  • Capovolgi di nuovo tutti i bit, di nuovo con un flush della cache. Questo ripristina i dati originali nella pagina.
  • Sblocca la pagina.

Se userland accede alla pagina mentre è in fase di aggiornamento, il gestore trap attende semplicemente il completamento dell'aggiornamento, quindi torna al processo in modo che possa riprovare.

Il double-flip ha lo scopo di assicurare che anche l'hardware intelligente che cerca di seguire le effettive modifiche scarichi i dati e quindi riscrivi la pagina (che riempirà i potenziali pozzi nei chip DRAM).

In larga misura, questo processo simulerebbe ciò che l'hardware già fa per l'aggiornamento della memoria. Quindi sarebbe una questione di decidere quanto spesso questo dovrebbe essere fatto; l'aggiornamento più spesso significa più larghezza di banda CPU / RAM spesa per l'aggiornamento, quindi c'è un compromesso. Se un compromesso accettabile può essere raggiunto dipende da quanta RAM ci sia, quanto è veloce la RAM e quanto è difettosa la RAM.

L'implementazione in un dato sistema operativo viene lasciata come esercizio al lettore. Presumo che questo possa avere un impatto non banale sull'euristica di paging / swap (durante il paging o lo swapping, il kernel tenta di sfrattare le pagine che non sono state visitate di recente e questa contabilità viene eseguita dalla MMU stessa; distruggere con questa raccolta di informazioni).

    
risposta data 10.03.2015 - 18:15
fonte
1

Ho lavorato su DRAM per molti anni, ecco alcuni dei miei punti. Come so, ci sono molte ricerche che cercano di risolvere questo problema e alcuni di loro sostengono di avere una soluzione. Ma come quello che vedo, la maggior parte di loro non ha una protezione completa. Quindi, potrebbe essere una grande bomba nel mondo dei computer se qualche hacker riuscisse a far scattare questa bomba con successo. Non è solo DDR-3 e fabbricati tra l'anno 2012-2013 sono vulnerabili. In realtà può accadere su tutte le DDR-3 e persino su DDR-4. Il problema è causato dalla maggiore densità dei chip DRAM di oggi. I dati memorizzati in ogni cella fanno sì che le celle vicine cambino il loro contenuto quando fanno molto letture sulla stessa cella. Aumentare il refresh non risolverà il problema, ma ridurrà la possibilità di essere colpito. Ma aumenta anche il calore del sistema e rallenta la potenza del processo. In effetti, quando ciò accade, diventa più vulnerabile al successo di Row Hammer. Quindi, aumentare la frequenza di aggiornamento non è una buona soluzione. ECC non risolverà il problema, ma renderà più difficile farlo accadere, perché ECC può correggere solo errori di 1 o 2 bit. Scusa, non ho ancora trovato nessuna soluzione valida, ma inserirò qui se lo sapessi.

    
risposta data 02.11.2016 - 20:49
fonte

Leggi altre domande sui tag