È 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.