ret2dir: rethinking kernel isolationksun/csci780-f14/notes/16-ret2dir.pdfi 3rd-party linux patch(es)...

32
ret2dir: Rethinking Kernel Isolation Presenter: Jianhua Sun Department of Computer Science College of William and Mary Oct 27, 2014 Slides adapted from https://www.usenix.org/sites/default/files/conference/protected-files/sec14_slides_kemerlis.pdf

Upload: others

Post on 09-Jul-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

ret2dir: Rethinking Kernel Isolation

Presenter: Jianhua Sun

Department of Computer Science College of William and Mary

Oct 27, 2014

Slides adapted from https://www.usenix.org/sites/default/files/conference/protected-files/sec14_slides_kemerlis.pdf

Page 2: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

The Kernel as a TargetWhy care?

Kernel attacks are becoming (more) common

1. High-value asset ! Privileged piece of codeI Responsible for the integrity of OS security mechanisms

2. Large attack surface ! syscalls, device drivers, pseudo fs, ...I New features & optimizations ! New attack opportunities

3. Exploiting privileged userland processes has become harder !Canaries+ASLR+WˆX+Fortify+RELRO+BIND NOW+BPF SECCOMP+...

I Sergey Glazunov (Pwnie Awards) 14 bugs to takedown Chrome“A Tale of Two Pwnies” (http://blog.chromium.org)

[KERNEL]

W^XRELROBIND_NOW

STACK_PROT

FORTIFY_SRCASLR

BPF_SECCOMP vs.

[APP]

vpk
Page 3: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

Kernel VulnerabilitiesCurrent state of a↵airs (all vendors)

0 20 40 60 80

100 120 140 160 180 200 220 240 260 280 300 320 340 360

1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013

# of

vul

nera

bilit

ies

Year

Kernel vulnerabilities per year

Source: National Vulnerability Database (http://nvd.nist.gov)

vpk
Page 4: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

Threat Evolution There’s still plenty of candy left

I The kernel is highly volatile ! Sub-systems change every hour

I New features & optimizations ! New attack opportunities

Kernel ver. Size Dev. days Patches Changes/hr Fixes

2.6.11 (03/02/05) 6.6 MLOC 69 3.6K 2.18 793.10 (30/06/13) 16.9 MLOC 63 13.3K 9.02 670

Source: The Linux Foundation

Page 5: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

Introduction Kernel attacks & defenses

Return-to-user (ret2usr) AttacksWhat are they?

Attacks against OS kernels withshared kernel/user address space

• Overwrite kernel code (or data) pointerswith user space addresses

7 return addr., dispatch tbl., function ptr.,7 data ptr.

I Payload ! Shellcode, ROP payload,tampered-with data structure(s)

I Placed in user space7 Executed (referenced) in kernel context

I De facto kernel exploitation techniqueI Facilitates privilege escalation arbitrary code execution7 http://www.exploit-db.com/exploits/34134/ (21/07/14)7 http://www.exploit-db.com/exploits/131/ (05/12/03)

vpk
vpk
Page 6: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

Introduction Kernel attacks & defenses

ret2usr Attacks (cont’d)Why do they work?

Weak address space (kernel/user) separation

• Shared kernel/process model ! PerformanceX cost(mode switch) ⌧ cost(context switch)

I The kernel is protected fromuserland ! Hardware-assisted isolation

7 The opposite is not true7 Kernel ambient authority (unrestricted

access to all memory and system objects)

I The attacker completely controlsuser space memory

• Contents & perms.

vpk
vpk
Page 7: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

Introduction Kernel attacks & defenses

ret2usr DefensesState of the art overview

X KERNEXEC/UDEREF ! PaXI 3rd -party Linux patch(es) ! x86-64/x86/AArch32 onlyI HW/SW-assisted address space separation

• x86 ! Seg. unit (reload %cs, %ss, %ds, %es)• x86-64 ! Code instr. & temporary user space re-mapping• ARM (AArch32) ! ARM domains

X kGuard ! Kemerlis et al. [USENIX Sec ’12]I Cross-platform solution that enforces (partial) address space separation

• x86, x86-64, ARM, ...• Linux, {Free, Net, Open}BSD, ...

I Builds upon inline monitoring (code intr.) & code diversification(code inflation & CFA motion)

X SMEP/SMAP, PXN ! Intel, ARMI HW-assisted address space separation

• Access violation if priv. code (ring 0) executes/accessesinstructions/data from user pages (U/S = 1)

I Vendor and model specific (Intel x86/x86-64, ARM)

vpk
vpk
vpk
Page 8: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

Introduction Kernel attacks & defenses

ret2usr Defenses (cont’d)Summary

Page 9: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

Introduction Problem statement

Rethinking Kernel IsolationWhat is this work about?

Focus on ret2usr defenses ! SMEP/SMAP, PXN, PaX, kGuard

I Can we subvert them?• Force the kernel to execute/access user-controlled code/data

I Conflicting design choices or optimizations?• “Features” that weaken the (strong) separation of address spaces

Return-to-direct-mapped memory (ret2dir)

I Attack against hardened (Linux) kernelsX Bypasses all existing ret2usr schemesX 8 ret2usr exploit 9 ret2dir exploit

Page 10: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

Introduction Problem statement

Rethinking Kernel IsolationWhat is this work about?

Focus on ret2usr defenses ! SMEP/SMAP, PXN, PaX, kGuard

I Can we subvert them?• Force the kernel to execute/access user-controlled code/data

I Conflicting design choices or optimizations?• “Features” that weaken the (strong) separation of address spaces

Return-to-direct-mapped memory (ret2dir)

I Attack against hardened (Linux) kernelsX Bypasses all existing ret2usr schemesX 8 ret2usr exploit 9 ret2dir exploit

vpk
Page 11: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

Introduction Problem statement

Rethinking Kernel IsolationWhat is this work about?

Focus on ret2usr defenses ! SMEP/SMAP, PXN, PaX, kGuard

I Can we subvert them?• Force the kernel to execute/access user-controlled code/data

I Conflicting design choices or optimizations?• “Features” that weaken the (strong) separation of address spaces

Return-to-direct-mapped memory (ret2dir)

I Attack against hardened (Linux) kernelsX Bypasses all existing ret2usr schemesX 8 ret2usr exploit 9 ret2dir exploit

vpk
vpk
Page 12: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

Attack (ret2dir) Background

Kernel Space LayoutLinux x86-64

vpk
Page 13: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

Attack (ret2dir) Background

physmapFunctionality

Fundamental building block of dynamic kernel memory(kmalloc, SLAB/SLUB)

1. (De)allocate kernel memory without altering page tablesI Minimum latency in fast-path ops. (e.g., kmalloc in ISR)I Less TLB pressure ! No TLB shootdown(s) needed

2. Virtually contiguous memory ! Physically contiguous (guaranteed)I Directly assign kmalloc-ed memory to devices for DMAI Increased cache performance

3. Page frame accounting made easyI virt(pfn) PHYS OFFSET + (pfn << PAGE SHIFT)I pfn(vaddr) (vaddr - PHYS OFFSET) >> PAGE SHIFT

Page 14: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

physmapLocation, size, and access rights

Architecture PHYS OFFSET Size Prot.

x86 (3G/1G) 0xC0000000 891MB RW(2G/2G) 0x80000000 1915MB RW(1G/3G) 0x40000000 2939MB RW

AArch32 (3G/1G) 0xC0000000 760MB RW(X)(2G/2G) 0x80000000 1784MB RW(X)(1G/3G) 0x40000000 2808MB RW(X)

x86-64 0xFFFF880000000000 64TB RW(X)

AArch64 0xFFFFFFC000000000 256GB RW(X)

vpk
vpk
vpk
vpk
vpk
Page 15: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

Attack (ret2dir) Bypassing SMEP/SMAP, PXN, PaX, kGuard

The ret2dir Attackphysmap is considered harmful

physmap Address aliasing

Given the existence of physmap, whenever the kernel (buddy allocator)

maps a page frame to user space, it e↵ectively creates an alias ( synonym)

of user content in kernel space!

Page 16: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

Attack (ret2dir) Bypassing SMEP/SMAP, PXN, PaX, kGuard

The ret2dir Attack (cont’d)Operation

Page 17: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

Attack (ret2dir) Bypassing SMEP/SMAP, PXN, PaX, kGuard

Locating SynonymsLeaking PFNs via /proc (1/2)

C1: Given a user space virtual address (uaddr) ?! Synonym inkernel space (kaddr)

I Usual suspect: /proc (procfs)

X /proc/<pid>/pagemap ! Page table examination(from user space) for debugging purposes (since v2.6.25)

I 64-bit value per page ! Indexed by virtual page number• [0:54] ! Page frame number (PFN)• [63] ! Page present

PFN(uaddr)seek((uaddr >> PAGE_SHIFT) * sizeof(uint64_t));read(&v, sizeof(uint64_t));if (v & (1UL << 63))

PFN = v & ((1UL << 55) - 1);

Page 18: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

Attack (ret2dir) Bypassing SMEP/SMAP, PXN, PaX, kGuard

Locating Synonyms (cont’d)Leaking PFNs via /proc (2/2)

F1 :kaddr = PHYS OFFSET + PAGE SIZE * (PFN(uaddr) - PFN MIN)

I PHYS OFFSET ! Starting address of physmap in kernel space

I PFN MIN ! 1st PFN (e.g., in ARM Versatile RAM starts at0x60000000; PFN MIN = 0x60000)

Architecture PHYS OFFSET

x86 (3G/1G) 0xC0000000(2G/2G) 0x80000000(1G/3G) 0x40000000

AArch32 (3G/1G) 0xC0000000(2G/2G) 0x80000000(1G/3G) 0x40000000

x86-64 0xFFFF880000000000

AArch64 0xFFFFFFC000000000

vpk
Page 19: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

Attack (ret2dir) Bypassing SMEP/SMAP, PXN, PaX, kGuard

Locating Synonyms (cont’d)ret2dir without access to /proc/<pid>/pagemap

Q: What if PFN information is not available?

physmap spraying ! Very similar to how heap spraying works

1. Pollute physmap with aligned copies of the exploit payloadI Maximize the exploit foothold on physmap

2. Pick an arbitrary, page-aligned physmap address and use it as thesynonym of the exploit payload

Page 20: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

Attack (ret2dir) Bypassing SMEP/SMAP, PXN, PaX, kGuard

Locating Synonyms (cont’d)ret2dir without access to /proc/<pid>/pagemap

Q: What if PFN information is not available?

physmap spraying ! Very similar to how heap spraying works

1. Pollute physmap with aligned copies of the exploit payloadI Maximize the exploit foothold on physmap

2. Pick an arbitrary, page-aligned physmap address and use it as thesynonym of the exploit payload

Page 21: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

Locating Synonymsphysmap spraying

I The attacking process copies the exploit payload into N

physmap-resident pages

I The probability P that an arbitrarily chosen, page-aligned physmapaddress will contain the exploit payload is: P = N/(PFN MAX-PFN MIN)

max(P)

1. max(N)

2. min(PFN MAX-PFN MIN)

Page 22: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

Locating Synonymsphysmap spraying

I The attacking process copies the exploit payload into N

physmap-resident pages

I The probability P that an arbitrarily chosen, page-aligned physmapaddress will contain the exploit payload is: P = N/(PFN MAX-PFN MIN)

max(P)

1. max(N)

2. min(PFN MAX-PFN MIN)

vpk
Page 23: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

physmap Sprayingmax(N)

1. Allocate a (big) chunk of RW memory in user space ! M

I mmap/mmap2, shmat, ...

2. 8 page P 2 M ! Copy the exploit payload in P and trigger a write

fault (or MAP POPULATE)3. “Emulate” mlock ! Prevent swapping

I Start a set of background threads that repeatedly mark payload pagesas dirty (e.g., by writing a single byte)

4. Check RSS (foothold in physmap) ! getrusage5. goto 1, unless RSS < RSSprev

• If sizeof(uspace) ⌧ sizeof(RAM) ! Spawn additional process(es)

Page 24: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

physmap Spraying (cont’d)min(PFN MAX-PFN MIN)

Reduce the set of target pages in physmap ! physmap signatures

I x86• Page frame 0 is used by BIOS ! HW config. discovered during POST• [0xA0000:0xFFFFF] ! Memory-mapped RAM of video cards

I x86-64I 0x1000000 ! Kernel .text, .rodata, data, .bss

I AArch32I ...

I AArch64I ...

Page 25: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

EvaluationSpraying performance

Physical Memory1GB 2GB 4GB 8GB 16GB

Succ

ess

Prob

abilit

y

0

0.2

0.4

0.6

0.8

1IdleBrowsingKernel Build

I 2x 2.66GHz quad core Xeon X5500, 16GB RAM, 64-bit Debian Linux v7

I 5 repetitions of the same experiment, 95% confidence intervals (error bars)

vpk
0.65-0.68
vpk
0.88
vpk
0.91
vpk
0.93
vpk
0.95
Page 26: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

Defense (XPFO) Design & implementation

Defending against ret2dir AttacksDesign

eXclusive Page Frame Ownerwhip (XPFO)

I Thin mgmt. layer over the buddy allocator ! Exclusive ownership(of page frames) by either the kernel or userlandX Unless explicitly requested by a kernel component

(e.g., to implement zero-copy bu↵ers)

1. Page frame(s) alloted to userland Synonym page(s) unmapped from physmap

2. Page frame(s) reclaimed from userland Synonym page(s) put back to physmap

I Reclaimed page frames are always wiped out before remapping

X Performance-critical kernel allocators are not a↵ected ! Low extraoverhead whenever page frames are alloted to (or reclaimed from)user processes

• Aligns well with demand paging & COW

vpk
Page 27: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

Defending against ret2dir AttacksImplementation (1/2)

XPFO Linux kernel v3.13 (⇠500LOC)

I struct page extended with XPFO fields +3MB per 1GB of RAM

• xpfo kmcnt (ref. counter), xpfo lock (spinlock), xpfo flagsI Careful handling of page frame allocation/reclamation casesX Demand paging frames (anonymous & shared memory mappings)

• [stack], brk, mmap/mmap2, mremap, shmat

X COW frames• fork, clone

X Explicitly & implicitly reclaimed frames• exit, munmap, shmdt

X Swapping (swapped out and swapped in pages)X NUMA frame migrations

• migrate pages, move pages

X Huge pages & transparent huge pages

Page 28: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

Attack (ret2dir) Bypassing SMEP/SMAP, PXN, PaX, kGuard

Evaluationret2dir e↵ectiveness

EDB-ID Arch. Kernel Payload Protection Bypassed

26131 x86/x86-64 3.5/3.8 ROP/SHELLCODE |KERNEXEC|UDEREF|kGuard |SMEP|SMAP| | 324746 x86-64 3.5 SHELLCODE |KERNEXEC| |kGuard |SMEP| | | 315944 x86 2.6.33.6 STRUCT+ROP |KERNEXEC|UDEREF|kGuard*| | | | 315704 x86 2.6.35.8 STRUCT+ROP |KERNEXEC|UDEREF|kGuard*| | | | 315285 x86-64 2.6.33.6 ROP/SHELLCODE |KERNEXEC|UDEREF|kGuard | | | | 315150 x86 2.6.35.8 STRUCT | |UDEREF| | | | | 315023 x86-64 2.6.33.6 STRUCT+ROP |KERNEXEC|UDEREF|kGuard*| | | | 314814 x86 2.6.33.6 STRUCT+ROP |KERNEXEC|UDEREF|kGuard*| | | | 3

Custom x86 3.12 STRUCT+ROP |KERNEXEC|UDEREF|kGuard*|SMEP|SMAP| | 3Custom x86-64 3.12 STRUCT+ROP |KERNEXEC|UDEREF|kGuard*|SMEP|SMAP| | 3Custom AArch32 3.8.7 STRUCT+SHELLCODE |KERNEXEC|UDEREF|kGuard | | | | 3Custom AArch64 3.12 STRUCT+SHELLCODE | | |kGuard | | |PXN| 3

Page 29: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

Attack (ret2dir) Bypassing SMEP/SMAP, PXN, PaX, kGuard

Evaluationret2dir e↵ectiveness

EDB-ID Arch. Kernel Payload Protection Bypassed

26131 x86/x86-64 3.5/3.8 ROP/SHELLCODE |KERNEXEC|UDEREF|kGuard |SMEP|SMAP| | 324746 x86-64 3.5 SHELLCODE |KERNEXEC| |kGuard |SMEP| | | 315944 x86 2.6.33.6 STRUCT+ROP |KERNEXEC|UDEREF|kGuard*| | | | 315704 x86 2.6.35.8 STRUCT+ROP |KERNEXEC|UDEREF|kGuard*| | | | 315285 x86-64 2.6.33.6 ROP/SHELLCODE |KERNEXEC|UDEREF|kGuard | | | | 315150 x86 2.6.35.8 STRUCT | |UDEREF| | | | | 315023 x86-64 2.6.33.6 STRUCT+ROP |KERNEXEC|UDEREF|kGuard*| | | | 314814 x86 2.6.33.6 STRUCT+ROP |KERNEXEC|UDEREF|kGuard*| | | | 3

Custom x86 3.12 STRUCT+ROP |KERNEXEC|UDEREF|kGuard*|SMEP|SMAP| | 3Custom x86-64 3.12 STRUCT+ROP |KERNEXEC|UDEREF|kGuard*|SMEP|SMAP| | 3Custom AArch32 3.8.7 STRUCT+SHELLCODE |KERNEXEC|UDEREF|kGuard | | | | 3Custom AArch64 3.12 STRUCT+SHELLCODE | | |kGuard | | |PXN| 3

vpk
Page 30: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

Defense (XPFO) Performance

EvaluationXPFO performance

Benchmark Metric Original XPFO (%Overhead)Apache Req/s 17636.30 17456.47 (%1.02)NGINX Req/s 16626.05 16186.91 (%2.64)PostgreSQL Trans/s 135.01 134.62 (%0.29)Kbuild sec 67.98 69.66 (%2.47)Kextract sec 12.94 13.10 (%1.24)GnuPG sec 13.61 13.72 (%0.80)OpenSSL Sign/s 504.50 503.57 (%0.18)PyBench ms 3017.00 3025.00 (%0.26)PHPBench Score 71111.00 70979.00 (%0.18)IOzone MB/s 70.12 69.43 (%0.98)tiobench MB/s 0.82 0.81 (%1.22)dbench MB/s 20.00 19.76 (%1.20)PostMark Trans/s 411.00 399.00 (%2.91)

vpk
Page 31: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

Conclusion Recap

Summaryphysmap is considered harmful

• physmap region(s) in kernel space is a bad idea

I ret2dir Deconstructs the isolation guarantees of ret2usrprotections (SMEP/SMAP, PXN, PaX, kGuard)

I XPFO Low overhead defense against ret2dir attacks

Page 32: ret2dir: Rethinking Kernel Isolationksun/csci780-f14/notes/16-ret2dir.pdfI 3rd-party Linux patch(es) ! x86-64/x86/AArch32 only I HW/SW-assisted address space separation • x86 ! Seg

Q & A