SlideShare ist ein Scribd-Unternehmen logo
1 von 54
Downloaden Sie, um offline zu lesen
Virtunoid: Breaking out of KVM

                               Nelson Elhage

                                   DEFCON 19


                              August 8, 2011




Nelson Elhage (DEFCON 19)   Virtunoid: Breaking out of KVM   August 8, 2011   1 / 50
KVM




    The new hotness for Virtualization on Linux
    Official virtualization platform for Ubuntu and RHEL.




 Nelson Elhage (DEFCON 19)   Virtunoid: Breaking out of KVM   August 8, 2011   2 / 50
Who am I?




    Kernel engineer at Ksplice (now Oracle).
    Open-source security hacker in my spare time.




 Nelson Elhage (DEFCON 19)   Virtunoid: Breaking out of KVM   August 8, 2011   3 / 50
Outline

1    KVM: Architecture overview
      Attack Surface

2    CVE-2011-1751: The bug

3    virtunoid.c: The exploit
        %rip control
        Getting to shellcode
        Bypassing ASLR

4    Conclusions and further research

5    Demo


    Nelson Elhage (DEFCON 19)   Virtunoid: Breaking out of KVM   August 8, 2011   4 / 50
KVM: Architecture overview




1    KVM: Architecture overview
      Attack Surface

2    CVE-2011-1751: The bug

3    virtunoid.c: The exploit
        %rip control
        Getting to shellcode
        Bypassing ASLR

4    Conclusions and further research

5    Demo



    Nelson Elhage (DEFCON 19)               Virtunoid: Breaking out of KVM   August 8, 2011   5 / 50
KVM: Architecture overview


KVM: The components




    kvm.ko
    kvm-intel.ko / kvm-amd.ko
    qemu-kvm




 Nelson Elhage (DEFCON 19)               Virtunoid: Breaking out of KVM   August 8, 2011   6 / 50
KVM: Architecture overview


kvm.ko




    The core KVM kernel module
    Implements the virtual CPU and MMU (with the hardware’s help).
    Emulates a few devices in-kernel for efficiency.
    Provides ioctls for communicating with the kernel module.
    Contains an emulator for a subset of x86 used in handling certain
    traps (!)




 Nelson Elhage (DEFCON 19)               Virtunoid: Breaking out of KVM   August 8, 2011   7 / 50
KVM: Architecture overview


kvm-intel.ko / kvm-amd.ko




    Provides support for Intel’s VMX and AMD’s SVM virtualization
    extensions.
    Relatively small compared to the rest of KVM (one .c file each)




 Nelson Elhage (DEFCON 19)               Virtunoid: Breaking out of KVM   August 8, 2011   8 / 50
KVM: Architecture overview


qemu-kvm



    Provides the most direct user interface to KVM.
    Based on the classic qemu emulator.
    Implements the bulk of the virtual devices a VM uses.
    Implements a wide variety of types of devices.
    An order of magnitude more code than the kernel module.
    There is work in progress to replace this component, but it’s a ways
    out, if ever.




 Nelson Elhage (DEFCON 19)               Virtunoid: Breaking out of KVM   August 8, 2011   9 / 50
KVM: Architecture overview   Attack Surface


kvm.ko


    A tempting target – successful exploitation gets ring0 on the host
    without further escalation.
    Much less code than qemu-kvm, and much of that is dedicated to
    interfacing with qemu-kvm, not the guest directly.
    The x86 emulator is an interesting target.
           A number of bugs have been discovered allowing privesc within the
           guest.
           A lot of tricky code that is not often exercised.
           Not the target of this talk, but I have some ideas for future work.
    Also, be on the lookout for privesc within either the host or guest.




 Nelson Elhage (DEFCON 19)               Virtunoid: Breaking out of KVM    August 8, 2011   10 / 50
KVM: Architecture overview   Attack Surface


kvm-intel.ko / kvm-amd.ko




    Not much direct attack surface.
    Largely straight-line code doing lots of low-level bit twiddling with the
    hardware structures.
    Lots of subtlety, possibly some more complex attacks.




 Nelson Elhage (DEFCON 19)               Virtunoid: Breaking out of KVM    August 8, 2011   11 / 50
KVM: Architecture overview   Attack Surface


qemu-kvm



    A veritable goldmine of targets.
    Hundreds of thousands of lines of device emulation code.
    Emulated devices communicate directly with the guest via MMIO or
    IO ports, lots of attack surface.
    Much of the code comes straight from qemu and is ancient.
    qemu-kvm is often sandboxed using SELinux or similar, meaning that
    successful exploitation will often require a second privesc within the
    host.
           (Fortunately, Linux never has any of those)




 Nelson Elhage (DEFCON 19)               Virtunoid: Breaking out of KVM    August 8, 2011   12 / 50
CVE-2011-1751: The bug




1    KVM: Architecture overview
      Attack Surface

2    CVE-2011-1751: The bug

3    virtunoid.c: The exploit
        %rip control
        Getting to shellcode
        Bypassing ASLR

4    Conclusions and further research

5    Demo



    Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM   August 8, 2011   13 / 50
CVE-2011-1751: The bug


RHSA-2011:0534-1




   “It was found that the PIIX4 Power Management emulation layer in
  qemu-kvm did not properly check for hot plug eligibility during device
removals. A privileged guest user could use this flaw to crash the guest or,
     possibly, execute arbitrary code on the host. (CVE-2011-1751)”




  Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM   August 8, 2011   14 / 50
CVE-2011-1751: The bug


PIIX4




    The PIIX4 was a southbridge chip used in many circa-2000 Intel
    chipsets.
    The default southbridge emulated by qemu-kvm
    Includes ACPI support, a PCI-ISA bridge, an embedded MC146818
    RTC, and much more.




 Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM   August 8, 2011   15 / 50
CVE-2011-1751: The bug


Device Hotplug




    The PIIX4 supports PCI hotplug, implemented by writing values to IO
    port 0xae08.
    qemu-kvm emulates this by calling qdev_free(qdev);, which calls a
    device’s cleanup function and free()s it.
    Many devices weren’t implemented with hotplug in mind!




 Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM   August 8, 2011   16 / 50
CVE-2011-1751: The bug


The PCI-ISA bridge




    In particular, it should not be possible to unplug the ISA bridge.
    Among other things, the emulated MC146818 RTC hangs off the ISA
    bridge.
    KVM’s emulated RTC is not designed to be unplugged; In particular,
    it leaves around dangling QEMUTimer objects when unplugged.




 Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM   August 8, 2011   17 / 50
CVE-2011-1751: The bug


QEMUTimer

