Memory Dumping: causa di preoccupazione nella virtualizzazione?

8

Recentemente, ho iniziato a esplorare le minacce alle macchine virtuali in generale. La prima domanda che mi è venuta in mente è se una macchina host può scaricare tutta la sua memoria su un file e ispezionare la memoria per leggere il contenuto dell'immagine della memoria della VM.

Poiché la virtualizzazione porta essenzialmente al fatto che l'ospite e l'ospite condividono la stessa RAM, suppongo che ciò sia possibile.

=====================
|           |VM|    |
=====================

Supponiamo che la memoria assomigli a questo. Memoria da 1 GB per la VM su un totale di 8 GB. Quindi se scarico la RAM, dovrei essere in grado di visualizzare il contenuto della VM VM.

Q1. È una possibilità? link mostra come ottenere un dump della memoria

Q2. È una minaccia? (Sto indovinando no). Tuttavia, se qualcuno ha un'idea, sarebbe splendido.

Q3. Uno scenario più interessante: la VM potrebbe in qualche modo catturare la memoria dell'host? cioè ci sono attacchi noti su VMWare o altri software che hanno documentato tale attacco?

    
posta sudhacker 18.09.2012 - 16:50
fonte

3 risposte

5

È possibile?
Si è possibile. La memoria della VM è accessibile dal sistema host, che consente all'host di leggere qualsiasi cosa all'interno della VM, inclusa la memoria in modalità kernel. Molte soluzioni VM consentono di eseguire il dump delle istanze guest su file o sospese (ad esempio, una versione VM di hibernate).

È una minaccia?
Si noti che la memoria della VM non sarà interamente memorizzata nella memoria fisica dell'host, ma sarà probabilmente memorizzata parzialmente in uno swapfile. Ciò significa che parte della memoria del SO guest è memorizzata sul disco dell'host, rendendo l'analisi dello spazio libero un potenziale attacco, anche dopo la chiusura del sistema operativo guest. Le immagini di VM sospese possono anche essere accessibili a un utente malintenzionato se ruba il disco o ottiene i privilegi di lettura dei file sull'host. Se l'utente malintenzionato può compromettere l'host, può anche essere in grado di emettere letture e scritture di memoria arbitrarie sul processo VM, consentendo il furto e la manipolazione dei dati.

La VM può catturare la memoria dell'host?
non dovrebbe essere in grado di farlo. Le macchine virtuali funzionano creando versioni virtualizzate di processori e controller di memoria. Questo hardware virtuale accetta normali interruzioni di accesso alla memoria e le traduce in uno spazio di indirizzi virtuale. Ad esempio, il kernel del SO guest potrebbe desiderare di accedere alla memoria fisica a 7a22d6aa , ma la VM in realtà traduce quell'indirizzo in vm.swap+0x7a22d6aa , in modo tale che la VM non sia completamente all'oscuro della traduzione.

Un simile attacco richiederebbe la violazione dei meccanismi di isolamento incorporati nella VM. Questi meccanismi di isolamento sono molto forti, dal momento che devono contenere un intero sistema operativo e qualsiasi software / driver che potrebbe essere eseguito. L'isolamento è spesso implementato a livello hardware utilizzando estensioni della CPU come VT-x. Tuttavia, i sistemi VM sono software e il software ha sempre bug. Ci sono state delle vulnerabilità in passato in cui il software su una VM era in grado di attaccare l'host, solitamente tramite meccanismi di comunicazione tra sistemi operativi utilizzati per condividere file e funzionalità degli appunti.

    
risposta data 18.09.2012 - 17:56
fonte
4

L'host può sicuramente prendere una copia dello stato completo di una VM, incluso ciò che la VM vede come RAM. Questa è chiamata "istantanea" ed è una funzionalità desiderabile.

Si può immaginare il sistema host come il kernel del kernel. Una VM non può essere protetta dal suo host, più di quanto un sistema operativo possa proteggere da una CPU malevola e corrotta. Se il tuo modello di sicurezza chiama dalla protezione della VM dal sistema di hosting, allora il tuo modello di sicurezza è condannato dall'inizio.

(Anche se una cosa del genere potrebbe esistere nel contesto della crittografia completamente omomorfica , ma lo stato attuale della ricerca è abbastanza lontano dal fornire qualsiasi cosa utilizzabile in quell'area, per non parlare di efficienza.)

Nella direzione opposta: la VM dovrebbe essere contenuta dall'host e non essere in grado di evaderlo, per raggiungere un'altra VM o l'host stesso. Ora, naturalmente, questa è la teoria, ma in pratica si verificano problemi di sicurezza .

    
risposta data 18.09.2012 - 17:56
fonte
1

Ho un pensiero un po 'diverso su queste e poi su quelle precedenti.

È possibile? E se possibile, è una minaccia?

Potrebbe essere o non essere possibile.

Tecnicamente dovrebbe essere possibile poiché il programma di virtualizzazione è in esecuzione all'interno del sistema operativo che controlli. Quindi, dovrebbe essere disponibile lo scarico della memoria di una particolare regione del sistema operativo. E se è possibile, penso che non sia davvero una minaccia per la sicurezza dato che l'host dovrebbe avere i diritti di accesso completo all'ambiente virtuale in esecuzione al suo interno.
Ma penso che praticamente non sia possibile direttamente (senza usare funzionalità come lo snapshot fornito dal tuo hypervisor). Il motivo è che il tuo hypervisor gira su ring -1 che è più privilegio del tuo sistema operativo (specifico del kernel) che è ring 0 . Quindi, l'hypervisor ha il permesso di negare l'accesso alla memoria direttamente al tuo sistema operativo per una particolare area di memoria.

    
risposta data 03.06.2018 - 21:35
fonte

Leggi altre domande sui tag