SlideShare una empresa de Scribd logo
1 de 69
Descargar para leer sin conexión
Straight outta VMware:
Modern exploitation of the SVGA device for
guest-to-host escapes
Zisis Sialveras (zisis@census-labs.com)
BlueHatv18
www.census-labs.com
> WHOAMI
• Computer Security Researcher at CENSUS
– RE, exploit development, vulnerability research
• Electrical & Computer Engineering in A.U.Th
• Used to mess with knowledge-based fuzzers
• My twitter handle is @_zisis
> AGENDA
• VMware architecture
– VMware modules
– SVGA thread / Sending commands
– SVGA3D communication protocol
• Exploitation
– Exploitation primitives
– VMSA-2017-0006 (demo!)
• Conclusion / Q&A
> VMWARE ARCHITECTURE
> FIRST TASKS OF VMX APPLICATION
• Calls PowerOn callbacks
from ModuleTable
• MKS, DevicePowerOn
and SVGALate modules
are associated with the
virtual graphics device
> MKS MODULE
• Acronym for Mouse Keyboard Screen
• Spawns the MKS Thread
– Discovers the available renderers (backend)
> MKS MODULE – RENDERERS
• Renderers constitute the VGA backend interface
– which one is going to be enabled depends on the host
OS
• Available renderers in version 14:
– MKSBasicOps, DX11Renderer, DX11RendererBasic,
D3DRenderer, SWRenderer, GLRenderer, GLBasic,
MTLRenderer, VABasic
• On a Windows 10 host DX11Renderer is used.
• DX11Renderer uses DXGI to communicate with
the host graphics device.
> DEVICEPOWERON MODULE
• Contains a list of
devices
• SVGAPowerOn reads
the VM configuration
and spawns the SVGA
thread
• SVGA thread waits for
initialization of other
modules
> SVGALATE MODULE
• Calls IOCTL_VMX86_ALLOC_CONTIG_PAGES to
allocate the SVGA FIFO and the Global Frame
Buffer (GFB).
• FIFO and GFB regions are shared between
guest and host OS.
> SVGA THREAD
• Once VMM is ready, it signals the SVGA
thread.
• VMM has a specific shared memory region
dedicated for communication with the SVGA
thread.
• SVGA enters an infinite loop at which
– Processes commands sent by guest operating
system via SVGA FIFO or command buffers
> SVGA DEVICE – GUEST POINT OF VIEW
• Guest user can send
(SVGA3D)
commands to the
device
– by SVGA FIFO
– by commands
buffers
> SVGA THREAD – SVGA FIFO
• Explained in great detail by Kostya
Kortchinsky.
• SVGA FIFO is a MMIO region.
• Divided into two partitions
– FIFO registers
– FIFO data
> SVGA FIFO – SUBMIT COMMAND
• SVGA_FIFO_NEXT_CMD register denotes the
next command offset in the FIFO data section
• Each command begins with
> SVGA REGISTERS – PORT I/O
• SVGA device exposes a few general purpose
registers
• In, out instruction must be called to access the
registers
> COMMAND BUFFERS
• Two registers must be set to submit a
command buffer
– SVGA_REG_COMMAND_HIGH: upper 32bit of
physical address
– SVGA_REG_COMMAND_LOW: lower 32bit of
physical address and submits command
> SVGA3D
PROTOCOL
> OBJECT TABLES
• Object tables are used to
keep track of SVGA3D entities
(objects)
• Available objects:
– MOB, Surface, Context, Shader,
Screentarget, DXContext
• Stored in guest memory
• PPN = Physical Page Number
(PhysAddr >> 0xC)
> MEMORY OBJECTS
• MOBs are stored in
guest memory as well
• They contain raw data
used for initialization of
SVGA objects (context,
shader, etc)
> COMMON SVGA OBJECTS
• Objects
–Context
–DXContext
–Shader
–Surface
–Screentarget
• Operations
–Define
–Bind
–Destroy
–Readback
> CONTEXT DEFINE
> CONTEXT BIND
> CONTEXT DESTROY
> EXPLOITATION
PRIMITIVES
• Heap spraying
• How to use shaders
• Analysis of
SVGA_3D_CMD_SET_SHADER
• Create new shader
• Heap spraying
• Information leakage and code
execution
• Resource container
• Analysis of surface copy
command
• Attacking VMware
• Hands-on: Exploiting a public bug
> HOW TO USE SHADERS
• Define a shader
• Define a MOB
• Bind shader with the MOB
• Set shader to a context
– Allocation of shader data
structure on the host side
• Next draw command will
use the requested shader
> ANALYSIS OF SVGA_3D_CMD_SET_SHADER
> CREATE NEW SHADER
> HEAP SPRAYING SUMMARY
• On a single “set shader” command, two allocation of the
requested size are performed.
– The first one is freed immediately.
– The latter is freed when the guest user destroys the shader.
• VMware keeps track of the total shader allocation size. Must
be less than 8MB
• Guest is able to define as many shaders fit in shader object
table
– The size of the object table can be modified by
SVGA3D_CMD_SET_OTABLE command.
> SURFACES
• Surface definition
– All host VRAM resources, including 2D textures, 3D textures, cube
environment maps, render targets, and vertex/index buffers are
represented using a homogeneous surface abstraction.
• Surface is a frontend object.
> RESOURCE CONTAINERS
• Resource containers
is a data structure of
the backend
(DX11Renderer).
• They are often
associated with
surfaces.
> RESOURCE CONTAINERS
• There are ten (10) different types
of resource containers
• Which type will be created
depends on the arguments that
the surface was defined with
• Similarly to the other SVGA
objects, VMware creates them
only when they are going to be
used (lazy allocation)
> SURFACE COPY
• SVGA_3D_CMD_SU
RFACE_COPY copies
parts (three
dimensional boxes)
from the source to
the destination
surface
> SURFACE COPY
> MAP SUBRESOURCE
> RESOURCE CONTAINER GETDATABUFFER
> ATTACKING
VMWARE
• Resource containers are very
attractive to attackers, since
they
• can be allocated multiple
times
• contain pointers to heap
• contain dimensions
• contain function pointers
> ATTACKING VMWARE
• Assume that we have a memory corruption bug.
• Consider the following surface
– Width = 0x45
– Height = 0x2
– Depth = 0x1
– Surface format = SVGA3D_A4R4G4B4
• Since the surface format requires 2 bytes for each
pixel the total size of the RC->DataBuffer will be
0x45 * 0x2 * 0x1 * 2 = 0x114 bytes.
> ATTACKING VMWARE
• Corrupt width of RC with a greater value
– RowPitch will also be affected
• Box must be in boundaries due to the checks at frontend.
• DataPtr will point after the end of the buffer
> AVOID THE PITFALL
• MyDX11Resource_MapSubresourceBox will
refresh the contents of the DataBuffer with
the contents of the GPU.
– This will trash the data that we want to write back
to guest.
• This can be avoided by corrupting and
decreasing the value of height.
– GetDataBuffer will silently fail but the surface copy
command will continue.
> LEAK AND CODE EXECUTION
• If a RC is placed after the DataBuffer, we can
leak function pointers.
– LFH chunks are placed next to each other
• Once the attacker has vmware-vmx base
address, he/she can corrupt GetDataBuffer
function pointer and call surface copy
command.
> THE BUG
> VMSA-2017-0006
• Bug is located in SM4 bytecode parser
• Fixed at version 12.5.5 of VMware
– I patched vmware-vmx.exe to reintroduce the
vulnerability on 14.1.3
• Developed an escape exploit (named
“katachnia”) which consists of two parts
(userland application, kernel driver)
> VULNERABILITY DETAILS
• A malicious shader must be set to a DXContext
(using SVGA3D_CMD_DX_SET_SHADER)
• A call to SVGA3D_CMD_DX_DRAW will trigger
the shader bytecode parser
• During the call an object of 0x26D80 size will
be allocated
– Values from the bytecode will be used as index to
access that shader
> VULNERABLE VERSION 12.5.4 -
DCL_CONSTANTBUFFER (59H)
> PATCHED VERSION 12.5.5 -
DCL_CONSTANTBUFFER (59H)
> VULNERABLE VERSION 12.5.4 -
DCL_INDEXRANGE (5B)
> PATCHED VERSION 12.5.5 –
DCL_INDEXRANGE (5B)
> THE EXPLOIT
> DRIVER ENTRY
• BAR0 contains I/O base
• BAR2 contains the FIFO physical address
> INIT_SVGA_IOCTL
KATACHNIA
APPLICATION
KATACHNIA
KERNEL
DRIVER
INIT_SVGA_IOCTL
> HOW TO SETUP SVGA
• FIFO initialization
• Object tables
definition
> LEAK_VMX_ADDR_IOCTL
KATACHNIA
APPLICATION
KATACHNIA
KERNEL
DRIVER
INIT_SVGA_IOCTL
Config is done, graphics are dead
(black screen)
LEAK_VMX_ADDR_IOCTL
> PREPARE MEMORY LAYOUT
• Allocate a big chunk that will
be occupied later by the
allocation at
SVGA3D_CMD_DX_DRAW
• Repeatedly allocate a shader
of size 0x150
0x26D80
> PREPARE MEMORY LAYOUT
• Allocate a big chunk that will
be occupied later by the
allocation at
SVGA3D_CMD_DX_DRAW
• Repeatedly allocate a shader
of size 0x150
0x26D80
LFH 0x150
> PREPARE MEMORY LAYOUT
• Replace all 0x150 heap chunks
with ResourceContainer1
0x26D80
LFH 0x150 (RC1)
> PREPARE MEMORY LAYOUT
> PREPARE MEMORY LAYOUT
DataBuffers
Resource Container type 0
0x26D80
LFH 0x150 (RC1)
LFH 0x150 (RC0)
> FREE BIG SHADER
free
LFH 0x150 (RC1)
LFH 0x150 (RC0)
> TRIGGER THE BUG
0x26D80
Vulnerable
buffer
LFH 0x150 (RC1)
LFH 0x150 (RC0)
> COPY SURFACES BACK TO GUEST
• Call surface copy until
encounter the corrupted RC1
free
LFH 0x150 (RC1)
LFH 0x150 (RC0)
> CORRUPT A FUNCTION POINTER
• Corrupt RC->GetDataBuffer with
the first ROP gadget
0x26D80
Vulnerable
buffer
LFH 0x150 (RC1)
LFH 0x150 (RC0)
> HONEY, I DEFEATED ASLR
• Corrupt the QWORD at offset 8 of RC1 with the
address of the global pointer of the RPC content
buffer
• No much time to talk for RPC (google for more info)
• In short, guest user can allocate a controllable buffer
on the heap of the host which address is stored at a
global variable
> YAY, WE GOT THE ADDRESS
KATACHNIA
APPLICATION
KATACHNIA
KERNEL
DRIVER
INIT_SVGA_IOCTL
Config is done, graphics are dead
(black screen)
LEAK_VMX_ADDR_IOCTL
vmware-vmx address returned,
RC1->GetDataBuffer is corrupted
with the first ROP gadget
> PLACE THE ROP CHAIN…
KATACHNIA
APPLICATION
KATACHNIA
KERNEL
DRIVER
INIT_SVGA_IOCTL
Config is done, graphics are dead
(black screen)
LEAK_VMX_ADDR_IOCTL
vmware-vmx address returned,
RC1->GetDataBuffer is corrupted
with the first ROP gadget
RPC
Place on host’s heap
the ROP chain
> PRISON BREAK!
KATACHNIAAPPLICATION
KATACHNIAKERNELDRIVER
INIT_SVGA_IOCTL
Config is done, graphics are dead
(black screen)
LEAK_VMX_ADDR_IOCTL
vmware-vmx address returned,
RC1->GetDataBuffer is corrupted
with the first ROP gadget
RPC
Place on host’s heap
the ROP chain
ESCAPE_IOCTL !!1
> SHOW OFF (AKA DEMO!)
> CONCLUSION
• Reusable and reliable exploitation primitives
for memory corruption bugs were introduced
• SVGA has a good quality of code
– however, it is amazingly complex, so expect more
bugs
• VMware lacks modern exploitation mitigations
– No isolated heap
– No CFI
> REFERENCES
• Cloudburst - Kostya Kortchinsky, BHUSA 2009
• GPU Virtualization on VMware’s Hosted I/O Architecture - Micah Dowty, Jeremy
Sugerman
• Wandering through the Shady Corners of VMware Workstation/Fusion -
ComSecuris, Nico Golde, Ralf-Philipp Weinmann
• L'art de l'evasion: Modern VMWare Exploitation Techniques - Brian Gorenc, Abdul-
Aziz Hariri, Jasiel Spelman, OffensiveCon 2018
• The great escapes of Vmware: A retrospective case study of Vmware guest-to-host
escape vulnerabilities – Debasish Mandal & Yakun Zhang, BHEU 2017
• Linux kernel driver (vmwgfx) is a treasure!
• Special thanks fly to: Nick Sampanis, Aris Thallas, Sotiris Papadopoulos
BlueHat v18 || Straight outta v mware - modern exploitation of the svga device for guest-to-host escapes