t y p e d e f v o i d QEMUTimerCB( v o i d * opaque ) ;

s t r u c t QEMUTimer {
        ...
        i n t 6 4 t e x p i r e t i m e ; /* i n n a n o s e c o n d s */
        QEMUTimerCB * cb ;
        v o i d * opaque ;
        s t r u c t QEMUTimer * n e x t ;
};

t y p e d e f s t r u c t RTCState {
    ...
    QEMUTimer * s e c o n d t i m e r ;
    ...
} RTCState ;
  Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM   August 8, 2011   18 / 50
CVE-2011-1751: The bug


Use-after-free




     Unplugging the virtual RTC free()s the RTCState
     It doesn’t free() or unregister either of the timers.
     So we’re left with dangling pointers from the QEMUTimers
     On the next second, we’ll call rtc_update_second(<freed
     RTCState> )




  Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM   August 8, 2011   19 / 50
CVE-2011-1751: The bug


Reproducer




#i n c l u d e <s y s / i o . h>

i n t main ( v o i d ) {
      iopl (3);
      o u t l (2 , 0 xae08 ) ;
      return 0;
}




  Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM   August 8, 2011   20 / 50
virtunoid.c: The exploit




1    KVM: Architecture overview
      Attack Surface

2    CVE-2011-1751: The bug

3    virtunoid.c: The exploit
        %rip control
        Getting to shellcode
        Bypassing ASLR

4    Conclusions and further research

5    Demo



    Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM   August 8, 2011   21 / 50
virtunoid.c: The exploit   %rip control


High-level TODO



 1   Inject a controlled QEMUTimer into qemu-kvm at a known address
 2   Eject the emulated ISA bridge
 3   Force an allocation into the freed RTCState, with second_timer
     pointing at our dummy timer.

     When rtc_update_second next runs, our timer will get scheduled.
     One second later, boom.




 Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM   August 8, 2011   22 / 50
virtunoid.c: The exploit   %rip control


1. Injecting data


     The guest’s RAM is backed by a simple mmap()ed region inside the
     qemu-kvm process.
     So we allocate an object in the guest, and compute
            hva = physmem_base + gpa
            gpa = (gva_to_gfn(gva) << PAGE_SHIFT)
               + page_offset(gva)
     For now, assume we can guess physmem_base (e.g. no ASLR)

hva host virtual address
gva guest virtual address
gpa guest physical address
gfn guest frame (physical page) number


  Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM   August 8, 2011   23 / 50
virtunoid.c: The exploit   %rip control


qemu-kvm userspace network stack




    qemu-kvm contains a user-mode networking stack.
    Implements a DHCP server, DNS server, and a gateway NAT.




 Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM   August 8, 2011   24 / 50
virtunoid.c: The exploit   %rip control


Userspace network stack packet delivery




    The user-mode stack normally handles packets synchronously.
    To prevent recursion, if a second packet is emitted while handling a
    first packet, the second packet is queued, using malloc().




 Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM   August 8, 2011   25 / 50
virtunoid.c: The exploit   %rip control




   The virtual network gateway responds synchronously to ICMP ping.




Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM   August 8, 2011   26 / 50
virtunoid.c: The exploit   %rip control


Putting it together




  1   Allocate a fake QEMUTimer
            Point ->cb at the desired %rip.
  2   Calculate its address in the host.
  3   Write 2 to IO port 0xae08 to eject the ISA bridge.
  4   ping the emulated gateway with ICMP packets containing pointers to
      your allocated timer in the host.




  Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM   August 8, 2011   27 / 50
virtunoid.c: The exploit   Getting to shellcode


We’ve got %rip, now what?




 Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM           August 8, 2011   28 / 50
virtunoid.c: The exploit   Getting to shellcode


We’ve got %rip, now what?




    Get EIP = 0x41414141 and declare victory.




 Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM           August 8, 2011   28 / 50
virtunoid.c: The exploit   Getting to shellcode


We’ve got %rip, now what?




    Get EIP = 0x41414141 and declare victory.
    Disable NX in my BIOS and call it good enough for a demo.




 Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM           August 8, 2011   28 / 50
virtunoid.c: The exploit   Getting to shellcode


We’ve got %rip, now what?




    Get EIP = 0x41414141 and declare victory.
    Disable NX in my BIOS and call it good enough for a demo.
    Do a ROP pivot, ROP to victory.




 Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM           August 8, 2011   28 / 50
virtunoid.c: The exploit   Getting to shellcode


We’ve got %rip, now what?




    Get EIP = 0x41414141 and declare victory.
    Disable NX in my BIOS and call it good enough for a demo.
    Do a ROP pivot, ROP to victory.
    Do something else clever.




 Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM           August 8, 2011   28 / 50
virtunoid.c: The exploit   Getting to shellcode


Another look at QEMUTimer




s t r u c t QEMUTimer {
        ...
        i n t 6 4 t e x p i r e t i m e ; /* i n n a n o s e c o n d s */
        ...
        s t r u c t QEMUTimer * n e x t ;
};




 Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM           August 8, 2011   29 / 50
virtunoid.c: The exploit   Getting to shellcode


qemu_run_timers

s t a t i c v o i d q e m u r u n t i m e r s ( QEMUClock * c l o c k )
{
       QEMUTimer ** p t i m e r h e a d , * t s ;
        int64 t current time ;

        current time = qemu get clock ns ( clock );
        p t i m e r h e a d = &a c t i v e t i m e r s [ c l o c k −>t y p e ] ;
        for ( ; ; ) {
                ts = * ptimer head ;
                i f ( ! qemu timer expired ns ( ts , c u r r e n t t i m e ))
                       break ;
               * p t i m e r h e a d = t s −>n e x t ;
                t s −>n e x t = NULL ;

                t s −>cb ( t s −>opaque ) ;
        }
}

    Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM           August 8, 2011   30 / 50
virtunoid.c: The exploit    Getting to shellcode


Timer chains

   second_timer


                                                      f1
                             −>cb
                             −>opaque                 X
                             −>next


                                                                                  f2
                                                    −>cb
                                                    −>opaque                      Y
                                                    −>next

                                                                                                  f3
                                                                              −>cb
                                                                              −>opaque            Z
                                                                              −>next
                                                                                                      NULL
                                  ⇒ f1(X); f2(Y); f3(Z);


 Nelson Elhage (DEFCON 19)              Virtunoid: Breaking out of KVM                   August 8, 2011      31 / 50
virtunoid.c: The exploit   Getting to shellcode


More arguments




    amd64 calling convention: %rdi, %rsi, %rdx, . . .
    Every version of qemu_run_timers I’ve checked leaves %rsi
    untouched.




 Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM           August 8, 2011   32 / 50
