Implicazioni di protezione dei dati nella RAM

6

Qualcuno mi ha detto che la sua azienda sta memorizzando tutti i dati delle applicazioni (almeno i dati sensibili che indovino) nella RAM per sicurezza. La loro applicazione viene eseguita per lunghi periodi di tempo, quindi i dati rimangono in memoria per un lungo periodo.

Come è questo più sicuro se lo tieni nella RAM, invece del disco? La RAM è più difficile da accedere / sfruttare, o è solo perché è volatile?

    
posta Gilles 03.07.2012 - 16:35
fonte

7 risposte

9

Mantenere le informazioni nella RAM può migliorare la sicurezza, se fatto bene e se i requisiti lo consentono. Mostrerò due architetture di sicurezza dove mantenere i dati nella RAM offre un vantaggio in termini di sicurezza. Questi sono scenari abbastanza specifici; il più delle volte mantenere i dati nella RAM non aiuta.

Protezione dagli attacchi di dump dei file

Considera un'applicazione web che manipola i file sul server. Un tipo di vulnerabilità che potrebbe avere è consentire agli utenti di scaricare file che non dovrebbero essere esposti in remoto. Se una parte di dati critici viene memorizzata solo nella memoria di alcuni processi (qui non è la RAM che è rilevante, ma la memoria virtuale rispetto al filesystem), quindi non sarà rivelata da una vulnerabilità dell'esposizione di file.

Naturalmente, i dati potrebbero essere rivelati attraverso altre vulnerabilità, ad esempio con una catena di attacco che prima dispone di inserire i dati riservati in un file (come un dump di errore di qualche tipo) e poi di avere il file di dettagli esposto.

Mantenere i dati in memoria aiuta solo se non viene caricato da un file in primo luogo. Dove prendi i dati dopo l'avvio? I dati potrebbero essere memorizzati crittografati, ma ciò richiede che qualcuno inserisca la chiave di decodifica dopo un riavvio; questo non va bene per la maggior parte delle applicazioni Web in quanto non possono permettersi i tempi di inattività. I dati possono essere archiviati in un file che richiede privilegi aggiuntivi che il server Web non ha: il processo del server Web inizia con privilegi elevati, legge il file, quindi rilascia i privilegi. Ciò solleva la barra per un utente malintenzionato poiché dovrebbe trovare una vulnerabilità di escalation dei privilegi locale oltre alla vulnerabilità remota che ha dato loro un punto d'appoggio. Il vantaggio rimane piccolo perché molti attacchi che danno accesso locale senza privilegi all'attaccante forniscono anche un modo per ispezionare la memoria dei processi attivi.

Difesa contro alcuni attacchi con accesso fisico

Le informazioni nella RAM scompaiono se la RAM è spenta. Quindi, se l'attaccante riesce solo ad afferrare il sistema di destinazione spegnendolo, avrà più problemi ad accedere ai dati se è solo nella RAM. Tuttavia, la memorizzazione dei dati nella RAM non andrà molto bene di per sé, perché la RAM ha alcuni dati rimanenti di pochi secondi a pochi minuti. (Vedi anche Recupera i contenuti precedenti di RAM da un PC spento? ). Questo è sufficiente per riavviare il computer in un sistema operativo controllato dall'utente malintenzionato o per trasferire le chiavette RAM su un altro computer. (Vedi anche Ci sono volatili chip di memoria che non conservano i dati dopo lo spegnimento? )

La crittografia dei dati aiuta, ma devi conservare la chiave di crittografia da qualche parte. E se hai intenzione di crittografare i dati, puoi farlo comunque su un disco. La crittografia della maggior parte dei dati sensibili aiuta in questo caso se l'aggressore è abbastanza sfortunato da perdere la chiave, i dati sono al sicuro.

Quindi, per poter archiviare i dati nella RAM per migliorare la sicurezza, devono esserci ulteriori misure di sicurezza fisica. Se la RAM si trova all'interno di una custodia resistente alle manomissioni che provoca la disattivazione dell'alimentazione se aperta, potrebbe essere sufficiente superare la rimanenza della RAM. Per risultati migliori, i tentativi di manomissione dovrebbero far sì che la scheda madre azzeri la RAM prima di spegnerla (il che significa che la scheda madre dovrebbe avere una piccola batteria). Crittografare i dati aiuta perché solo la chiave deve essere azzerata, il che richiede meno tempo. Anche se le misure anti-manomissione possono essere sconfitte con strumenti abbastanza buoni, rende l'attacco più difficile di un semplice pass-and-snatch (un intruso con un cutter per bulloni è più evidente di un attaccante con un circuito stampato all'interno di una custodia per cellulare ).

Andando oltre, può valere la pena criptare la RAM e assicurarsi che la chiave sia conservata nella cache del processore o nei registri . L'aggressore deve in genere riavviare per provare a ottenere la chiave; riavviando abbastanza velocemente per trovare una cache pristine e senza rovinare la cache è più difficile, e scollegare la CPU è più difficile che scollegare la RAM.