Más contenido relacionado

La actualidad más candente

Csw2016 wheeler barksdale-gruskovnjak-execute_mypacket
Csw2016 wheeler barksdale-gruskovnjak-execute_mypacketCsw2016 wheeler barksdale-gruskovnjak-execute_mypacket
Csw2016 wheeler barksdale-gruskovnjak-execute_mypacket
CanSecWest
 
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytes
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytesWindows Kernel Exploitation : This Time Font hunt you down in 4 bytes
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytes
Peter Hlavaty
 
Csw2016 chen grassi-he-apple_graphics_is_compromised
Csw2016 chen grassi-he-apple_graphics_is_compromisedCsw2016 chen grassi-he-apple_graphics_is_compromised
Csw2016 chen grassi-he-apple_graphics_is_compromised
CanSecWest
 

La actualidad más candente (20)

Csw2016 wheeler barksdale-gruskovnjak-execute_mypacket
Csw2016 wheeler barksdale-gruskovnjak-execute_mypacketCsw2016 wheeler barksdale-gruskovnjak-execute_mypacket
Csw2016 wheeler barksdale-gruskovnjak-execute_mypacket
 
kdump: usage and_internals
kdump: usage and_internalskdump: usage and_internals
kdump: usage and_internals
 
Lock free programming- pro tips
Lock free programming- pro tipsLock free programming- pro tips
Lock free programming- pro tips
 
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytes
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytesWindows Kernel Exploitation : This Time Font hunt you down in 4 bytes
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytes
 
