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

Documentos relacionados