virtunoid.c: The exploit   Getting to shellcode


More arguments




     set rsi :
         movl %r d i , %r s i
         ret

    Let f1 = set_rsi
    f2(Y, X)
    Same trick doesn’t work with %rdx.




 Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM           August 8, 2011   33 / 50
virtunoid.c: The exploit   Getting to shellcode


set_rsi




v o i d c p u o u t l ( p i o a d d r t addr , u i n t 3 2 t v a l )
{
       i o p o r t w r i t e ( 2 , addr , v a l ) ;
}




  Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM           August 8, 2011   34 / 50
virtunoid.c: The exploit   Getting to shellcode


Getting to mprotect



int mprotect(const void *addr, size_t len, int prot);
#define PROT_EXEC 0x4


s t a t i c u i n t 3 2 t i o p o r t r e a d l t h u n k ( v o i d * opaque , u i n t 3 2 t a d d r )
{
        IORange * i o p o r t = opaque ;
        u i n t 6 4 t data ;

       i o p o r t −>ops−>r e a d ( i o p o r t , a d d r − i o p o r t −>b a s e , 4 , &d a t a ) ;
       r e t u r n data ;
}




    Nelson Elhage (DEFCON 19)             Virtunoid: Breaking out of KVM               August 8, 2011    35 / 50
virtunoid.c: The exploit   Getting to shellcode


Putting it together



     Allocate a fake IORangeOps, with fake_ops->read = mprotect.
     Allocate a page-aligned IORange, with ->ops = fake_ops and
     ->base = -PAGE_SIZE.
     Copy shellcode immediately following the IORange.
     Construct a timer chain that calls
            cpu_outl(0, *)
            ioport_readl_thunk(fake_ioport, 0)
            fake_ioport + 1




  Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM           August 8, 2011   36 / 50
virtunoid.c: The exploit   Getting to shellcode


Why not ROP?




    Continued execution is dead simple.
    Reduced dependence on details of compiled code.
    I’m not that good at ROP :)




 Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM           August 8, 2011   37 / 50
virtunoid.c: The exploit   Bypassing ASLR


Addresses




    For a known qemu-kvm binary, we need two addresses.
           The base address of the qemu-kvm binary, to find code addresses.
           physmem_base, the address of the physical memory mapping inside
           qemu-kvm.




 Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM     August 8, 2011   38 / 50
virtunoid.c: The exploit   Bypassing ASLR


Option A




    Find an information leak.




 Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM     August 8, 2011   39 / 50
virtunoid.c: The exploit   Bypassing ASLR


Option B




    Assume non-PIE, and be clever.




 Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM     August 8, 2011   40 / 50
virtunoid.c: The exploit   Bypassing ASLR


fw_cfg




    Emulated IO ports 0x510 (address) and 0x511 (data)
    Used to communicate various tables to the qemu BIOS (e820 map,
    ACPI tables, etc)
    Also provides support for exporting writable tables to the BIOS.
    However, fw_cfg_write doesn’t check if the target table is supposed
    to be writable!




 Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM     August 8, 2011   41 / 50
virtunoid.c: The exploit   Bypassing ASLR


Static data




     Several fw_cfg areas are backed by statically-allocated buffers.
     Net result: nearly 500 writable bytes inside static variables.




  Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM     August 8, 2011   42 / 50
virtunoid.c: The exploit   Bypassing ASLR


read4 your way to victory




    mprotect needs a page-aligned address, so these aren’t suitable for
    our shellcode.
    But, we can construct fake timer chains in this space to build a
    read4() primitive.
    Follow pointers from static variables to find physmem_base
    Proceed as before.




 Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM     August 8, 2011   43 / 50
virtunoid.c: The exploit   Bypassing ASLR


Repeated timer chaining




    Previously, we ended timer chains with ->next = NULL.
    Instead, end them with a timer that calls rtc_update_second.
    The timer we control will be scheduled once a second, and we can
    change ->cb at any time.
    Now we can execute a read4, update structures based on the result,
    and then hijack the list again.




 Nelson Elhage (DEFCON 19)            Virtunoid: Breaking out of KVM     August 8, 2011   44 / 50
Conclusions and further research


Conclusions




    VM breakouts aren’t magic.
    Hypervisors are just as vulnerable as anything else.
    Device drivers are the weak spot.




 Nelson Elhage (DEFCON 19)             Virtunoid: Breaking out of KVM   August 8, 2011   45 / 50
Conclusions and further research


Comparing with some past breakouts




2008 “Adventures with a certain Xen vulnerability”, Xen, Invisible Things
     Lab
2009 “Cloudburst”, Immunity, VMware
2011 “Software attacks against Intel VT-d technology”, Invisible Things
     Lab, Xen




   Nelson Elhage (DEFCON 19)             Virtunoid: Breaking out of KVM   August 8, 2011   46 / 50
Conclusions and further research


Possible hardening directions




     Sandbox qemu-kvm (work underway well before this talk).
     Build qemu-kvm as PIE.
     Lazily mmap/mprotect guest RAM?
     XOR-encode key function pointers?
     More auditing and fuzzing of qemu-kvm.




  Nelson Elhage (DEFCON 19)             Virtunoid: Breaking out of KVM   August 8, 2011   47 / 50
Conclusions and further research


Future research directions




     Fuzzing/auditing kvm.ko (That x86 emulator sketches me)
     Fingerprinting qemu-kvm versions
     Searching for infoleaks (Rosenbugs?)




  Nelson Elhage (DEFCON 19)             Virtunoid: Breaking out of KVM   August 8, 2011   48 / 50
Demo


It’s demo time




 Nelson Elhage (DEFCON 19)   Virtunoid: Breaking out of KVM   August 8, 2011   49 / 50
Demo


Questions?




    nelhage@nelhage.com
    http://blog.nelhage.com
    @nelhage




 Nelson Elhage (DEFCON 19)   Virtunoid: Breaking out of KVM   August 8, 2011   50 / 50

Weitere ähnliche Inhalte

Was ist angesagt?

Virtualization with KVM (Kernel-based Virtual Machine)
Virtualization with KVM (Kernel-based Virtual Machine)Virtualization with KVM (Kernel-based Virtual Machine)
Virtualization with KVM (Kernel-based Virtual Machine)Novell
 
XPDS14: Removing the Xen Linux Upstream Delta of Various Linux Distros - Luis...
XPDS14: Removing the Xen Linux Upstream Delta of Various Linux Distros - Luis...XPDS14: Removing the Xen Linux Upstream Delta of Various Linux Distros - Luis...
XPDS14: Removing the Xen Linux Upstream Delta of Various Linux Distros - Luis...The Linux Foundation
 