Linux Crash Dump Capture and Analysis
Linux Crash Dump Capture and AnalysisLinux Crash Dump Capture and Analysis
Linux Crash Dump Capture and Analysis
 
Csw2016 chen grassi-he-apple_graphics_is_compromised
Csw2016 chen grassi-he-apple_graphics_is_compromisedCsw2016 chen grassi-he-apple_graphics_is_compromised
Csw2016 chen grassi-he-apple_graphics_is_compromised
 
Java Runtime: повседневные обязанности JVM
Java Runtime: повседневные обязанности JVMJava Runtime: повседневные обязанности JVM
Java Runtime: повседневные обязанности JVM
 
[若渴計畫] Challenges and Solutions of Window Remote Shellcode
[若渴計畫] Challenges and Solutions of Window Remote Shellcode[若渴計畫] Challenges and Solutions of Window Remote Shellcode
[若渴計畫] Challenges and Solutions of Window Remote Shellcode
 
LXC on Ganeti
LXC on GanetiLXC on Ganeti
LXC on Ganeti
 
Add a bit of ACID to Cassandra. Cassandra Summit EU 2014
Add a bit of ACID to Cassandra. Cassandra Summit EU 2014Add a bit of ACID to Cassandra. Cassandra Summit EU 2014
Add a bit of ACID to Cassandra. Cassandra Summit EU 2014
 
Security research over Windows #defcon china
Security research over Windows #defcon chinaSecurity research over Windows #defcon china
Security research over Windows #defcon china
 
Csw2016 economou nissim-getting_physical
Csw2016 economou nissim-getting_physicalCsw2016 economou nissim-getting_physical
Csw2016 economou nissim-getting_physical
 
Kgdb kdb modesetting
Kgdb kdb modesettingKgdb kdb modesetting
Kgdb kdb modesetting
 
