VMs können definitiv überkreuzen. Normalerweise haben Sie sie vernetzt, sodass sich Malware mit einer Netzwerkkomponente (d. H. Würmer) überall dort ausbreitet, wo ihre Adressierung / Weiterleitung dies zulässt. Normale Viren arbeiten normalerweise nur im Benutzermodus. Obwohl sie nicht offen kommunizieren konnten, konnten sie dennoch einen verdeckten Kanal einrichten. Wenn Sie CPUs gemeinsam nutzen, kann ein ausgelasteter Prozess auf einer VM den Status effektiv an eine andere VM kommunizieren (dies ist Ihr prototypischer verdeckter Timing-Kanal). Der verdeckte Speicherkanal wäre etwas schwieriger, da die virtuellen Festplatten in der Regel stark eingeschränkt sind. Wenn Sie also kein System haben, das übermäßig viel Speicherplatz beanspruchen kann, sollte dies kein Problem darstellen.
Die Der interessanteste Ansatz zum Sichern von VMs ist der Separation Kernel. Es ist ein Ergebnis von John Rushbys 1981er Papier, in dem es im Wesentlichen heißt, dass der Computer seine Ressourcen auf eine Weise exportieren muss, die der physischen Trennung entspricht, damit VMs auf eine Weise isoliert werden können, die einer physischen Trennung entspricht Es macht keinen Sinn, dass eine Ressource, die den Status speichern kann, von VMs gemeinsam genutzt wird. Dies hat tiefgreifende Konsequenzen, da die zugrunde liegende Computerarchitektur so gestaltet werden muss, dass dies auf nicht umgehbare Weise möglich ist.
30 Jahre nach diesem Dokument haben wir endlich nur wenige Produkte, die dies tun behaupten, es zu tun. x86 ist nicht die beste Plattform dafür, da es viele Anweisungen gibt, die nicht virtualisiert werden können, um die Idee des "No Sharing" vollständig zu unterstützen. Für gängige Systeme ist dies auch nicht sehr praktisch, da für vier VMs vier Festplatten erforderlich sind, die an vier Festplattencontrollern, vier Grafikkarten, vier USB-Controllern mit vier Mäusen usw. hängen.
Update 2020: Alle aktuellen hardwarebasierten Schwachstellen (Meltdown, Spectre, Foreshadow, ZombieLoad, CacheOut, SPOILER usw.) sind ein gutes Beispiel dafür, wie VMs immer kommunizieren können, einfach weil sie Hardware gemeinsam nutzen (Caches, TLB, Verzweigungsvorhersage, TSX, SGX), die niemals für die Partitionierung und Isolierung vorgesehen oder vorbereitet waren.