XPDS14 - Xen on ARM: Status and Performance - Stefano Stabellini, Citrix
XPDS14 - Xen on ARM: Status and Performance - Stefano Stabellini, CitrixXPDS14 - Xen on ARM: Status and Performance - Stefano Stabellini, Citrix
XPDS14 - Xen on ARM: Status and Performance - Stefano Stabellini, CitrixThe Linux Foundation
 
Linux containers – next gen virtualization for cloud (atl summit) ar4 3 - copy
Linux containers – next gen virtualization for cloud (atl summit) ar4 3 - copyLinux containers – next gen virtualization for cloud (atl summit) ar4 3 - copy
Linux containers – next gen virtualization for cloud (atl summit) ar4 3 - copyBoden Russell
 
XPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE Systems
XPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE SystemsXPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE Systems
XPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE SystemsThe Linux Foundation
 
XPDS14: OpenXT - Security and the Properties of a Xen Virtualisation Platform...
XPDS14: OpenXT - Security and the Properties of a Xen Virtualisation Platform...XPDS14: OpenXT - Security and the Properties of a Xen Virtualisation Platform...
XPDS14: OpenXT - Security and the Properties of a Xen Virtualisation Platform...The Linux Foundation
 
Kvm virtualization platform
Kvm virtualization platformKvm virtualization platform
Kvm virtualization platformAhmad Hafeezi
 
KVM and docker LXC Benchmarking with OpenStack
KVM and docker LXC Benchmarking with OpenStackKVM and docker LXC Benchmarking with OpenStack
KVM and docker LXC Benchmarking with OpenStackBoden Russell
 
Containers are the future of the Cloud
Containers are the future of the CloudContainers are the future of the Cloud
Containers are the future of the CloudPavel Odintsov
 
Libvirt/KVM Driver Update (Kilo)
Libvirt/KVM Driver Update (Kilo)Libvirt/KVM Driver Update (Kilo)
Libvirt/KVM Driver Update (Kilo)Stephen Gordon
 
XPDS14 - Xen as High-Performance NFV Platform - Jun Nakajima, Intel
XPDS14 - Xen as High-Performance NFV Platform - Jun Nakajima, IntelXPDS14 - Xen as High-Performance NFV Platform - Jun Nakajima, Intel
XPDS14 - Xen as High-Performance NFV Platform - Jun Nakajima, IntelThe Linux Foundation
 
Shoot4U: Using VMM Assists to Optimize TLB Operations on Preempted vCPUs
Shoot4U: Using VMM Assists to Optimize TLB Operations on Preempted vCPUsShoot4U: Using VMM Assists to Optimize TLB Operations on Preempted vCPUs
Shoot4U: Using VMM Assists to Optimize TLB Operations on Preempted vCPUsJiannan Ouyang, PhD
 
The sexy world of Linux kernel pvops project
The sexy world of Linux kernel pvops projectThe sexy world of Linux kernel pvops project
The sexy world of Linux kernel pvops projectThe Linux Foundation
 
Kvm and libvirt
Kvm and libvirtKvm and libvirt
Kvm and libvirtplarsen67
 

Was ist angesagt? (20)

Virtualization with KVM (Kernel-based Virtual Machine)
Virtualization with KVM (Kernel-based Virtual Machine)Virtualization with KVM (Kernel-based Virtual Machine)
Virtualization with KVM (Kernel-based Virtual Machine)
 
XPDS14: Removing the Xen Linux Upstream Delta of Various Linux Distros - Luis...
XPDS14: Removing the Xen Linux Upstream Delta of Various Linux Distros - Luis...XPDS14: Removing the Xen Linux Upstream Delta of Various Linux Distros - Luis...
XPDS14: Removing the Xen Linux Upstream Delta of Various Linux Distros - Luis...
 
XPDS14 - Xen on ARM: Status and Performance - Stefano Stabellini, Citrix
XPDS14 - Xen on ARM: Status and Performance - Stefano Stabellini, CitrixXPDS14 - Xen on ARM: Status and Performance - Stefano Stabellini, Citrix
XPDS14 - Xen on ARM: Status and Performance - Stefano Stabellini, Citrix
 
Linux containers – next gen virtualization for cloud (atl summit) ar4 3 - copy
Linux containers – next gen virtualization for cloud (atl summit) ar4 3 - copyLinux containers – next gen virtualization for cloud (atl summit) ar4 3 - copy
Linux containers – next gen virtualization for cloud (atl summit) ar4 3 - copy
 
XPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE Systems
XPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE SystemsXPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE Systems
XPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE Systems
 
XPDS14: OpenXT - Security and the Properties of a Xen Virtualisation Platform...
XPDS14: OpenXT - Security and the Properties of a Xen Virtualisation Platform...XPDS14: OpenXT - Security and the Properties of a Xen Virtualisation Platform...
XPDS14: OpenXT - Security and the Properties of a Xen Virtualisation Platform...
 
Kvm virtualization platform
Kvm virtualization platformKvm virtualization platform
Kvm virtualization platform
 
64-bit ARM Unikernels on uKVM
64-bit ARM Unikernels on uKVM64-bit ARM Unikernels on uKVM
64-bit ARM Unikernels on uKVM
 
XPDS16: Xen Development Update
XPDS16: Xen Development UpdateXPDS16: Xen Development Update
XPDS16: Xen Development Update
 
KVM and docker LXC Benchmarking with OpenStack
KVM and docker LXC Benchmarking with OpenStackKVM and docker LXC Benchmarking with OpenStack
KVM and docker LXC Benchmarking with OpenStack
 
RunningFreeBSDonLinuxKVM
RunningFreeBSDonLinuxKVMRunningFreeBSDonLinuxKVM
RunningFreeBSDonLinuxKVM
 
Containers are the future of the Cloud
Containers are the future of the CloudContainers are the future of the Cloud
Containers are the future of the Cloud
 
Libvirt/KVM Driver Update (Kilo)
Libvirt/KVM Driver Update (Kilo)Libvirt/KVM Driver Update (Kilo)
Libvirt/KVM Driver Update (Kilo)
 
XPDS14 - Xen as High-Performance NFV Platform - Jun Nakajima, Intel
XPDS14 - Xen as High-Performance NFV Platform - Jun Nakajima, IntelXPDS14 - Xen as High-Performance NFV Platform - Jun Nakajima, Intel
XPDS14 - Xen as High-Performance NFV Platform - Jun Nakajima, Intel
 
