VT und Pacifica - Computer Architecture
Transcrição
VT und Pacifica - Computer Architecture
VT und Pacifica Vortrag zum Seminar „Virtuelle Maschinen und Emulatoren“ Alexander Würstlein [email protected] Friedrich-Alexander-Universität Erlangen-Nürnberg 28. Mai 2007 arw (FAU) VT & SVM 28. Mai 2007 1 / 28 Inhalt 1 Virtualisierbarkeit des Pentium Voraussetzungen Probleme 2 Vorgenommene Erweiterungen I/O 3 Ausblick Linux KVM Virtualisierung anderer Architekturen arw (FAU) VT & SVM 28. Mai 2007 2 / 28 Virtualisierbarkeit des Pentium Voraussetzungen Voraussetzungen für Virtualisierbarkeit Satz Menge der sensitiven Instruktionen muss Untermenge der privilegierten Instruktionen sein privilegierte Instruktion: trapt im Usermodus immer kontrollsensitive Instruktion: Instruktion trapt nicht und ändert Prozessormodus oder Speicherschutz verhaltenssensitive Instruktion: Verhalten abhängig von Modus oder Speicherschutz siehe auch vorheriger Vortrag arw (FAU) VT & SVM 28. Mai 2007 3 / 28 Virtualisierbarkeit des Pentium Voraussetzungen Rechtfertigung der Voraussetzungen warum kontrollsensitive? Können unberechtigt Systemzustand verändern umgeht Speicherschutz und Trennung warum verhaltenssensitive? keine Umgehung der Isolation Verhalten aber verändert inneres System „bemerkt“ umgebende VM Verhalten nicht identisch zu „richtiger“ Hardware arw (FAU) VT & SVM 28. Mai 2007 4 / 28 Virtualisierbarkeit des Pentium Voraussetzungen Weitere Voraussetzungen gleiche Syntax Privilegierte und nichtprivilegierte Instruktionen müssen dieselbe Syntax haben (Opcode, zu setzende Flags). Speicherschutz Die Architektur muss Mechanismen vorsehen, die den Schutz der Speicherbereiche des Hypervisors und der VMs ermöglichen (MMU). arw (FAU) VT & SVM 28. Mai 2007 5 / 28 Virtualisierbarkeit des Pentium Probleme Voraussetzungen beim Pentium gleiche Syntax: erfüllt Speicherschutz: erfüllt sensitive ⊂ privilegierte Instruktionen: nicht erfüllt mehr als 17 problematische Operationen SGDT, SIDT, SLDT, SMSW, PUSHF, POPF, LAR, LSL, VERR, VERW, POP, PUSH, CALL, JMP, INT, RET, STR, MOVE arw (FAU) VT & SVM 28. Mai 2007 6 / 28 Virtualisierbarkeit des Pentium Probleme Einteilung sensitiver Instruktionen 1 ändern den Maschinenzustand 2 lesen oder ändern problematische Register oder Speicherstellen SGDT, SIDT, SLDT, SMSW, PUSHF, POPF 3 betreffen den Speicherschutz oder erlauben Zugriff auf eigentlich gesperrte Speicherbereiche LAR, LSL, VERR, VERW, POP, PUSH, CALL, JMP, INT, RET, STR, MOVE 4 I/O arw (FAU) VT & SVM 28. Mai 2007 7 / 28 Virtualisierbarkeit des Pentium Probleme SGDT, SIDT, SLDT Zweck SGDT Global SLDT : Store Local DescriptorTable SIDT Interrupt Schreibt einen Zeiger auf die jeweilige Tabelle aus dem entsprechenden CPU-Register in den Speicher. Problem für Anwendungsprogramme unproblematisch Gastbetriebssystem würde jedoch Registerinhalte des Hypervisors oder Hostbetriebssystems erhalten ändert Verhalten des Gastbetriebssystems arw (FAU) VT & SVM 28. Mai 2007 8 / 28 Virtualisierbarkeit des Pentium Probleme Einschub: Ringmodell Ringe Berechtigungsstufen (privilege level) jeweils für verschiedene Funktionen einstellbar 3 2 1 0 CPL: current privilege level CPL ≤ IOPL: Zugriff auf I/O-Adressraum erlaubt DPL, RPL: ähnlich für Segmente arw (FAU) VT & SVM 28. Mai 2007 9 / 28 Virtualisierbarkeit des Pentium Probleme Einschub: Ringmodell Ringe unprivilegiert privilegiert Berechtigungsstufen (privilege level) jeweils für verschiedene Funktionen einstellbar CPL: current privilege level 3 2 1 0 CPL ≤ IOPL: Zugriff auf I/O-Adressraum erlaubt DPL, RPL: ähnlich für Segmente arw (FAU) VT & SVM 28. Mai 2007 9 / 28 Virtualisierbarkeit des Pentium Probleme Einschub: Ringmodell Ringe Treiber Kernel Anwendungen Berechtigungsstufen (privilege level) jeweils für verschiedene Funktionen einstellbar CPL: current privilege level 3 2 1 0 CPL ≤ IOPL: Zugriff auf I/O-Adressraum erlaubt DPL, RPL: ähnlich für Segmente arw (FAU) VT & SVM 28. Mai 2007 9 / 28 Virtualisierbarkeit des Pentium Probleme PUSHF, POPF, SMSW Zweck Schreiben / lesen EFLAGS-Register bzw. Maschinenstatuswort. EFLAGS enthält z.B. interrupt enable und I/O privilege level. Problem Gastbetriebssystem erwartet IOPL 3 berechtigte Änderungen werden ohne Trap durchgeführt unberechtige Änderungen werden ignoriert arw (FAU) VT & SVM 28. Mai 2007 10 / 28 Virtualisierbarkeit des Pentium Probleme LAR, LSL, VERR, VERW Zweck LAR: Load Access Rights LSL: Load Segment Limit VERR, VERW: VERify Readable, Writable Liefern Informationen über Segmente aus Segmentdeskriptoren. Problem prüfen bei Aufruf Berechtigungen (CPL, DPL, RPL) unberechtigte Aufrufe lösen kein Trap aus nur das zero flag wird gesetzt arw (FAU) VT & SVM 28. Mai 2007 11 / 28 Virtualisierbarkeit des Pentium Probleme CALL, JMP, INT n, RET Zweck CALL: Funktionsaufrufe (im selben / anderen Ring), Prozesswechsel INT: wie CALL, aber indirekt über IDT RET: Umkehrung von CALL JMP: Fortsetzung an anderer Stelle im Code, keine geplante Rückkehr wie bei CALL Problem CALL, INT, RET in anderen Ring wechselt den Stack unzureichende Berechtigungen: Segmentregister werden nicht gesichert arw (FAU) VT & SVM 28. Mai 2007 12 / 28 Virtualisierbarkeit des Pentium Probleme PUSH, POP, MOV Probleme alle drei Instruktionen greifen u.a. auf Segmentregister (ss, cs, ... , gs) zu pop %ss und andere Segmentregister verhalten sich unterschiedlich abhängig von CPL z.B. mit push %ss oder mov %cs kann ein Prozess das aktuelle CPL auslesen arw (FAU) VT & SVM 28. Mai 2007 13 / 28 Vorgenommene Erweiterungen Erweiterungen der Architektur Bezeichnungen Intel: Vanderpool Technology, Intel VT-x/i (für IA-32/64), VMX AMD: Pacifica, Secure Virtual Machine (SVM) Prinzip neue Rechteaufteilung: „root“ vs. „non-root“ virtueller Prozessor läuft im non-root-Modus Verhalten des virtuellen Prozessors unverändert arw (FAU) VT & SVM 28. Mai 2007 14 / 28 Vorgenommene Erweiterungen Schema Normalbetrieb VMXON arw (FAU) VT & SVM 28. Mai 2007 15 / 28 Vorgenommene Erweiterungen Schema Hypervisor root VMXON non-root arw (FAU) VT & SVM 28. Mai 2007 15 / 28 Vorgenommene Erweiterungen Schema Hypervisor VMCBs ... VMWRITE be be sc hre ibt t ibt eib hr sc beschre VM0 root ... arw (FAU) VMXON VMn non-root VT & SVM 28. Mai 2007 15 / 28 Vorgenommene Erweiterungen Schema Hypervisor VMCBs ... SU ME d Zustan root VM RE VMXON VM0 VMn ... arw (FAU) non-root VT & SVM 28. Mai 2007 15 / 28 Vorgenommene Erweiterungen Schema Hypervisor VMCBs ... Intercept arw (FAU) T XI ME VMXON #V d Zustan VM0 root VMn ... non-root VT & SVM 28. Mai 2007 15 / 28 Vorgenommene Erweiterungen Benutzung AMD: Intercepts, Intel: VMEXIT bei Ereignissen (bestimmte Operationen, Interrupts, Traps) erfolgt Rückkehr zum Hypervisor im VMCB interessante Ereignisse auswählbar nach Behandlung Rückkehr mit VMRUN/RESUME Einschleusen von Interrupts/Traps durch Flags im VMCB dadurch I/O zu virtueller Hardware möglich arw (FAU) VT & SVM 28. Mai 2007 16 / 28 Vorgenommene Erweiterungen Neue Operationen Intel Prozessormodus: VMXON, VMXOFF VMCS manipulieren: VMPTRLD/ST, VMCLEAR/READ/WRITE Wechsel in VM: VMLAUNCH, VMRESUME expliziter Rücksprung aus der VM: VMCALL AMD Prozessormodus: EVER.SVME := 1/0 VMCB manipulieren: VMLOAD/SAVE Wechsel in VM: VMRUN expliziter Rücksprung aus der VM: VMMCALL arw (FAU) VT & SVM 28. Mai 2007 17 / 28 Vorgenommene Erweiterungen I/O I/O und Interrupts reale Interrupts werden zuerst im Hypervisor behandelt aber: Maskierung oder Weitergabe möglich Interrupts und Traps von virtueller Hardware möglich DMA zu realer Hardware möglich aber unsicher umgeht Speicherschutz Lösung: IOMMU arw (FAU) VT & SVM 28. Mai 2007 18 / 28 Vorgenommene Erweiterungen I/O IOMMU MMU Übersetzt virtuelle Speicheradressen (im Prozessor) in physikalische Adressen (im RAM) IOMMU Übersetzt Geräteadressen (auf dem PCI-Bus) in physikalische Adressen (im RAM) verhindert Umgehung des MMU-Speicherschutzes über Geräte verhindert externe Exploits (Firewire) ermöglicht Zuordnung von Geräten zu Prozessen oder VMs Sun (DVMA) und IBM (TCE) schon länger auf dem Markt, Intel und AMD 2008 arw (FAU) VT & SVM 28. Mai 2007 19 / 28 Vorgenommene Erweiterungen I/O IOMMU MMU RAM CPU VM Gerät arw (FAU) VT & SVM 28. Mai 2007 20 / 28 Vorgenommene Erweiterungen I/O IOMMU verboten CPU MMU RAM VM Gerät arw (FAU) VT & SVM 28. Mai 2007 20 / 28 Vorgenommene Erweiterungen I/O IOMMU MMU RAM CPU VM ubt erla Gerät arw (FAU) VT & SVM 28. Mai 2007 20 / 28 Vorgenommene Erweiterungen I/O IOMMU MMU möglich RAM CPU VM ubt erla Gerät arw (FAU) VT & SVM 28. Mai 2007 20 / 28 I/O Vorgenommene Erweiterungen IOMMU RAM CPU VM ubt erla verboten IOMMU MMU Gerät arw (FAU) VT & SVM 28. Mai 2007 20 / 28 Ausblick Linux KVM KVM ab Linux 2.6.20 im Standardkernel unterstützt SVM und VT modifiziertes qemu I/O über die virtuelle Hardware von qemu VM ist normaler Userspace-Prozess Kommunikation mit dem Kernel über /dev/kvm arw (FAU) VT & SVM 28. Mai 2007 21 / 28 Ausblick Linux KVM andere VMs XEN benutzt VT / SVM Parallels ebenso (Mac OS) VMWare und VirtualBox nur in Ausnahmefällen bei üblichen Betriebssystemen sei bisheriges Verfahren schneller arw (FAU) VT & SVM 28. Mai 2007 22 / 28 Ausblick Virtualisierung anderer Architekturen andere Architekturen sun4v eingeführt mit SUN UltraSPARC T1 führt zu den bisherigen 2 Privilegierungsstufen ((non-)privileged) eine dritte (hyperprivileged) ein Hypervisor in Firmware Spezifikation scheint weit weniger komplex als VT / Pacifica LPAR Logical Partitions IBM Power4/5 seit längerem im Einsatz arw (FAU) VT & SVM 28. Mai 2007 23 / 28 Ausblick Virtualisierung anderer Architekturen Zusammenfassung Pentium nicht virtualisierbar Lösung: Einführung neuer Betriebsmodi root und non-root-Modus IOMMU ermöglicht VMs Zugriff auf reale Geräte arw (FAU) VT & SVM 28. Mai 2007 24 / 28 Quellen Quellen J. Robin, C. Irvine Analysis of the Intel Pentium’s Ability to Support a Secure Virtual Machine Monitor. Proceedings of the 9th USENIX Security Symposium, 2000, The USENIX Association, Denver. http://citeseer.ist.psu.edu/robin00analysis.html R. Uhlig, G. Neiger et. al. Intel Virtualization Technology. Computer, May 2005, IEEE Computer Society, New York. J. Schlumberger Virtualisierungstheorie, Vortrag im Hauptseminar Konzepte und Techniken virtueller Maschinen und Emulatoren. Friedrich-Alexander-Universität, 24. Mai 2007, Erlangen. http://www3.informatik.uni-erlangen.de/Lehre/ virME/SS2007/ arw (FAU) VT & SVM 28. Mai 2007 25 / 28 Quellen Quellen S. Gora Bittere Pille – Schadsoftware beutet Hardwarevirtualisierung aus. iX, 4/2007, Heise Zeitschriften Verlag, Hannover. N.N. UltraSPARC Architecture 2005. Draft D0.8.8, 15 Jun 2006, Sun Microsystems, Santa Clara. http://opensparc-t1.sunsource.net/index.html N.N. AMD64 Technology – AMD64 Architecture Programmer’s Manual Vol. 1-5. Sep 2006, Advanced Micro Devices. http://www.amd.com/de-de/Processors/ TechnicalResources/0,,30_182_739_7044,00.html arw (FAU) VT & SVM 28. Mai 2007 26 / 28 Quellen Quellen N.N. Intel 64 and IA-32 Architectures Software Developer’s Manual Vol. 1-5. May 2007, Intel. http://developer.intel.com/products/processor/ manuals/index.htm N.N. IOMMU. Wikipedia, englisch, 2007-05-25. http://en.wikipedia.org/wiki/IOMMU N.N. Pacifica (virtual machine). Wikipedia, englisch, 2007-05-25. http://en.wikipedia.org/wiki/Pacifica_%28virtual_ machine%29 arw (FAU) VT & SVM 28. Mai 2007 27 / 28 Quellen Quellen N.N. AMD I/O Virtualization Technology (IOMMU) Specification. Feb 2007, Advanced Micro Devices. http://www.amd.com/de-de/Processors/ TechnicalResources/0,,30_182_739_7044,00.html arw (FAU) VT & SVM 28. Mai 2007 28 / 28