QEMU Disk IO Which performs Better: Native or threads?
QEMU Disk IO Which performs Better: Native or threads?QEMU Disk IO Which performs Better: Native or threads?
QEMU Disk IO Which performs Better: Native or threads?
 
Kqueue : Generic Event notification
Kqueue : Generic Event notificationKqueue : Generic Event notification
Kqueue : Generic Event notification
 
Kernel Recipes 2015: Speed up your kernel development cycle with QEMU
Kernel Recipes 2015: Speed up your kernel development cycle with QEMUKernel Recipes 2015: Speed up your kernel development cycle with QEMU
Kernel Recipes 2015: Speed up your kernel development cycle with QEMU
 
Mathematics and development of fast TLS handshakes
Mathematics and development of fast TLS handshakesMathematics and development of fast TLS handshakes
Mathematics and development of fast TLS handshakes
 
Mem forensic
Mem forensicMem forensic
Mem forensic
 
RHEVM - Live Storage Migration
RHEVM - Live Storage MigrationRHEVM - Live Storage Migration
RHEVM - Live Storage Migration
 
Crypto Strikes Back! (Google 2009)
Crypto Strikes Back! (Google 2009)Crypto Strikes Back! (Google 2009)
Crypto Strikes Back! (Google 2009)
 

Similar a BlueHat v18 || Straight outta v mware - modern exploitation of the svga device for guest-to-host escapes

NET8935_Small_DC_Shahzad_Ali
NET8935_Small_DC_Shahzad_AliNET8935_Small_DC_Shahzad_Ali
NET8935_Small_DC_Shahzad_Ali
shezy22
 

Similar a BlueHat v18 || Straight outta v mware - modern exploitation of the svga device for guest-to-host escapes (20)

AsiaBSDCon2023 - Hardening Emulated Devices in OpenBSD’s vmd(8) Hypervisor
AsiaBSDCon2023 - Hardening Emulated Devices in OpenBSD’s vmd(8) HypervisorAsiaBSDCon2023 - Hardening Emulated Devices in OpenBSD’s vmd(8) Hypervisor
AsiaBSDCon2023 - Hardening Emulated Devices in OpenBSD’s vmd(8) Hypervisor
 
End to End Processing of 3.7 Million Telemetry Events per Second using Lambda...
End to End Processing of 3.7 Million Telemetry Events per Second using Lambda...End to End Processing of 3.7 Million Telemetry Events per Second using Lambda...
End to End Processing of 3.7 Million Telemetry Events per Second using Lambda...
 
Installing Oracle Database on LDOM
Installing Oracle Database on LDOMInstalling Oracle Database on LDOM
Installing Oracle Database on LDOM
 
Xiv svc best practices - march 2013
Xiv   svc best practices - march 2013Xiv   svc best practices - march 2013
Xiv svc best practices - march 2013
 
Autonomous control in Big Data platforms: and experience with Cassandra
Autonomous control in Big Data platforms: and experience with CassandraAutonomous control in Big Data platforms: and experience with Cassandra
Autonomous control in Big Data platforms: and experience with Cassandra
 
High Performance, High Reliability Data Loading on ClickHouse
High Performance, High Reliability Data Loading on ClickHouseHigh Performance, High Reliability Data Loading on ClickHouse
High Performance, High Reliability Data Loading on ClickHouse
 
Big Data LDN 2017: Big Data Analytics with MariaDB ColumnStore
Big Data LDN 2017: Big Data Analytics with MariaDB ColumnStoreBig Data LDN 2017: Big Data Analytics with MariaDB ColumnStore
Big Data LDN 2017: Big Data Analytics with MariaDB ColumnStore
 
Presentazione VMware @ VMUGIT UserCon 2015
Presentazione VMware @ VMUGIT UserCon 2015Presentazione VMware @ VMUGIT UserCon 2015
Presentazione VMware @ VMUGIT UserCon 2015
 
NET8935_Small_DC_Shahzad_Ali
NET8935_Small_DC_Shahzad_AliNET8935_Small_DC_Shahzad_Ali
NET8935_Small_DC_Shahzad_Ali
 
Road show 2015 triangle meetup
Road show 2015 triangle meetupRoad show 2015 triangle meetup
Road show 2015 triangle meetup
 
vCloud Automation Center 6.0 -My Notes on Architecture
vCloud Automation Center 6.0 -My Notes on ArchitecturevCloud Automation Center 6.0 -My Notes on Architecture
vCloud Automation Center 6.0 -My Notes on Architecture
 
CNIT 127 14: Protection Mechanisms
CNIT 127 14: Protection MechanismsCNIT 127 14: Protection Mechanisms
CNIT 127 14: Protection Mechanisms
 
iland Internet Solutions: Leveraging Cassandra for real-time multi-datacenter...
iland Internet Solutions: Leveraging Cassandra for real-time multi-datacenter...iland Internet Solutions: Leveraging Cassandra for real-time multi-datacenter...
iland Internet Solutions: Leveraging Cassandra for real-time multi-datacenter...
 
Leveraging Cassandra for real-time multi-datacenter public cloud analytics
Leveraging Cassandra for real-time multi-datacenter public cloud analyticsLeveraging Cassandra for real-time multi-datacenter public cloud analytics
Leveraging Cassandra for real-time multi-datacenter public cloud analytics
 
Data Grids with Oracle Coherence
Data Grids with Oracle CoherenceData Grids with Oracle Coherence
Data Grids with Oracle Coherence
 
SignalFx Kafka Consumer Optimization
SignalFx Kafka Consumer OptimizationSignalFx Kafka Consumer Optimization
SignalFx Kafka Consumer Optimization
 