Shoot4U: Using VMM Assists to Optimize TLB Operations on Preempted vCPUs
Shoot4U: Using VMM Assists to Optimize TLB Operations on Preempted vCPUsShoot4U: Using VMM Assists to Optimize TLB Operations on Preempted vCPUs
Shoot4U: Using VMM Assists to Optimize TLB Operations on Preempted vCPUs
 
Obstacles & Solutions for Livepatch Support on ARM64 Architecture
Obstacles & Solutions for Livepatch Support on ARM64 ArchitectureObstacles & Solutions for Livepatch Support on ARM64 Architecture
Obstacles & Solutions for Livepatch Support on ARM64 Architecture
 
The sexy world of Linux kernel pvops project
The sexy world of Linux kernel pvops projectThe sexy world of Linux kernel pvops project
The sexy world of Linux kernel pvops project
 
Kvm and libvirt
Kvm and libvirtKvm and libvirt
Kvm and libvirt
 
UEFI HTTP/HTTPS Boot
UEFI HTTP/HTTPS BootUEFI HTTP/HTTPS Boot
UEFI HTTP/HTTPS Boot
 
Docker vs kvm
Docker vs kvmDocker vs kvm
Docker vs kvm
 

Ähnlich wie Breaking out of KVM: Exploiting CVE-2011-1751

DPDK Summit - 08 Sept 2014 - Futurewei - Jun Xu - Revisit the IP Stack in Lin...
DPDK Summit - 08 Sept 2014 - Futurewei - Jun Xu - Revisit the IP Stack in Lin...DPDK Summit - 08 Sept 2014 - Futurewei - Jun Xu - Revisit the IP Stack in Lin...
DPDK Summit - 08 Sept 2014 - Futurewei - Jun Xu - Revisit the IP Stack in Lin...Jim St. Leger
 
VMware ESXi - Intel and Qlogic NIC throughput difference v0.6
VMware ESXi - Intel and Qlogic NIC throughput difference v0.6VMware ESXi - Intel and Qlogic NIC throughput difference v0.6
VMware ESXi - Intel and Qlogic NIC throughput difference v0.6David Pasek
 
KubeCon EU 2016: Secure, Cloud-Native Networking with Project Calico
KubeCon EU 2016: Secure, Cloud-Native Networking with Project CalicoKubeCon EU 2016: Secure, Cloud-Native Networking with Project Calico
KubeCon EU 2016: Secure, Cloud-Native Networking with Project CalicoKubeAcademy
 
SR-IOV, KVM and Emulex OneConnect 10Gbps cards on Debian/Stable
SR-IOV, KVM and Emulex OneConnect 10Gbps cards on Debian/StableSR-IOV, KVM and Emulex OneConnect 10Gbps cards on Debian/Stable
SR-IOV, KVM and Emulex OneConnect 10Gbps cards on Debian/Stablejuet-y
 
LCA13: Xen on ARM
LCA13: Xen on ARMLCA13: Xen on ARM
LCA13: Xen on ARMLinaro
 
Kubernetes laravel and kubernetes
Kubernetes   laravel and kubernetesKubernetes   laravel and kubernetes
Kubernetes laravel and kubernetesWilliam Stewart
 
Cloud computing comparing
Cloud computing comparingCloud computing comparing
Cloud computing comparingcolinli
 
MOVED: Optimizing the Design and Implementation of KVM/ARM - SFO17-403
MOVED: Optimizing the Design and Implementation of KVM/ARM - SFO17-403MOVED: Optimizing the Design and Implementation of KVM/ARM - SFO17-403
MOVED: Optimizing the Design and Implementation of KVM/ARM - SFO17-403Linaro
 
SR-IOV ixgbe Driver Limitations and Improvement
SR-IOV ixgbe Driver Limitations and ImprovementSR-IOV ixgbe Driver Limitations and Improvement
SR-IOV ixgbe Driver Limitations and ImprovementLF Events
 
LCC17 - Securing Embedded Systems with the Hypervisor - Lars Kurth, Citrix
LCC17 - Securing Embedded Systems with the Hypervisor - Lars Kurth, CitrixLCC17 - Securing Embedded Systems with the Hypervisor - Lars Kurth, Citrix
LCC17 - Securing Embedded Systems with the Hypervisor - Lars Kurth, CitrixThe Linux Foundation
 
FreeBSD VPC Introduction
FreeBSD VPC IntroductionFreeBSD VPC Introduction
FreeBSD VPC IntroductionSean Chittenden
 
Advanced microservices with .Net
Advanced microservices with .NetAdvanced microservices with .Net
Advanced microservices with .NetDon Schenck
 
Hacktivity 2016: Stealthy, hypervisor based malware analysis
Hacktivity 2016: Stealthy, hypervisor based malware analysisHacktivity 2016: Stealthy, hypervisor based malware analysis
Hacktivity 2016: Stealthy, hypervisor based malware analysisTamas K Lengyel
 
Atf 3 q15-6 - solutions for scaling the cloud computing network infrastructure
Atf 3 q15-6 - solutions for scaling the cloud computing network infrastructureAtf 3 q15-6 - solutions for scaling the cloud computing network infrastructure
Atf 3 q15-6 - solutions for scaling the cloud computing network infrastructureMason Mei
 
Linaro connect : Introduction to Xen on ARM
Linaro connect : Introduction to Xen on ARMLinaro connect : Introduction to Xen on ARM
Linaro connect : Introduction to Xen on ARMThe Linux Foundation
 
LAS16-500: The Rise and Fall of Assembler and the VGIC from Hell
LAS16-500: The Rise and Fall of Assembler and the VGIC from HellLAS16-500: The Rise and Fall of Assembler and the VGIC from Hell
LAS16-500: The Rise and Fall of Assembler and the VGIC from HellLinaro
 
Rmll Virtualization As Is Tool 20090707 V1.0
Rmll Virtualization As Is Tool 20090707 V1.0Rmll Virtualization As Is Tool 20090707 V1.0
Rmll Virtualization As Is Tool 20090707 V1.0guest72e8c1
 

Ähnlich wie Breaking out of KVM: Exploiting CVE-2011-1751 (20)

DPDK Summit - 08 Sept 2014 - Futurewei - Jun Xu - Revisit the IP Stack in Lin...
DPDK Summit - 08 Sept 2014 - Futurewei - Jun Xu - Revisit the IP Stack in Lin...DPDK Summit - 08 Sept 2014 - Futurewei - Jun Xu - Revisit the IP Stack in Lin...
DPDK Summit - 08 Sept 2014 - Futurewei - Jun Xu - Revisit the IP Stack in Lin...
 
