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.