Web (dis)assembly
Web (dis)assemblyWeb (dis)assembly
Web (dis)assembly
 
VMware - Virtual SAN - IT Changes Everything
VMware - Virtual SAN - IT Changes EverythingVMware - Virtual SAN - IT Changes Everything
VMware - Virtual SAN - IT Changes Everything
 
5. IO virtualization
5. IO virtualization5. IO virtualization
5. IO virtualization
 
3 boyd direct3_d12 (1)
3 boyd direct3_d12 (1)3 boyd direct3_d12 (1)
3 boyd direct3_d12 (1)
 

Más de BlueHat Security Conference

BlueHat Seattle 2019 || The cake is a lie! Uncovering the secret world of mal...
BlueHat Seattle 2019 || The cake is a lie! Uncovering the secret world of mal...BlueHat Seattle 2019 || The cake is a lie! Uncovering the secret world of mal...
BlueHat Seattle 2019 || The cake is a lie! Uncovering the secret world of mal...
BlueHat Security Conference
 
BlueHat Seattle 2019 || Kubernetes Practical Attack and Defense
BlueHat Seattle 2019 || Kubernetes Practical Attack and DefenseBlueHat Seattle 2019 || Kubernetes Practical Attack and Defense
BlueHat Seattle 2019 || Kubernetes Practical Attack and Defense
BlueHat Security Conference
 
BlueHat Seattle 2019 || The good, the bad & the ugly of ML based approaches f...
BlueHat Seattle 2019 || The good, the bad & the ugly of ML based approaches f...BlueHat Seattle 2019 || The good, the bad & the ugly of ML based approaches f...
BlueHat Seattle 2019 || The good, the bad & the ugly of ML based approaches f...
BlueHat Security Conference
 
BlueHat Seattle 2019 || Building Secure Machine Learning Pipelines: Security ...
BlueHat Seattle 2019 || Building Secure Machine Learning Pipelines: Security ...BlueHat Seattle 2019 || Building Secure Machine Learning Pipelines: Security ...
BlueHat Seattle 2019 || Building Secure Machine Learning Pipelines: Security ...
BlueHat Security Conference
 
BlueHat v18 || First strontium uefi rootkit unveiled
BlueHat v18 || First strontium uefi rootkit unveiledBlueHat v18 || First strontium uefi rootkit unveiled
BlueHat v18 || First strontium uefi rootkit unveiled
BlueHat Security Conference
 
BlueHat v18 || Massive scale usb device driver fuzz without device
BlueHat v18 || Massive scale usb device driver fuzz without deviceBlueHat v18 || Massive scale usb device driver fuzz without device
BlueHat v18 || Massive scale usb device driver fuzz without device
BlueHat Security Conference
 
BlueHat v18 || Modern day entomology - examining the inner workings of the bu...
BlueHat v18 || Modern day entomology - examining the inner workings of the bu...BlueHat v18 || Modern day entomology - examining the inner workings of the bu...
BlueHat v18 || Modern day entomology - examining the inner workings of the bu...
BlueHat Security Conference
 
BlueHat v18 || The matrix has you - protecting linux using deception
BlueHat v18 || The matrix has you - protecting linux using deceptionBlueHat v18 || The matrix has you - protecting linux using deception
BlueHat v18 || The matrix has you - protecting linux using deception
BlueHat Security Conference
 

Más de BlueHat Security Conference (20)

BlueHat Seattle 2019 || The cake is a lie! Uncovering the secret world of mal...
BlueHat Seattle 2019 || The cake is a lie! Uncovering the secret world of mal...BlueHat Seattle 2019 || The cake is a lie! Uncovering the secret world of mal...
BlueHat Seattle 2019 || The cake is a lie! Uncovering the secret world of mal...
 
BlueHat Seattle 2019 || Keynote
BlueHat Seattle 2019 || KeynoteBlueHat Seattle 2019 || Keynote
BlueHat Seattle 2019 || Keynote
 
BlueHat Seattle 2019 || Guarding Against Physical Attacks: The Xbox One Story
BlueHat Seattle 2019 || Guarding Against Physical Attacks: The Xbox One StoryBlueHat Seattle 2019 || Guarding Against Physical Attacks: The Xbox One Story
BlueHat Seattle 2019 || Guarding Against Physical Attacks: The Xbox One Story
 
BlueHat Seattle 2019 || Kubernetes Practical Attack and Defense
BlueHat Seattle 2019 || Kubernetes Practical Attack and DefenseBlueHat Seattle 2019 || Kubernetes Practical Attack and Defense
BlueHat Seattle 2019 || Kubernetes Practical Attack and Defense
 
BlueHat Seattle 2019 || Open Source Security, vulnerabilities never come alone
BlueHat Seattle 2019 || Open Source Security, vulnerabilities never come aloneBlueHat Seattle 2019 || Open Source Security, vulnerabilities never come alone
BlueHat Seattle 2019 || Open Source Security, vulnerabilities never come alone
 
BlueHat Seattle 2019 || Modern Binary Analysis with ILs
BlueHat Seattle 2019 || Modern Binary Analysis with ILsBlueHat Seattle 2019 || Modern Binary Analysis with ILs
BlueHat Seattle 2019 || Modern Binary Analysis with ILs
 
BlueHat Seattle 2019 || Don't forget to SUBSCRIBE.
BlueHat Seattle 2019 || Don't forget to SUBSCRIBE.BlueHat Seattle 2019 || Don't forget to SUBSCRIBE.
BlueHat Seattle 2019 || Don't forget to SUBSCRIBE.
 