VMware ESXi - Intel and Qlogic NIC throughput difference v0.6
VMware ESXi - Intel and Qlogic NIC throughput difference v0.6VMware ESXi - Intel and Qlogic NIC throughput difference v0.6
VMware ESXi - Intel and Qlogic NIC throughput difference v0.6
 
KubeCon EU 2016: Secure, Cloud-Native Networking with Project Calico
KubeCon EU 2016: Secure, Cloud-Native Networking with Project CalicoKubeCon EU 2016: Secure, Cloud-Native Networking with Project Calico
KubeCon EU 2016: Secure, Cloud-Native Networking with Project Calico
 
Secure Containers with EPT Isolation
Secure Containers with EPT IsolationSecure Containers with EPT Isolation
Secure Containers with EPT Isolation
 
SR-IOV, KVM and Emulex OneConnect 10Gbps cards on Debian/Stable
SR-IOV, KVM and Emulex OneConnect 10Gbps cards on Debian/StableSR-IOV, KVM and Emulex OneConnect 10Gbps cards on Debian/Stable
SR-IOV, KVM and Emulex OneConnect 10Gbps cards on Debian/Stable
 
LCA13: Xen on ARM
LCA13: Xen on ARMLCA13: Xen on ARM
LCA13: Xen on ARM
 
Kubernetes laravel and kubernetes
Kubernetes   laravel and kubernetesKubernetes   laravel and kubernetes
Kubernetes laravel and kubernetes
 
Cloud computing comparing
Cloud computing comparingCloud computing comparing
Cloud computing comparing
 
MOVED: Optimizing the Design and Implementation of KVM/ARM - SFO17-403
MOVED: Optimizing the Design and Implementation of KVM/ARM - SFO17-403MOVED: Optimizing the Design and Implementation of KVM/ARM - SFO17-403
MOVED: Optimizing the Design and Implementation of KVM/ARM - SFO17-403
 
SR-IOV ixgbe Driver Limitations and Improvement
SR-IOV ixgbe Driver Limitations and ImprovementSR-IOV ixgbe Driver Limitations and Improvement
SR-IOV ixgbe Driver Limitations and Improvement
 
LCC17 - Securing Embedded Systems with the Hypervisor - Lars Kurth, Citrix
LCC17 - Securing Embedded Systems with the Hypervisor - Lars Kurth, CitrixLCC17 - Securing Embedded Systems with the Hypervisor - Lars Kurth, Citrix
LCC17 - Securing Embedded Systems with the Hypervisor - Lars Kurth, Citrix
 
FreeBSD VPC Introduction
FreeBSD VPC IntroductionFreeBSD VPC Introduction
FreeBSD VPC Introduction
 
Advanced microservices with .Net
Advanced microservices with .NetAdvanced microservices with .Net
Advanced microservices with .Net
 
Hacktivity 2016: Stealthy, hypervisor based malware analysis
Hacktivity 2016: Stealthy, hypervisor based malware analysisHacktivity 2016: Stealthy, hypervisor based malware analysis
Hacktivity 2016: Stealthy, hypervisor based malware analysis
 
Atf 3 q15-6 - solutions for scaling the cloud computing network infrastructure
Atf 3 q15-6 - solutions for scaling the cloud computing network infrastructureAtf 3 q15-6 - solutions for scaling the cloud computing network infrastructure
Atf 3 q15-6 - solutions for scaling the cloud computing network infrastructure
 
Linaro connect : Introduction to Xen on ARM
Linaro connect : Introduction to Xen on ARMLinaro connect : Introduction to Xen on ARM
Linaro connect : Introduction to Xen on ARM
 
Kvm setup
Kvm setupKvm setup
Kvm setup
 
LAS16-500: The Rise and Fall of Assembler and the VGIC from Hell
LAS16-500: The Rise and Fall of Assembler and the VGIC from HellLAS16-500: The Rise and Fall of Assembler and the VGIC from Hell
LAS16-500: The Rise and Fall of Assembler and the VGIC from Hell
 
RMLL / LSM 2009
RMLL / LSM 2009RMLL / LSM 2009
RMLL / LSM 2009
 
Rmll Virtualization As Is Tool 20090707 V1.0
Rmll Virtualization As Is Tool 20090707 V1.0Rmll Virtualization As Is Tool 20090707 V1.0
Rmll Virtualization As Is Tool 20090707 V1.0
 

Kürzlich hochgeladen

Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 

Kürzlich hochgeladen (20)

Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 