Ovviamente c'è sempre il problema di dove vengono caricati i dati (o se è crittografato, dove è memorizzata la chiave). Alcuni casi d'uso valutano la riservatezza sulla disponibilità e possono permettersi di chiedere a qualcuno di entrare e inserire una chiave dopo ogni riavvio (ad esempio un grande datacenter potrebbe avere qualcuno disponibile a farlo 24 ore su 24, nel caso in cui un intruso arrivi così lontano). Questa misura di sicurezza può anche avvantaggiare i sistemi che elaborano i dati ma non li memorizzano.

    
risposta data 03.07.2012 - 20:02
fonte
6

Si sentono confortati da un falso senso di sicurezza per oscurità

Se qualcuno ottiene l'accesso come root al tuo computer, può vedere tutto il contenuto di qualsiasi applicazione. La crittografia non è di aiuto se l'applicazione deve essere in grado di lavorare con il testo normale poiché l'applicazione dovrà memorizzare le chiavi da qualche parte. Nascondere quelle chiavi è da dove viene la sicurezza dell'oscurità - alla fine l'intruso potrà trovarle e copiarle.

Nonostante ciò, avere tutti i dati contenuti nella RAM fornisce una misura della sicurezza fisica poiché la perdita di energia significa perdita di dati. Tuttavia, una volta che i dati sono fuori dalla RAM e in un archivio persistente, ad esempio attraverso un'operazione di swap di memoria, tutte le scommesse sono disattivate. Inoltre, qualsiasi data center degno di questo nome avrà un solido piano di sicurezza fisica sul posto che è assicurato contro le intrusioni quindi è un po 'inutile.

Naturalmente, mantenere i dati nella RAM per un rapido accesso per motivi di prestazioni è completamente valido, ma non pensare che la sicurezza sia in qualche modo migliorata come risultato.

    
risposta data 03.07.2012 - 16:51
fonte
1

È leggermente più difficile poiché scompare quando la macchina viene spenta. Richiede a qualcuno di accedere alla macchina quando è in esecuzione piuttosto che rubare il disco rigido / laptop.

Detto questo, la memoria deve essere popolata da da qualche parte . Se si tratta di una macchina remota, hai aperto quella via d'attacco che di solito è più rischiosa di conservare i dati su disco nella maggior parte degli scenari.

    
risposta data 03.07.2012 - 16:42
fonte
1

La memoria potrebbe essere più difficile da recuperare informazioni sensibili rispetto al disco, ma la possibilità esiste ancora. Se i dati non sono anche crittografati, può essere compromesso. Di recente, abbiamo esaminato le stringhe sicure in PowerShell per questo motivo. Sì, deve essere un testo normale in un dato momento, ma non mentre attende di essere utilizzato. I dati dalla RAM possono essere recuperati da un dump di crash forzato, e solo perché è nella RAM non significa che non si accenda mai sul disco durante un'operazione di paging.

    
risposta data 03.07.2012 - 16:46
fonte
1

Sono sorpreso che nessuno abbia indicato il pericolo dei file core. La maggior parte delle varianti Unix o Linux scriverà utile un file "core" sul disco quando un processo si blocca. Il file core di solito contiene il contenuto della RAM di quel processo in caso di arresto anomalo, in modo che tu possa provare a trovare quali dati o condizioni causano il problema. Successivamente, un utente con i privilegi corretti può accedere a questo file e cercare i resti dei dati che il processo guasto ha tenuto in memoria. Solo per questo motivo, direi che i dati conservati in memoria non sono realmente più sicuri dei dati archiviati su disco. Qualcuno ha qualcosa da aggiungere su questo?

    
risposta data 04.07.2012 - 01:27
fonte
0

Penso che questo sia per lo più sciocco. Se un utente malintenzionato può accedere ai dati sul tuo disco rigido, avrà quasi sicuramente accesso anche alla tua memoria (e viceversa ). Indipendentemente da dove vivono i dati, deve essere crittografato. Questa è la vera soluzione a questo problema.

Inoltre, mantenere tutti i tuoi dati in memoria può avere alcuni effetti collaterali negativi nell'applicazione (aumento della memoria, codice più complicato, ecc.) Questo non è il modo "giusto" per risolvere il loro problema.

    
risposta data 03.07.2012 - 16:44
fonte
0

Che cosa può aiutare sono le nuove tecnologie di crittografia della memoria come Intel SGX e AMD SEV che si basano su una root-of-trust hardware. Nel caso di Intel SGX, i dati di un'applicazione vengono crittografati in memoria utilizzando una chiave accessibile solo alla CPU e possono essere aggiunti a un codice specifico, in modo che nessun'altra applicazione (anche un utente root) possa accedere i dati. Inoltre, è possibile crittografare i dati memorizzati (a riposo) utilizzando una chiave specifica della CPU, che impedisce alcuni degli attacchi di cui sopra.

    
risposta data 20.11.2018 - 07:54
fonte

Leggi altre domande sui tag