BlueHat Seattle 2019 || I'm in your cloud: A year of hacking Azure AD
BlueHat Seattle 2019 || I'm in your cloud: A year of hacking Azure ADBlueHat Seattle 2019 || I'm in your cloud: A year of hacking Azure AD
BlueHat Seattle 2019 || I'm in your cloud: A year of hacking Azure AD
 
BlueHat Seattle 2019 || Autopsies of Recent DFIR Investigations
BlueHat Seattle 2019 || Autopsies of Recent DFIR InvestigationsBlueHat Seattle 2019 || Autopsies of Recent DFIR Investigations
BlueHat Seattle 2019 || Autopsies of Recent DFIR Investigations
 
BlueHat Seattle 2019 || The good, the bad & the ugly of ML based approaches f...
BlueHat Seattle 2019 || The good, the bad & the ugly of ML based approaches f...BlueHat Seattle 2019 || The good, the bad & the ugly of ML based approaches f...
BlueHat Seattle 2019 || The good, the bad & the ugly of ML based approaches f...
 
BlueHat Seattle 2019 || Are We There Yet: Why Does Application Security Take ...
BlueHat Seattle 2019 || Are We There Yet: Why Does Application Security Take ...BlueHat Seattle 2019 || Are We There Yet: Why Does Application Security Take ...
BlueHat Seattle 2019 || Are We There Yet: Why Does Application Security Take ...
 
BlueHat Seattle 2019 || Building Secure Machine Learning Pipelines: Security ...
BlueHat Seattle 2019 || Building Secure Machine Learning Pipelines: Security ...BlueHat Seattle 2019 || Building Secure Machine Learning Pipelines: Security ...
BlueHat Seattle 2019 || Building Secure Machine Learning Pipelines: Security ...
 
BlueHat v18 || First strontium uefi rootkit unveiled
BlueHat v18 || First strontium uefi rootkit unveiledBlueHat v18 || First strontium uefi rootkit unveiled
BlueHat v18 || First strontium uefi rootkit unveiled
 
BlueHat v18 || WSL reloaded - Let's try to do better fuzzing
BlueHat v18 || WSL reloaded - Let's try to do better fuzzingBlueHat v18 || WSL reloaded - Let's try to do better fuzzing
BlueHat v18 || WSL reloaded - Let's try to do better fuzzing
 
BlueHat v18 || The hitchhiker's guide to north korea's malware galaxy
BlueHat v18 || The hitchhiker's guide to north korea's malware galaxyBlueHat v18 || The hitchhiker's guide to north korea's malware galaxy
BlueHat v18 || The hitchhiker's guide to north korea's malware galaxy
 
BlueHat v18 || Retpoline - the anti-spectre (type 2) mitigation in windows
BlueHat v18 || Retpoline - the anti-spectre (type 2) mitigation in windowsBlueHat v18 || Retpoline - the anti-spectre (type 2) mitigation in windows
BlueHat v18 || Retpoline - the anti-spectre (type 2) mitigation in windows
 
BlueHat v18 || Massive scale usb device driver fuzz without device
BlueHat v18 || Massive scale usb device driver fuzz without deviceBlueHat v18 || Massive scale usb device driver fuzz without device
BlueHat v18 || Massive scale usb device driver fuzz without device
 
BlueHat v18 || Modern day entomology - examining the inner workings of the bu...
BlueHat v18 || Modern day entomology - examining the inner workings of the bu...BlueHat v18 || Modern day entomology - examining the inner workings of the bu...
BlueHat v18 || Modern day entomology - examining the inner workings of the bu...
 
BlueHat v18 || The matrix has you - protecting linux using deception
BlueHat v18 || The matrix has you - protecting linux using deceptionBlueHat v18 || The matrix has you - protecting linux using deception
BlueHat v18 || The matrix has you - protecting linux using deception
 
BlueHat v18 || An ice-cold boot to break bit locker
BlueHat v18 || An ice-cold boot to break bit lockerBlueHat v18 || An ice-cold boot to break bit locker
BlueHat v18 || An ice-cold boot to break bit locker
 

Último

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Último (20)

TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 