Breaking out of KVM: Exploiting CVE-2011-1751

  • 1. Virtunoid: Breaking out of KVM Nelson Elhage DEFCON 19 August 8, 2011 Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 1 / 50
  • 2. KVM The new hotness for Virtualization on Linux Official virtualization platform for Ubuntu and RHEL. Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 2 / 50
  • 3. Who am I? Kernel engineer at Ksplice (now Oracle). Open-source security hacker in my spare time. Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 3 / 50
  • 4. Outline 1 KVM: Architecture overview Attack Surface 2 CVE-2011-1751: The bug 3 virtunoid.c: The exploit %rip control Getting to shellcode Bypassing ASLR 4 Conclusions and further research 5 Demo Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 4 / 50
  • 5. KVM: Architecture overview 1 KVM: Architecture overview Attack Surface 2 CVE-2011-1751: The bug 3 virtunoid.c: The exploit %rip control Getting to shellcode Bypassing ASLR 4 Conclusions and further research 5 Demo Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 5 / 50
  • 6. KVM: Architecture overview KVM: The components kvm.ko kvm-intel.ko / kvm-amd.ko qemu-kvm Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 6 / 50
  • 7. KVM: Architecture overview kvm.ko The core KVM kernel module Implements the virtual CPU and MMU (with the hardware’s help). Emulates a few devices in-kernel for efficiency. Provides ioctls for communicating with the kernel module. Contains an emulator for a subset of x86 used in handling certain traps (!) Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 7 / 50
  • 8. KVM: Architecture overview kvm-intel.ko / kvm-amd.ko Provides support for Intel’s VMX and AMD’s SVM virtualization extensions. Relatively small compared to the rest of KVM (one .c file each) Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 8 / 50
  • 9. KVM: Architecture overview qemu-kvm Provides the most direct user interface to KVM. Based on the classic qemu emulator. Implements the bulk of the virtual devices a VM uses. Implements a wide variety of types of devices. An order of magnitude more code than the kernel module. There is work in progress to replace this component, but it’s a ways out, if ever. Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 9 / 50
  • 10. KVM: Architecture overview Attack Surface kvm.ko A tempting target – successful exploitation gets ring0 on the host without further escalation. Much less code than qemu-kvm, and much of that is dedicated to interfacing with qemu-kvm, not the guest directly. The x86 emulator is an interesting target. A number of bugs have been discovered allowing privesc within the guest. A lot of tricky code that is not often exercised. Not the target of this talk, but I have some ideas for future work. Also, be on the lookout for privesc within either the host or guest. Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 10 / 50
  • 11. KVM: Architecture overview Attack Surface kvm-intel.ko / kvm-amd.ko Not much direct attack surface. Largely straight-line code doing lots of low-level bit twiddling with the hardware structures. Lots of subtlety, possibly some more complex attacks. Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 11 / 50
  • 12. KVM: Architecture overview Attack Surface qemu-kvm A veritable goldmine of targets. Hundreds of thousands of lines of device emulation code. Emulated devices communicate directly with the guest via MMIO or IO ports, lots of attack surface. Much of the code comes straight from qemu and is ancient. qemu-kvm is often sandboxed using SELinux or similar, meaning that successful exploitation will often require a second privesc within the host. (Fortunately, Linux never has any of those) Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 12 / 50
  • 13. CVE-2011-1751: The bug 1 KVM: Architecture overview Attack Surface 2 CVE-2011-1751: The bug 3 virtunoid.c: The exploit %rip control Getting to shellcode Bypassing ASLR 4 Conclusions and further research 5 Demo Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 13 / 50
  • 14. CVE-2011-1751: The bug RHSA-2011:0534-1 “It was found that the PIIX4 Power Management emulation layer in qemu-kvm did not properly check for hot plug eligibility during device removals. A privileged guest user could use this flaw to crash the guest or, possibly, execute arbitrary code on the host. (CVE-2011-1751)” Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 14 / 50
  • 15. CVE-2011-1751: The bug PIIX4 The PIIX4 was a southbridge chip used in many circa-2000 Intel chipsets. The default southbridge emulated by qemu-kvm Includes ACPI support, a PCI-ISA bridge, an embedded MC146818 RTC, and much more. Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 15 / 50
  • 16. CVE-2011-1751: The bug Device Hotplug The PIIX4 supports PCI hotplug, implemented by writing values to IO port 0xae08. qemu-kvm emulates this by calling qdev_free(qdev);, which calls a device’s cleanup function and free()s it. Many devices weren’t implemented with hotplug in mind! Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 16 / 50
  • 17. CVE-2011-1751: The bug The PCI-ISA bridge In particular, it should not be possible to unplug the ISA bridge. Among other things, the emulated MC146818 RTC hangs off the ISA bridge. KVM’s emulated RTC is not designed to be unplugged; In particular, it leaves around dangling QEMUTimer objects when unplugged. Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 17 / 50
  • 18. CVE-2011-1751: The bug QEMUTimer t y p e d e f v o i d QEMUTimerCB( v o i d * opaque ) ; s t r u c t QEMUTimer { ... i n t 6 4 t e x p i r e t i m e ; /* i n n a n o s e c o n d s */ QEMUTimerCB * cb ; v o i d * opaque ; s t r u c t QEMUTimer * n e x t ; }; t y p e d e f s t r u c t RTCState { ... QEMUTimer * s e c o n d t i m e r ; ... } RTCState ; Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 18 / 50
  • 19. CVE-2011-1751: The bug Use-after-free Unplugging the virtual RTC free()s the RTCState It doesn’t free() or unregister either of the timers. So we’re left with dangling pointers from the QEMUTimers On the next second, we’ll call rtc_update_second(<freed RTCState> ) Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 19 / 50
  • 20. CVE-2011-1751: The bug Reproducer #i n c l u d e <s y s / i o . h> i n t main ( v o i d ) { iopl (3); o u t l (2 , 0 xae08 ) ; return 0; } Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 20 / 50
  • 21. virtunoid.c: The exploit 1 KVM: Architecture overview Attack Surface 2 CVE-2011-1751: The bug 3 virtunoid.c: The exploit %rip control Getting to shellcode Bypassing ASLR 4 Conclusions and further research 5 Demo Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 21 / 50
  • 22. virtunoid.c: The exploit %rip control High-level TODO 1 Inject a controlled QEMUTimer into qemu-kvm at a known address 2 Eject the emulated ISA bridge 3 Force an allocation into the freed RTCState, with second_timer pointing at our dummy timer. When rtc_update_second next runs, our timer will get scheduled. One second later, boom. Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 22 / 50
  • 23. virtunoid.c: The exploit %rip control 1. Injecting data The guest’s RAM is backed by a simple mmap()ed region inside the qemu-kvm process. So we allocate an object in the guest, and compute hva = physmem_base + gpa gpa = (gva_to_gfn(gva) << PAGE_SHIFT) + page_offset(gva) For now, assume we can guess physmem_base (e.g. no ASLR) hva host virtual address gva guest virtual address gpa guest physical address gfn guest frame (physical page) number Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 23 / 50
  • 24. virtunoid.c: The exploit %rip control qemu-kvm userspace network stack qemu-kvm contains a user-mode networking stack. Implements a DHCP server, DNS server, and a gateway NAT. Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 24 / 50
  • 25. virtunoid.c: The exploit %rip control Userspace network stack packet delivery The user-mode stack normally handles packets synchronously. To prevent recursion, if a second packet is emitted while handling a first packet, the second packet is queued, using malloc(). Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 25 / 50
  • 26. virtunoid.c: The exploit %rip control The virtual network gateway responds synchronously to ICMP ping. Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 26 / 50
  • 27. virtunoid.c: The exploit %rip control Putting it together 1 Allocate a fake QEMUTimer Point ->cb at the desired %rip. 2 Calculate its address in the host. 3 Write 2 to IO port 0xae08 to eject the ISA bridge. 4 ping the emulated gateway with ICMP packets containing pointers to your allocated timer in the host. Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 27 / 50
  • 28. virtunoid.c: The exploit Getting to shellcode We’ve got %rip, now what? Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 28 / 50
  • 29. virtunoid.c: The exploit Getting to shellcode We’ve got %rip, now what? Get EIP = 0x41414141 and declare victory. Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 28 / 50
  • 30. virtunoid.c: The exploit Getting to shellcode We’ve got %rip, now what? Get EIP = 0x41414141 and declare victory. Disable NX in my BIOS and call it good enough for a demo. Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 28 / 50
  • 31. virtunoid.c: The exploit Getting to shellcode We’ve got %rip, now what? Get EIP = 0x41414141 and declare victory. Disable NX in my BIOS and call it good enough for a demo. Do a ROP pivot, ROP to victory. Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 28 / 50
  • 32. virtunoid.c: The exploit Getting to shellcode We’ve got %rip, now what? Get EIP = 0x41414141 and declare victory. Disable NX in my BIOS and call it good enough for a demo. Do a ROP pivot, ROP to victory. Do something else clever. Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 28 / 50
  • 33. virtunoid.c: The exploit Getting to shellcode Another look at QEMUTimer s t r u c t QEMUTimer { ... i n t 6 4 t e x p i r e t i m e ; /* i n n a n o s e c o n d s */ ... s t r u c t QEMUTimer * n e x t ; }; Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 29 / 50
  • 34. virtunoid.c: The exploit Getting to shellcode qemu_run_timers s t a t i c v o i d q e m u r u n t i m e r s ( QEMUClock * c l o c k ) { QEMUTimer ** p t i m e r h e a d , * t s ; int64 t current time ; current time = qemu get clock ns ( clock ); p t i m e r h e a d = &a c t i v e t i m e r s [ c l o c k −>t y p e ] ; for ( ; ; ) { ts = * ptimer head ; i f ( ! qemu timer expired ns ( ts , c u r r e n t t i m e )) break ; * p t i m e r h e a d = t s −>n e x t ; t s −>n e x t = NULL ; t s −>cb ( t s −>opaque ) ; } } Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 30 / 50
  • 35. virtunoid.c: The exploit Getting to shellcode Timer chains second_timer f1 −>cb −>opaque X −>next f2 −>cb −>opaque Y −>next f3 −>cb −>opaque Z −>next NULL ⇒ f1(X); f2(Y); f3(Z); Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 31 / 50
  • 36. virtunoid.c: The exploit Getting to shellcode More arguments amd64 calling convention: %rdi, %rsi, %rdx, . . . Every version of qemu_run_timers I’ve checked leaves %rsi untouched. Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 32 / 50
  • 37. virtunoid.c: The exploit Getting to shellcode More arguments set rsi : movl %r d i , %r s i ret Let f1 = set_rsi f2(Y, X) Same trick doesn’t work with %rdx. Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 33 / 50
  • 38. virtunoid.c: The exploit Getting to shellcode set_rsi v o i d c p u o u t l ( p i o a d d r t addr , u i n t 3 2 t v a l ) { i o p o r t w r i t e ( 2 , addr , v a l ) ; } Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 34 / 50
  • 39. virtunoid.c: The exploit Getting to shellcode Getting to mprotect int mprotect(const void *addr, size_t len, int prot); #define PROT_EXEC 0x4 s t a t i c u i n t 3 2 t i o p o r t r e a d l t h u n k ( v o i d * opaque , u i n t 3 2 t a d d r ) { IORange * i o p o r t = opaque ; u i n t 6 4 t data ; i o p o r t −>ops−>r e a d ( i o p o r t , a d d r − i o p o r t −>b a s e , 4 , &d a t a ) ; r e t u r n data ; } Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 35 / 50
  • 40. virtunoid.c: The exploit Getting to shellcode Putting it together Allocate a fake IORangeOps, with fake_ops->read = mprotect. Allocate a page-aligned IORange, with ->ops = fake_ops and ->base = -PAGE_SIZE. Copy shellcode immediately following the IORange. Construct a timer chain that calls cpu_outl(0, *) ioport_readl_thunk(fake_ioport, 0) fake_ioport + 1 Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 36 / 50
  • 41. virtunoid.c: The exploit Getting to shellcode Why not ROP? Continued execution is dead simple. Reduced dependence on details of compiled code. I’m not that good at ROP :) Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 37 / 50
  • 42. virtunoid.c: The exploit Bypassing ASLR Addresses For a known qemu-kvm binary, we need two addresses. The base address of the qemu-kvm binary, to find code addresses. physmem_base, the address of the physical memory mapping inside qemu-kvm. Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 38 / 50
  • 43. virtunoid.c: The exploit Bypassing ASLR Option A Find an information leak. Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 39 / 50
  • 44. virtunoid.c: The exploit Bypassing ASLR Option B Assume non-PIE, and be clever. Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 40 / 50
  • 45. virtunoid.c: The exploit Bypassing ASLR fw_cfg Emulated IO ports 0x510 (address) and 0x511 (data) Used to communicate various tables to the qemu BIOS (e820 map, ACPI tables, etc) Also provides support for exporting writable tables to the BIOS. However, fw_cfg_write doesn’t check if the target table is supposed to be writable! Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 41 / 50
  • 46. virtunoid.c: The exploit Bypassing ASLR Static data Several fw_cfg areas are backed by statically-allocated buffers. Net result: nearly 500 writable bytes inside static variables. Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 42 / 50
  • 47. virtunoid.c: The exploit Bypassing ASLR read4 your way to victory mprotect needs a page-aligned address, so these aren’t suitable for our shellcode. But, we can construct fake timer chains in this space to build a read4() primitive. Follow pointers from static variables to find physmem_base Proceed as before. Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 43 / 50
  • 48. virtunoid.c: The exploit Bypassing ASLR Repeated timer chaining Previously, we ended timer chains with ->next = NULL. Instead, end them with a timer that calls rtc_update_second. The timer we control will be scheduled once a second, and we can change ->cb at any time. Now we can execute a read4, update structures based on the result, and then hijack the list again. Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 44 / 50
  • 49. Conclusions and further research Conclusions VM breakouts aren’t magic. Hypervisors are just as vulnerable as anything else. Device drivers are the weak spot. Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 45 / 50
  • 50. Conclusions and further research Comparing with some past breakouts 2008 “Adventures with a certain Xen vulnerability”, Xen, Invisible Things Lab 2009 “Cloudburst”, Immunity, VMware 2011 “Software attacks against Intel VT-d technology”, Invisible Things Lab, Xen Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 46 / 50
  • 51. Conclusions and further research Possible hardening directions Sandbox qemu-kvm (work underway well before this talk). Build qemu-kvm as PIE. Lazily mmap/mprotect guest RAM? XOR-encode key function pointers? More auditing and fuzzing of qemu-kvm. Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 47 / 50
  • 52. Conclusions and further research Future research directions Fuzzing/auditing kvm.ko (That x86 emulator sketches me) Fingerprinting qemu-kvm versions Searching for infoleaks (Rosenbugs?) Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 48 / 50
  • 53. Demo It’s demo time Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 49 / 50
  • 54. Demo Questions? nelhage@nelhage.com http://blog.nelhage.com @nelhage Nelson Elhage (DEFCON 19) Virtunoid: Breaking out of KVM August 8, 2011 50 / 50