BlueHat v18 || Straight outta v mware - modern exploitation of the svga device for guest-to-host escapes

  • 1. Straight outta VMware: Modern exploitation of the SVGA device for guest-to-host escapes Zisis Sialveras (zisis@census-labs.com) BlueHatv18 www.census-labs.com
  • 2. > WHOAMI • Computer Security Researcher at CENSUS – RE, exploit development, vulnerability research • Electrical & Computer Engineering in A.U.Th • Used to mess with knowledge-based fuzzers • My twitter handle is @_zisis
  • 3. > AGENDA • VMware architecture – VMware modules – SVGA thread / Sending commands – SVGA3D communication protocol • Exploitation – Exploitation primitives – VMSA-2017-0006 (demo!) • Conclusion / Q&A
  • 5. > FIRST TASKS OF VMX APPLICATION • Calls PowerOn callbacks from ModuleTable • MKS, DevicePowerOn and SVGALate modules are associated with the virtual graphics device
  • 6. > MKS MODULE • Acronym for Mouse Keyboard Screen • Spawns the MKS Thread – Discovers the available renderers (backend)
  • 7. > MKS MODULE – RENDERERS • Renderers constitute the VGA backend interface – which one is going to be enabled depends on the host OS • Available renderers in version 14: – MKSBasicOps, DX11Renderer, DX11RendererBasic, D3DRenderer, SWRenderer, GLRenderer, GLBasic, MTLRenderer, VABasic • On a Windows 10 host DX11Renderer is used. • DX11Renderer uses DXGI to communicate with the host graphics device.
  • 8. > DEVICEPOWERON MODULE • Contains a list of devices • SVGAPowerOn reads the VM configuration and spawns the SVGA thread • SVGA thread waits for initialization of other modules
  • 9. > SVGALATE MODULE • Calls IOCTL_VMX86_ALLOC_CONTIG_PAGES to allocate the SVGA FIFO and the Global Frame Buffer (GFB). • FIFO and GFB regions are shared between guest and host OS.
  • 10. > SVGA THREAD • Once VMM is ready, it signals the SVGA thread. • VMM has a specific shared memory region dedicated for communication with the SVGA thread. • SVGA enters an infinite loop at which – Processes commands sent by guest operating system via SVGA FIFO or command buffers
  • 11. > SVGA DEVICE – GUEST POINT OF VIEW • Guest user can send (SVGA3D) commands to the device – by SVGA FIFO – by commands buffers
  • 12. > SVGA THREAD – SVGA FIFO • Explained in great detail by Kostya Kortchinsky. • SVGA FIFO is a MMIO region. • Divided into two partitions – FIFO registers – FIFO data
  • 13. > SVGA FIFO – SUBMIT COMMAND • SVGA_FIFO_NEXT_CMD register denotes the next command offset in the FIFO data section • Each command begins with
  • 14. > SVGA REGISTERS – PORT I/O • SVGA device exposes a few general purpose registers • In, out instruction must be called to access the registers
  • 15. > COMMAND BUFFERS • Two registers must be set to submit a command buffer – SVGA_REG_COMMAND_HIGH: upper 32bit of physical address – SVGA_REG_COMMAND_LOW: lower 32bit of physical address and submits command
  • 17. > OBJECT TABLES • Object tables are used to keep track of SVGA3D entities (objects) • Available objects: – MOB, Surface, Context, Shader, Screentarget, DXContext • Stored in guest memory • PPN = Physical Page Number (PhysAddr >> 0xC)
  • 18. > MEMORY OBJECTS • MOBs are stored in guest memory as well • They contain raw data used for initialization of SVGA objects (context, shader, etc)
  • 19. > COMMON SVGA OBJECTS • Objects –Context –DXContext –Shader –Surface –Screentarget • Operations –Define –Bind –Destroy –Readback
  • 23. > EXPLOITATION PRIMITIVES • Heap spraying • How to use shaders • Analysis of SVGA_3D_CMD_SET_SHADER • Create new shader • Heap spraying • Information leakage and code execution • Resource container • Analysis of surface copy command • Attacking VMware • Hands-on: Exploiting a public bug
  • 24. > HOW TO USE SHADERS • Define a shader • Define a MOB • Bind shader with the MOB • Set shader to a context – Allocation of shader data structure on the host side • Next draw command will use the requested shader
  • 25. > ANALYSIS OF SVGA_3D_CMD_SET_SHADER
  • 26. > CREATE NEW SHADER
  • 27. > HEAP SPRAYING SUMMARY • On a single “set shader” command, two allocation of the requested size are performed. – The first one is freed immediately. – The latter is freed when the guest user destroys the shader. • VMware keeps track of the total shader allocation size. Must be less than 8MB • Guest is able to define as many shaders fit in shader object table – The size of the object table can be modified by SVGA3D_CMD_SET_OTABLE command.
  • 28. > SURFACES • Surface definition – All host VRAM resources, including 2D textures, 3D textures, cube environment maps, render targets, and vertex/index buffers are represented using a homogeneous surface abstraction. • Surface is a frontend object.
  • 29. > RESOURCE CONTAINERS • Resource containers is a data structure of the backend (DX11Renderer). • They are often associated with surfaces.
  • 30. > RESOURCE CONTAINERS • There are ten (10) different types of resource containers • Which type will be created depends on the arguments that the surface was defined with • Similarly to the other SVGA objects, VMware creates them only when they are going to be used (lazy allocation)
  • 31. > SURFACE COPY • SVGA_3D_CMD_SU RFACE_COPY copies parts (three dimensional boxes) from the source to the destination surface
  • 33.
  • 35. > RESOURCE CONTAINER GETDATABUFFER
  • 36. > ATTACKING VMWARE • Resource containers are very attractive to attackers, since they • can be allocated multiple times • contain pointers to heap • contain dimensions • contain function pointers
  • 37. > ATTACKING VMWARE • Assume that we have a memory corruption bug. • Consider the following surface – Width = 0x45 – Height = 0x2 – Depth = 0x1 – Surface format = SVGA3D_A4R4G4B4 • Since the surface format requires 2 bytes for each pixel the total size of the RC->DataBuffer will be 0x45 * 0x2 * 0x1 * 2 = 0x114 bytes.
  • 38. > ATTACKING VMWARE • Corrupt width of RC with a greater value – RowPitch will also be affected • Box must be in boundaries due to the checks at frontend. • DataPtr will point after the end of the buffer
  • 39. > AVOID THE PITFALL • MyDX11Resource_MapSubresourceBox will refresh the contents of the DataBuffer with the contents of the GPU. – This will trash the data that we want to write back to guest. • This can be avoided by corrupting and decreasing the value of height. – GetDataBuffer will silently fail but the surface copy command will continue.
  • 40. > LEAK AND CODE EXECUTION • If a RC is placed after the DataBuffer, we can leak function pointers. – LFH chunks are placed next to each other • Once the attacker has vmware-vmx base address, he/she can corrupt GetDataBuffer function pointer and call surface copy command.
  • 42. > VMSA-2017-0006 • Bug is located in SM4 bytecode parser • Fixed at version 12.5.5 of VMware – I patched vmware-vmx.exe to reintroduce the vulnerability on 14.1.3 • Developed an escape exploit (named “katachnia”) which consists of two parts (userland application, kernel driver)
  • 43. > VULNERABILITY DETAILS • A malicious shader must be set to a DXContext (using SVGA3D_CMD_DX_SET_SHADER) • A call to SVGA3D_CMD_DX_DRAW will trigger the shader bytecode parser • During the call an object of 0x26D80 size will be allocated – Values from the bytecode will be used as index to access that shader
  • 44. > VULNERABLE VERSION 12.5.4 - DCL_CONSTANTBUFFER (59H)
  • 45. > PATCHED VERSION 12.5.5 - DCL_CONSTANTBUFFER (59H)
  • 46. > VULNERABLE VERSION 12.5.4 - DCL_INDEXRANGE (5B)
  • 47. > PATCHED VERSION 12.5.5 – DCL_INDEXRANGE (5B)
  • 49. > DRIVER ENTRY • BAR0 contains I/O base • BAR2 contains the FIFO physical address
  • 51. > HOW TO SETUP SVGA • FIFO initialization • Object tables definition
  • 52. > LEAK_VMX_ADDR_IOCTL KATACHNIA APPLICATION KATACHNIA KERNEL DRIVER INIT_SVGA_IOCTL Config is done, graphics are dead (black screen) LEAK_VMX_ADDR_IOCTL
  • 53. > PREPARE MEMORY LAYOUT • Allocate a big chunk that will be occupied later by the allocation at SVGA3D_CMD_DX_DRAW • Repeatedly allocate a shader of size 0x150 0x26D80
  • 54. > PREPARE MEMORY LAYOUT • Allocate a big chunk that will be occupied later by the allocation at SVGA3D_CMD_DX_DRAW • Repeatedly allocate a shader of size 0x150 0x26D80 LFH 0x150
  • 55. > PREPARE MEMORY LAYOUT • Replace all 0x150 heap chunks with ResourceContainer1 0x26D80 LFH 0x150 (RC1)
  • 57. > PREPARE MEMORY LAYOUT DataBuffers Resource Container type 0 0x26D80 LFH 0x150 (RC1) LFH 0x150 (RC0)
  • 58. > FREE BIG SHADER free LFH 0x150 (RC1) LFH 0x150 (RC0)
  • 59. > TRIGGER THE BUG 0x26D80 Vulnerable buffer LFH 0x150 (RC1) LFH 0x150 (RC0)
  • 60. > COPY SURFACES BACK TO GUEST • Call surface copy until encounter the corrupted RC1 free LFH 0x150 (RC1) LFH 0x150 (RC0)
  • 61. > CORRUPT A FUNCTION POINTER • Corrupt RC->GetDataBuffer with the first ROP gadget 0x26D80 Vulnerable buffer LFH 0x150 (RC1) LFH 0x150 (RC0)
  • 62. > HONEY, I DEFEATED ASLR • Corrupt the QWORD at offset 8 of RC1 with the address of the global pointer of the RPC content buffer • No much time to talk for RPC (google for more info) • In short, guest user can allocate a controllable buffer on the heap of the host which address is stored at a global variable
  • 63. > YAY, WE GOT THE ADDRESS KATACHNIA APPLICATION KATACHNIA KERNEL DRIVER INIT_SVGA_IOCTL Config is done, graphics are dead (black screen) LEAK_VMX_ADDR_IOCTL vmware-vmx address returned, RC1->GetDataBuffer is corrupted with the first ROP gadget
  • 64. > PLACE THE ROP CHAIN… KATACHNIA APPLICATION KATACHNIA KERNEL DRIVER INIT_SVGA_IOCTL Config is done, graphics are dead (black screen) LEAK_VMX_ADDR_IOCTL vmware-vmx address returned, RC1->GetDataBuffer is corrupted with the first ROP gadget RPC Place on host’s heap the ROP chain
  • 65. > PRISON BREAK! KATACHNIAAPPLICATION KATACHNIAKERNELDRIVER INIT_SVGA_IOCTL Config is done, graphics are dead (black screen) LEAK_VMX_ADDR_IOCTL vmware-vmx address returned, RC1->GetDataBuffer is corrupted with the first ROP gadget RPC Place on host’s heap the ROP chain ESCAPE_IOCTL !!1
  • 66. > SHOW OFF (AKA DEMO!)
  • 67. > CONCLUSION • Reusable and reliable exploitation primitives for memory corruption bugs were introduced • SVGA has a good quality of code – however, it is amazingly complex, so expect more bugs • VMware lacks modern exploitation mitigations – No isolated heap – No CFI
  • 68. > REFERENCES • Cloudburst - Kostya Kortchinsky, BHUSA 2009 • GPU Virtualization on VMware’s Hosted I/O Architecture - Micah Dowty, Jeremy Sugerman • Wandering through the Shady Corners of VMware Workstation/Fusion - ComSecuris, Nico Golde, Ralf-Philipp Weinmann • L'art de l'evasion: Modern VMWare Exploitation Techniques - Brian Gorenc, Abdul- Aziz Hariri, Jasiel Spelman, OffensiveCon 2018 • The great escapes of Vmware: A retrospective case study of Vmware guest-to-host escape vulnerabilities – Debasish Mandal & Yakun Zhang, BHEU 2017 • Linux kernel driver (vmwgfx) is a treasure! • Special thanks fly to: Nick Sampanis, Aris Thallas, Sotiris Papadopoulos