Deterministic Rowhammer Attacks on Mobile Platforms by A bunch of - - PowerPoint PPT Presentation

deterministic rowhammer attacks
SMART_READER_LITE
LIVE PREVIEW

Deterministic Rowhammer Attacks on Mobile Platforms by A bunch of - - PowerPoint PPT Presentation

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms by A bunch of pasty faced sad sack nerds sitting in a basement want to sound cool and tough, like they've just done a tour in 'Nam. [slashdot] Drammer: Deterministic Rowhammer


slide-1
SLIDE 1

Drammer: Deterministic Rowhammer Attacks

  • n Mobile Platforms

A bunch of pasty faced sad sack nerds sitting in a basement want to sound cool and tough, like they've just done a tour in 'Nam. [slashdot]

by

slide-2
SLIDE 2

Drammer: Deterministic Rowhammer Attacks

  • n Mobile Platforms

Victor van der Veen1, Yanick Fratantonio2, Martina Lindorfer2, Daniel Gruss3, Clémentine Maurice3, Giovanni Vigna2, Herbert Bos1, Kaveh Razavi1, and Cristiano Giuffrida1

1Vrije Universiteit Amsterdam, 2UC Santa Barbara, 3TU Graz

slide-3
SLIDE 3

Drammer: Deterministic Rowhammer Attacks

  • n Mobile Platforms

Your takeaway message of today

slide-4
SLIDE 4

Drammer: Deterministic Rowhammer Attacks

  • n Mobile Platforms

Rowhammer on ARM

Your takeaway message of today

slide-5
SLIDE 5

Drammer: Deterministic Rowhammer Attacks

  • n Mobile Platforms

Rowhammer on ARM Deterministic exploitation

Your takeaway message of today

slide-6
SLIDE 6

Drammer: Deterministic Rowhammer Attacks

  • n Mobile Platforms

Rowhammer on ARM Deterministic exploitation Works on a Google Pixel

Your takeaway message of today

slide-7
SLIDE 7

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Flipping bits in memory

DRAM hardware glitch causing disturbance errors

1 1 1 1 1 1 1 1 1 1 1 1 1 1

Aggressor row Aggressor row Victim row

slide-8
SLIDE 8

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Flipping bits in memory

DRAM hardware glitch causing disturbance errors

1 1 1 1 1 1 1 1 1 1 1 1 1 1

Aggressor row Aggressor row Victim row

slide-9
SLIDE 9

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Flipping bits in memory

DRAM hardware glitch causing disturbance errors

1 1 1 1 1 1 1 1 1 1 1 1 1 1

Aggressor row Aggressor row Victim row

slide-10
SLIDE 10

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Flipping bits in memory

DRAM hardware glitch causing disturbance errors

1 1 1 1 1 1 1 1 1 1 1 1 1 1

Aggressor row Aggressor row Victim row

slide-11
SLIDE 11

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Flipping bits in memory

DRAM hardware glitch causing disturbance errors

1 1 1 1 1 1 1 1 1 1 1 1 1 1

Aggressor row Aggressor row Victim row

slide-12
SLIDE 12

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Flipping bits in memory

DRAM hardware glitch causing disturbance errors

1 1 1 1 1 1 1 1 1 1 1 1 1 1

Aggressor row Aggressor row Victim row

slide-13
SLIDE 13

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Flipping bits in memory

DRAM hardware glitch causing disturbance errors

1 1 1 1 1 1 1 1 1 1 1 1 1 1

Aggressor row Aggressor row Victim row

slide-14
SLIDE 14

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Flipping bits in memory

DRAM hardware glitch causing disturbance errors

1 1 1 1 1 1 1 1 1 1 1 1 1

Aggressor row Aggressor row Victim row

slide-15
SLIDE 15

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Flipping bits in memory

DRAM hardware glitch causing disturbance errors

1 1 1 1 1 1 1 1 1 1 1 1 1

Aggressor row Aggressor row Victim row

  • Not every bit may flip
  • Once a bit flips, we can reproduce it
slide-16
SLIDE 16
  • 1. Memory Templating

Scan memory for useful bit flips

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Overview

slide-17
SLIDE 17

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Overview

  • 1. Memory Templating

Scan memory for useful bit flips

slide-18
SLIDE 18
  • 1. Memory Templating

Scan memory for useful bit flips

  • 2. Land sensitive data

Store a crucial data structure on a vulnerable page

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Overview

slide-19
SLIDE 19
  • 1. Memory Templating

Scan memory for useful bit flips

  • 2. Land sensitive data

Store a crucial data structure on a vulnerable page

  • 3. Reproduce the bit flip

Modify the data structure and get root acces

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Overview

slide-20
SLIDE 20
  • 1. Memory Templating

Scan memory for useful bit flips

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Overview

slide-21
SLIDE 21

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Templating

Uncached memory access

  • clflush
  • cache eviction
  • non-temporal access instructions

Determining the physical addresses aggressor/victim rows

  • /proc/self/pagemap
  • 2MB huge pages (relative)
slide-22
SLIDE 22

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Templating

Uncached memory access

  • clflush
  • cache eviction
  • non-temporal access instructions

Determining the physical addresses aggressor/victim rows

  • /proc/self/pagemap
  • 2MB huge pages (relative)

But does it work on ARM?

slide-23
SLIDE 23

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Templating

Uncached memory access

  • clflush
  • cache eviction
  • non-temporal access instructions

Determining the physical addresses aggressor/victim rows

  • /proc/self/pagemap
  • 2MB huge pages (relative)

But does it work on ARM?

Nope

slide-24
SLIDE 24

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Templating

Uncached memory access

  • clflush
  • cache eviction
  • non-temporal access instructions

Determining the physical addresses aggressor/victim rows

  • /proc/self/pagemap
  • 2MB huge pages (relative)

But does it work on ARM?

None of them

slide-25
SLIDE 25

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Templating

Uncached memory access

  • clflush
  • cache eviction
  • non-temporal access instructions

Determining the physical addresses aggressor/victim rows

  • /proc/self/pagemap
  • 2MB huge pages (relative)

But does it work on ARM?

(and we tried)

slide-26
SLIDE 26

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Templating on ARM

DMA

Direct Memory Access Android’s DMA memory allocator provides everything we need:

  • Uncached memory (no clflush required)
  • Physically contiguous memory
slide-27
SLIDE 27

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Templating on ARM

DMA

Direct Memory Access Android’s DMA memory allocator provides everything we need:

  • Uncached memory (no clflush required)
  • Physically contiguous memory

Physical memory:

slide-28
SLIDE 28

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Templating on ARM

DMA

Direct Memory Access Android’s DMA memory allocator provides everything we need:

  • Uncached memory (no clflush required)
  • Physically contiguous memory

DMA ALLOCATED CHUNK

Physical memory:

slide-29
SLIDE 29

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Templating on ARM

DMA

Direct Memory Access Android’s DMA memory allocator provides everything we need:

  • Uncached memory (no clflush required)
  • Physically contiguous memory

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Physical memory:

slide-30
SLIDE 30

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Templating on ARM

DMA

Direct Memory Access Android’s DMA memory allocator provides everything we need:

  • Uncached memory (no clflush required)
  • Physically contiguous memory

Physical memory:

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

slide-31
SLIDE 31

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Templating on ARM

DMA

Direct Memory Access Android’s DMA memory allocator provides everything we need:

  • Uncached memory (no clflush required)
  • Physically contiguous memory

Physical memory:

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

slide-32
SLIDE 32

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Templating on ARM

DMA

Direct Memory Access Android’s DMA memory allocator provides everything we need:

  • Uncached memory (no clflush required)
  • Physically contiguous memory

Physical memory:

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1111111111111111111110111111111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

slide-33
SLIDE 33

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Templating on ARM

DMA

Direct Memory Access Android’s DMA memory allocator provides everything we need:

  • Uncached memory (no clflush required)
  • Physically contiguous memory

Physical memory:

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1111111111111111111110111111111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Bit Flip

slide-34
SLIDE 34
  • 1. Memory Templating

Scan memory for useful bit flips

  • 2. Land sensitive data

Store a crucial data structure on a vulnerable page

  • 3. Reproduce the bit flip

Modify the data structure and get root acces

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Overview

slide-35
SLIDE 35
  • 1. Memory Templating

Scan memory for useful bit flips

  • 2. Land sensitive data

Store a crucial data structure on a vulnerable page

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Overview

slide-36
SLIDE 36
  • 1. Memory Templating

Scan memory for useful bit flips

  • 2. Land a Page Table

Store a page table on a vulnerable page

But why?

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Overview

slide-37
SLIDE 37

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Page Tables

Mapping virtual addresses to physical addresses

slide-38
SLIDE 38

1 0 1 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 1 1 0 0 0 1 0 1 1 1 1 1 1 1

Example lookup for input virtual address 0xb6a5717f

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Page Tables

Mapping virtual addresses to physical addresses

slide-39
SLIDE 39

1 0 1 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 1 1 0 0 0 1 0 1 1 1 1 1 1 1

  • Highest 12 bits: level 1 table index (Translation Table Base Register)

Example lookup for input virtual address 0xb6a5717f

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Page Tables

Mapping virtual addresses to physical addresses

slide-40
SLIDE 40

1 0 1 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 1 1 0 0 0 1 0 1 1 1 1 1 1 1

  • Highest 12 bits: level 1 table index (Translation Table Base Register)
  • Middle 8 bits: level 2 table index

Example lookup for input virtual address 0xb6a5717f Mapping virtual addresses to physical addresses

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Page Tables

slide-41
SLIDE 41

1 0 1 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 1 1 0 0 0 1 0 1 1 1 1 1 1 1

  • Highest 12 bits: level 1 table index (Translation Table Base Register)
  • Middle 8 bits: level 2 table index
  • Lowest 12 bits: offset in page

Example lookup for input virtual address 0xb6a5717f Mapping virtual addresses to physical addresses

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Page Tables

slide-42
SLIDE 42

1 0 1 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 1 1 0 0 0 1 0 1 1 1 1 1 1 1

  • Highest 12 bits: level 1 table index (Translation Table Base Register)
  • Middle 8 bits: level 2 table index
  • Lowest 12 bits: offset in page

TTBR 0x1b17f000

Requested Page Page Table (2nd level) 1st level Table

0x462b000

Example lookup for input virtual address 0xb6a5717f Mapping virtual addresses to physical addresses

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Page Tables

slide-43
SLIDE 43

0 0 0 1 1 0 1 1 0 0 0 1 0 1 1 1 1 1 1 1 x x x x x x x x x x x x

Entry in the (2nd level) Page Table

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Page Table Entries

slide-44
SLIDE 44

0 0 0 1 1 0 1 1 0 0 0 1 0 1 1 1 1 1 1 1 x x x x x x x x x x x x

Entry in the (2nd level) Page Table

  • 12 bits of properties

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Page Table Entries

slide-45
SLIDE 45

Entry in the (2nd level) Page Table

0 0 0 1 1 0 1 1 0 0 0 1 0 1 1 1 1 1 1 1 x x x x x x x x x x x x

  • 12 bits of properties
  • 20 bits for the page base address

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Page Table Entries

slide-46
SLIDE 46

Entry in the (2nd level) Page Table

  • 12 bits of properties
  • 20 bits for the page base address

0 0 0 1 1 0 1 1 0 0 0 1 0 1 1 1 1 1 1 1 x x x x x x x x x x x x 0x1b17f000 0x1b17f << 12

mapped page

What if we flip a bit in the entry?

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Page Table Entries

slide-47
SLIDE 47

Entry in the (2nd level) Page Table

  • 12 bits of properties
  • 20 bits for the page base address

0 0 0 1 1 0 1 1 0 0 0 1 0 1 1 1 1 1 1 1 x x x x x x x x x x x x 0x1b17f000 0x1b17f << 12

mapped page

0 0 0 1 1 0 1 1 0 0 0 1 0 1 1 1 1 1 1 0 x x x x x x x x x x x x

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Page Table Entries

slide-48
SLIDE 48

Entry in the (2nd level) Page Table

  • 12 bits of properties
  • 20 bits for the page base address

0 0 0 1 1 0 1 1 0 0 0 1 0 1 1 1 1 1 1 1 x x x x x x x x x x x x 0x1b17f000 0x1b17f << 12

mapped page

0 0 0 1 1 0 1 1 0 0 0 1 0 1 1 1 1 1 1 0 x x x x x x x x x x x x 0x1b17e << 12 0x1b17e000

mapped page

Rowhammer Attacks on

Page Table Entries

slide-49
SLIDE 49

Entry in the (2nd level) Page Table

  • 12 bits of properties
  • 20 bits for the page base address

0 0 0 1 1 0 1 1 0 0 0 1 0 1 1 1 1 1 1 1 x x x x x x x x x x x x 0x1b17f000 0x1b17f << 12

mapped page

0 0 0 1 1 0 1 1 0 0 0 1 0 1 1 1 1 1 1 0 x x x x x x x x x x x x 0x1b17e << 12 0x1b17e000

mapped page

A 1-to-0 flip moves the mapping ‘to the left’

  • Flip offset 0:

–1 page

  • Flip offset 1:

–2 pages

  • Flip offset 2:

–4 pages

  • Flip offset n:

–2n pages

Rowhammer Attacks on

Page Table Entries

slide-50
SLIDE 50
  • 1. Map a page 4 pages ‘away’ from its page table

Drammer: Deterministic RowhammerAttacks on Mobile Platforms

Page Table Entries

slide-51
SLIDE 51

0x1b17f000 0x1b17d000 0x1b17c000 0x1b17b000 0x1b17e000

1b17f

  • 1. Map a page 4 pages ‘away’ from its page table

Page Table Mapped Page

Deterministic Attacks on

Page Table Entries

slide-52
SLIDE 52

0x1b17f000 0 0 0 1 1 0 1 1 0 0 0 1 0 1 1 1 1 1 1 1 x x x x x x x x x x x x 0x1b17d000 0x1b17c000 0x1b17b000 0x1b17e000

1b17f

Virtual address 0xb6a57000 maps to Page Table Entry: which translates to physical page 0x1b17f000

  • 1. Map a page 4 pages ‘away’ from its page table

Page Table Mapped Page

Deterministic Attacks on

Page Table Entries

slide-53
SLIDE 53

0x1b17f000 0x1b17d000 0x1b17c000 0x1b17b000 0x1b17e000

1b17f

0 0 0 1 1 0 1 1 0 0 0 1 0 1 1 1 1 1 1 1 x x x x x x x x x x x x

Virtual address 0xb6a57000 maps to Page Table Entry: which translates to physical page 0x1b17f000

Page Table Mapped Page

1. Map a page 4 pages ‘away’ from its page table

  • 2. Flip bit 2 in the page table entry

Deterministic Attacks on

Page Table Entries

slide-54
SLIDE 54

0x1b17f000 0x1b17d000 0x1b17c000 0x1b17b000 0x1b17e000

1b17b

0 0 0 1 1 0 1 1 0 0 0 1 0 1 1 1 1 1 0 1 x x x x x x x x x x x x

Virtual address 0xb6a57000 maps to Page Table Entry: which translates to physical page 0x1b17b000

Mapped Page Table

1. Map a page 4 pages ‘away’ from its page table

  • 2. Flip bit 2 in the page table entry

Deterministic Attacks on

Page Table Entries

slide-55
SLIDE 55

0x1b17f000 0x1b17d000 0x1b17c000 0x1b17b000 0x1b17e000

1b17b

0 0 0 1 1 0 1 1 0 0 0 1 0 1 1 1 1 1 0 1 x x x x x x x x x x x x

Virtual address 0xb6a57000 maps to Page Table Entry: which translates to physical page 0x1b17b000

Mapped Page Table

1. Map a page 4 pages ‘away’ from its page table 2. Flip bit 2 in the page table entry

  • 3. Write page table entries

Deterministic Attacks on

Page Table Entries

slide-56
SLIDE 56

0x1b17f000 0x1b17d000 0x1b17c000 0x1b17b000 0x1b17e000

3ac90 3ac91 3ac92 3ac93 3ac94 3ac95 3ac96 1b17b 3ac97 3ac98 3ac99 3ac9a 3ac9b 3ac9c 3ac9d 3ac9e

0 0 0 1 1 0 1 1 0 0 0 1 0 1 1 1 1 1 0 1 x x x x x x x x x x x x

Virtual address 0xb6a57000 maps to Page Table Entry: which translates to physical page 0x1b17b000

Mapped Page Table

1. Map a page 4 pages ‘away’ from its page table 2. Flip bit 2 in the page table entry

  • 3. Write page table entries

Deterministic Attacks on

Page Table Entries

slide-57
SLIDE 57

0x1b17f000 0x1b17d000 0x1b17c000 0x1b17b000 0x1b17e000

3ac90 3ac91 3ac92 3ac93 3ac94 3ac95 3ac96 1b17b 3ac97 3ac98 3ac99 3ac9a 3ac9b 3ac9c 3ac9d 3ac9e

0 0 0 1 1 0 1 1 0 0 0 1 0 1 1 1 1 1 0 1 x x x x x x x x x x x x

Virtual address 0xb6a57000 maps to Page Table Entry: which translates to physical page 0x1b17b000

Mapped Page Table

1. Map a page 4 pages ‘away’ from its page table 2. Flip bit 2 in the page table entry 3. Write page table entries

  • 4. Read/write kernel memory

Deterministic Attacks on

Page Table Entries

slide-58
SLIDE 58

0x1b17f000 0x1b17d000 0x1b17c000 0x1b17b000 0x1b17e000

3ac90 3ac91 3ac92 3ac93 3ac94 3ac95 3ac96 1b17b 3ac97 3ac98 3ac99 3ac9a 3ac9b 3ac9c 3ac9d 3ac9e

Virtual address 0xb6a57000 maps to 0x1b17b000 Virtual address 0xb6a58000 maps to 0x3ac97000 Virtual address 0xb6a59000 maps to 0x3ac98000

Mapped Page Table

1. Map a page 4 pages ‘away’ from its page table 2. Flip bit 2 in the page table entry 3. Write page table entries

  • 4. Read/write kernel memory

Deterministic Attacks on

Page Table Entries

slide-59
SLIDE 59
  • 1. Memory Templating

Scan memory for useful bit flips

  • 2. Land a Page Table

Store a page table on a vulnerable page

But how?

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Overview

slide-60
SLIDE 60

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Landing a Page Table

  • No access to pagemap (virtual – physical address mapping)
  • No fancy memory management features (deduplication)
slide-61
SLIDE 61

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Landing a Page Table

  • No access to pagemap (virtual – physical address mapping)
  • No fancy memory management features (deduplication)

Phys Feng Shui

slide-62
SLIDE 62

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Landing a Page Table

  • No access to pagemap (virtual – physical address mapping)
  • No fancy memory management features (deduplication)

Phys Feng Shui

Physical memory:

slide-63
SLIDE 63

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Landing a Page Table

  • No access to pagemap (virtual – physical address mapping)
  • No fancy memory management features (deduplication)

Phys Feng Shui

Physical memory:

Exhaust all memory

slide-64
SLIDE 64

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Landing a Page Table

  • No access to pagemap (virtual – physical address mapping)
  • No fancy memory management features (deduplication)

Phys Feng Shui

Physical memory:

Exhaust all memory

slide-65
SLIDE 65

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Landing a Page Table

  • No access to pagemap (virtual – physical address mapping)
  • No fancy memory management features (deduplication)

Phys Feng Shui

Physical memory:

Release the vulnerable page

slide-66
SLIDE 66

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Landing a Page Table

  • No access to pagemap (virtual – physical address mapping)
  • No fancy memory management features (deduplication)

Phys Feng Shui

Physical memory:

Release the vulnerable page

slide-67
SLIDE 67

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Landing a Page Table

  • No access to pagemap (virtual – physical address mapping)
  • No fancy memory management features (deduplication)

Phys Feng Shui

Physical memory:

Trigger a Page Table Allocation

slide-68
SLIDE 68

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Landing a Page Table

  • No access to pagemap (virtual – physical address mapping)
  • No fancy memory management features (deduplication)

Phys Feng Shui

Physical memory:

Trigger a Page Table Allocation

slide-69
SLIDE 69

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui

Exploit the predictable behavior of the Buddy Allocator

16 * 4KB pages = 64 KB rows

Physical Memory

slide-70
SLIDE 70

Avoid fragmentation by keeping track of same-size memory chunks (buddies)

16 * 4KB pages = 64 KB rows

Physical Memory

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui – Buddy Allocator

slide-71
SLIDE 71

1024KB 512KB

Avoid fragmentation by keeping track of same-size memory chunks (buddies)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui – Buddy Allocator

slide-72
SLIDE 72

1024KB 512KB

X1 = __get_free_pages(flags, 6); // get 26 = 64KB of memory

Avoid fragmentation by keeping track of same-size memory chunks (buddies)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui – Buddy Allocator

slide-73
SLIDE 73

1024KB 256KB 256KB

X1 = __get_free_pages(flags, 6); // get 26 = 64KB of memory

Avoid fragmentation by keeping track of same-size memory chunks (buddies)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui – Buddy Allocator

slide-74
SLIDE 74

1024KB 128KB 128KB 256KB

X1 = __get_free_pages(flags, 6); // get 26 = 64KB of memory

Avoid fragmentation by keeping track of same-size memory chunks (buddies)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui – Buddy Allocator

slide-75
SLIDE 75

1024KB 64KB 64KB 128KB 256KB

X1 = __get_free_pages(flags, 6); // get 26 = 64KB of memory

Avoid fragmentation by keeping track of same-size memory chunks (buddies)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui – Buddy Allocator

slide-76
SLIDE 76

1024KB X1 64KB 128KB 256KB

X1 = __get_free_pages(flags, 6); // get 26 = 64KB of memory

Avoid fragmentation by keeping track of same-size memory chunks (buddies)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui – Buddy Allocator

slide-77
SLIDE 77

1024KB X1 64KB 128KB 256KB

X2 = __get_free_pages(flags, 3); // get 23 = 8KB of memory

Avoid fragmentation by keeping track of same-size memory chunks (buddies)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui – Buddy Allocator

slide-78
SLIDE 78

1024KB X1 32KB 32KB 128KB 256KB

X2 = __get_free_pages(flags, 3); // get 23 = 8KB of memory

Avoid fragmentation by keeping track of same-size memory chunks (buddies)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui – Buddy Allocator

slide-79
SLIDE 79

1024KB X1 16KB 16KB 32KB 128KB 256KB

X2 = __get_free_pages(flags, 3); // get 23 = 8KB of memory

Avoid fragmentation by keeping track of same-size memory chunks (buddies)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui – Buddy Allocator

slide-80
SLIDE 80

1024KB X1 8KB 8KB 16KB 32KB 128KB 256KB

X2 = __get_free_pages(flags, 3); // get 23 = 8KB of memory

Avoid fragmentation by keeping track of same-size memory chunks (buddies)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui – Buddy Allocator

slide-81
SLIDE 81

1024KB X1 X2 8KB 16KB 32KB 128KB 256KB

X2 = __get_free_pages(flags, 3); // get 23 = 8KB of memory

Avoid fragmentation by keeping track of same-size memory chunks (buddies)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui – Buddy Allocator

slide-82
SLIDE 82

1024KB X1 X2 8KB 16KB 32KB 128KB 256KB

X3 = __get_free_pages(flags, 5); // get 23 = 32KB of memory

Avoid fragmentation by keeping track of same-size memory chunks (buddies)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui – Buddy Allocator

slide-83
SLIDE 83

1024KB X1 X2 8KB 16KB X3 128KB 256KB

P3 = __get_free_pages(flags, 5); // get 23 = 32KB of memory

Avoid fragmentation by keeping track of same-size memory chunks (buddies)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui – Buddy Allocator

slide-84
SLIDE 84

1024KB X1 X2 8KB 16KB X3 128KB 256KB

free_pages(X2, 3); // free X2

Avoid fragmentation by keeping track of same-size memory chunks (buddies)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui – Buddy Allocator

slide-85
SLIDE 85

1024KB X1 8KB 8KB 16KB X3 128KB 256KB

free_pages(X2, 3); // free X2

Avoid fragmentation by keeping track of same-size memory chunks (buddies)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui – Buddy Allocator

slide-86
SLIDE 86

1024KB X1 16KB 16KB X3 128KB 256KB

free_pages(X2, 3); // free X2

Avoid fragmentation by keeping track of same-size memory chunks (buddies)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui – Buddy Allocator

slide-87
SLIDE 87

1024KB X1 32KB X3 128KB 256KB

free_pages(X2, 3); // free X2

Avoid fragmentation by keeping track of same-size memory chunks (buddies)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui – Buddy Allocator

slide-88
SLIDE 88

1024KB X1 32KB X3 128KB 256KB

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui

Deterministic Rowhammer exploitation in 8 steps

slide-89
SLIDE 89

1024KB X1 32KB X3 128KB 256KB

L1, L2, …, Ln = exhaust(L);

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 1/8

Exhaust + Template Large chunks

slide-90
SLIDE 90

512KB 512KB X1 32KB X3 128KB 256KB

L1, L2, …, Ln = exhaust(9); // get all 2^9 = 512KB chunks

Exhaust + Template Large chunks

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 1/8

slide-91
SLIDE 91

L1 L2 X1 32KB X3 128KB 256KB

L1, L2, …, Ln = exhaust(L); // get all 2^9 = 512KB chunks

Exhaust + Template Large chunks

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 1/8

slide-92
SLIDE 92

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 L1 L2 X1 32KB X3 128KB 256KB

Hammer(L1, 2); // hammer row 2 of chunk L1

Exhaust + Template Large chunks

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 1/8

slide-93
SLIDE 93

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 L2 X1 32KB X3 128KB 256KB

Hammer(L1, 3); // hammer row 3 of chunk L1

Exhaust + Template Large chunks

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 1/8

slide-94
SLIDE 94

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 L2 X1 32KB X3 128KB 256KB

Hammer(L1, 4); // hammer row 4 of chunk L1

Exhaust + Template Large chunks

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 1/8

slide-95
SLIDE 95

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 L2 X1 32KB X3 128KB 256KB

Hammer(L1, 5); // hammer row 5 of chunk L1

Exhaust + Template Large chunks

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 1/8

slide-96
SLIDE 96

L1 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 L2 X1 32KB X3 128KB 256KB

Hammer(L1, 6); // hammer row 6 of chunk L1

Exhaust + Template Large chunks

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 1/8

slide-97
SLIDE 97

L1 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 L2 X1 32KB X3 128KB 256KB

Hammer(L1, 7); // hammer row 7 of chunk L1

Exhaust + Template Large chunks

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 1/8

slide-98
SLIDE 98

L1 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 L2 X1 32KB X3 128KB 256KB

Hammer(L2, 2); // hammer row 2 of chunk L2

Exhaust + Template Large chunks

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 1/8

slide-99
SLIDE 99

L1 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 X1 32KB X3 128KB 256KB

Hammer(L2, 3); // hammer row 3 of chunk L2

Exhaust + Template Large chunks

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 1/8

slide-100
SLIDE 100

L1 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1111111111111111111111111101111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 X1 32KB X3 128KB 256KB

“exploitable flip found in page 5 of virtual row 3 of L2!”

Exhaust + Template Large chunks

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 1/8

slide-101
SLIDE 101

L1 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1111111111111111111111111101111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 X1 32KB X3 128KB 256KB

_M1, _M2, …, _Mn = exhaust(6); // get all 2^6 = 64KB chunks

Exhaust Medium-sized chunks

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 2/8

slide-102
SLIDE 102

L1 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1111111111111111111111111101111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 X1 32KB X3 64KB 64KB 256KB

_M1, _M2, …, _Mn = exhaust(6); // get all 2^6 = 64KB chunks

Exhaust Medium-sized chunks

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 2/8

slide-103
SLIDE 103

L1 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1111111111111111111111111101111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 X1 32KB X3 _M1 64KB 256KB

_M1, _M2, …, _Mn = exhaust(6); // get all 2^6 = 64KB chunks

Exhaust Medium-sized chunks

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 2/8

slide-104
SLIDE 104

L1 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1111111111111111111111111101111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 X1 32KB X3 _M1 _M2 256KB

_M1, _M2, …, _Mn = exhaust(6); // get all 2^6 = 64KB chunks

Exhaust Medium-sized chunks

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 2/8

slide-105
SLIDE 105

L1 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1111111111111111111111111101111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 X1 32KB X3 _M1 _M2 128KB 128KB

_M1, _M2, …, _Mn = exhaust(6); // get all 2^6 = 64KB chunks

Exhaust Medium-sized chunks

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 2/8

slide-106
SLIDE 106

L1 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1111111111111111111111111101111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 X1 32KB X3 _M1 _M2 64KB 64KB 128KB

_M1, _M2, …, _Mn = exhaust(6); // get all 2^6 = 64KB chunks

Exhaust Medium-sized chunks

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 2/8

slide-107
SLIDE 107

L1 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1111111111111111111111111101111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 X1 32KB X3 _M1 _M2 _M3 64KB 128KB

_M1, _M2, …, _Mn = exhaust(6); // get all 2^6 = 64KB chunks

Exhaust Medium-sized chunks

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 2/8

slide-108
SLIDE 108

L1 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1111111111111111111111111101111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 X1 32KB X3 _M1 _M2 _M3 _M4 128KB

_M1, _M2, …, _Mn = exhaust(6); // get all 2^6 = 64KB chunks

Exhaust Medium-sized chunks

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 2/8

slide-109
SLIDE 109

L1 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1111111111111111111111111101111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 X1 32KB X3 _M1 _M2 _M3 _M4 64KB 64KB

_M1, _M2, …, _Mn = exhaust(6); // get all 2^6 = 64KB chunks

Exhaust Medium-sized chunks

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 2/8

slide-110
SLIDE 110

L1 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1111111111111111111111111101111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 X1 32KB X3 _M1 _M2 _M3 _M4 _M5 64KB

_M1, _M2, …, _Mn = exhaust(6); // get all 2^6 = 64KB chunks

Exhaust Medium-sized chunks

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 2/8

slide-111
SLIDE 111

L1 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1111111111111111111111111101111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 X1 32KB X3 _M1 _M2 _M3 _M4 _M5 _M6

_M1, _M2, …, _Mn = exhaust(6); // get all 2^6 = 64KB chunks

Exhaust Medium-sized chunks

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 2/8

slide-112
SLIDE 112

L1 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 1111111111111111111111111101111111111111111111111111111111111111111111111111111111111111111111111 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 X1 32KB X3 _M1 _M2 _M3 _M4 _M5 _M6

Release(L2); // L chunk with vulnerable page

Release Large chunk with vulnerable page

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 3/8

slide-113
SLIDE 113

L1 512KB X1 32KB X3 _M1 _M2 _M3 _M4 _M5 _M6

M1, M2, …, Mn = exhaust(6); // get all 2^6 = 64KB chunks

Exhaust Medium-sized chunks (again)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 4/8

slide-114
SLIDE 114

L1 256KB 256KB X1 32KB X3 _M1 _M2 _M3 _M4 _M5 _M6

M1, M2, …, Mn = exhaust(6); // get all 2^6 = 64KB chunks

Exhaust Medium-sized chunks (again)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 4/8

slide-115
SLIDE 115

L1 128KB 128KB 256KB X1 32KB X3 _M1 _M2 _M3 _M4 _M5 _M6

M1, M2, …, Mn = exhaust(6); // get all 2^6 = 64KB chunks

Exhaust Medium-sized chunks (again)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 4/8

slide-116
SLIDE 116

L1 64KB 64KB 128KB 256KB X1 32KB X3 _M1 _M2 _M3 _M4 _M5 _M6

M1, M2, …, Mn = exhaust(6); // get all 2^6 = 64KB chunks

Exhaust Medium-sized chunks (again)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 4/8

slide-117
SLIDE 117

L1 M1 64KB 128KB 256KB X1 32KB X3 _M1 _M2 _M3 _M4 _M5 _M6

M1, M2, …, Mn = exhaust(6); // get all 2^6 = 64KB chunks

Exhaust Medium-sized chunks (again)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 4/8

slide-118
SLIDE 118

L1 M1 M2 128KB 256KB X1 32KB X3 _M1 _M2 _M3 _M4 _M5 _M6

M1, M2, …, Mn = exhaust(6); // get all 2^6 = 64KB chunks

Exhaust Medium-sized chunks (again)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 4/8

slide-119
SLIDE 119

L1 M1 M2 64KB 64KB 256KB X1 32KB X3 _M1 _M2 _M3 _M4 _M5 _M6

M1, M2, …, Mn = exhaust(6); // get all 2^6 = 64KB chunks

Exhaust Medium-sized chunks (again)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 4/8

slide-120
SLIDE 120

L1 M1 M2 M3 64KB 256KB X1 32KB X3 _M1 _M2 _M3 _M4 _M5 _M6

M1, M2, …, Mn = exhaust(6); // get all 2^6 = 64KB chunks

Exhaust Medium-sized chunks (again)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 4/8

slide-121
SLIDE 121

L1 M1 M2 M3 M4 256KB X1 32KB X3 _M1 _M2 _M3 _M4 _M5 _M6

M1, M2, …, Mn = exhaust(6); // get all 2^6 = 64KB chunks

Exhaust Medium-sized chunks (again)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 4/8

slide-122
SLIDE 122

L1 M1 M2 M3 M4 128KB 128KB X1 32KB X3 _M1 _M2 _M3 _M4 _M5 _M6

M1, M2, …, Mn = exhaust(6); // get all 2^6 = 64KB chunks

Exhaust Medium-sized chunks (again)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 4/8

slide-123
SLIDE 123

L1 M1 M2 M3 M4 64KB 64KB 128KB X1 32KB X3 _M1 _M2 _M3 _M4 _M5 _M6

M1, M2, …, Mn = exhaust(6); // get all 2^6 = 64KB chunks

Exhaust Medium-sized chunks (again)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 4/8

slide-124
SLIDE 124

L1 M1 M2 M3 M4 M5 64KB 128KB X1 32KB X3 _M1 _M2 _M3 _M4 _M5 _M6

M1, M2, …, Mn = exhaust(6); // get all 2^6 = 64KB chunks

Exhaust Medium-sized chunks (again)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 4/8

slide-125
SLIDE 125

L1 M1 M2 M3 M4 M5 M6 128KB X1 32KB X3 _M1 _M2 _M3 _M4 _M5 _M6

M1, M2, …, Mn = exhaust(6); // get all 2^6 = 64KB chunks

Exhaust Medium-sized chunks (again)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 4/8

slide-126
SLIDE 126

L1 M1 M2 M3 M4 M5 M6 64KB 64KB X1 32KB X3 _M1 _M2 _M3 _M4 _M5 _M6

M1, M2, …, Mn = exhaust(6); // get all 2^6 = 64KB chunks

Exhaust Medium-sized chunks (again)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 4/8

slide-127
SLIDE 127

L1 M1 M2 M3 M4 M5 M6 M7 64KB X1 32KB X3 _M1 _M2 _M3 _M4 _M5 _M6

M1, M2, …, Mn = exhaust(6); // get all 2^6 = 64KB chunks

Exhaust Medium-sized chunks (again)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 4/8

slide-128
SLIDE 128

L1 M1 M2 M3 M4 M5 M6 M7 M8 X1 32KB X3 _M1 _M2 _M3 _M4 _M5 _M6

M1, M2, …, Mn = exhaust(6); // get all 2^6 = 64KB chunks

Exhaust Medium-sized chunks (again)

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 4/8

slide-129
SLIDE 129

L1 M1 M2 M3 M4 M5 M6 M7 M8 X1 32KB X3 _M1 _M2 _M3 _M4 _M5 _M6

Release vulnerable Medium-sized chunk + Release all Large chunks

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 5/8

slide-130
SLIDE 130

L1 M1 M2 64KB M4 M5 M6 M7 M8 X1 32KB X3 _M1 _M2 _M3 _M4 _M5 _M6

Release vulnerable Medium-sized chunk + Release all Large chunks

Release(M3); // releases the vulnerable row

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 5/8

slide-131
SLIDE 131

512KB M1 M2 64KB M4 M5 M6 M7 M8 X1 32KB X3 _M1 _M2 _M3 _M4 _M5 _M6

Release vulnerable Medium-sized chunk + Release all Large chunks

ReleaseAll(L); // to avoid going out-of-memory later

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 5/8

slide-132
SLIDE 132

512KB M1 M2 64KB M4 M5 M6 M7 M8 X1 32KB X3 _M1 _M2 _M3 _M4 _M5 _M6

Land a small chunk in the vulnerable 64 KB row

Land(S); // allocate 4KB pages until the 64KB is used

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 6/8

slide-133
SLIDE 133

512KB M1 M2 64KB M4 M5 M6 M7 M8 X1 16KB 16KB X3 _M1 _M2 _M3 _M4 _M5 _M6

Land a small chunk in the vulnerable 64 KB row

Land(S); // allocate 4KB pages until the 64KB is used

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 6/8

slide-134
SLIDE 134

512KB M1 M2 64KB M4 M5 M6 M7 M8 X1 8KB 8KB 16KB X3 _M1 _M2 _M3 _M4 _M5 _M6

Land a small chunk in the vulnerable 64 KB row

Land(S); // allocate 4KB pages until the 64KB is used

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 6/8

slide-135
SLIDE 135

512KB M1 M2 64KB M4 M5 M6 M7 M8 X1 4KB 4KB 8KB 16KB X3 _M1 _M2 _M3 _M4 _M5 _M6

Land a small chunk in the vulnerable 64 KB row

Land(S); // allocate 4KB pages until the 64KB is used

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 6/8

slide-136
SLIDE 136

512KB M1 M2 64KB M4 M5 M6 M7 M8 X1 S1 4KB 8KB 16KB X3 _M1 _M2 _M3 _M4 _M5 _M6

Land a small chunk in the vulnerable 64 KB row

Land(S); // allocate 4KB pages until the 64KB is used

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 6/8

slide-137
SLIDE 137

512KB M1 M2 64KB M4 M5 M6 M7 M8 X1 S1 S2 8KB 16KB X3 _M1 _M2 _M3 _M4 _M5 _M6

Land a small chunk in the vulnerable 64 KB row

Land(S); // allocate 4KB pages until the 64KB is used

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 6/8

slide-138
SLIDE 138

512KB M1 M2 64KB M4 M5 M6 M7 M8 X1 S1 S2 4KB 4KB 16KB X3 _M1 _M2 _M3 _M4 _M5 _M6

Land a small chunk in the vulnerable 64 KB row

Land(S); // allocate 4KB pages until the 64KB is used

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 6/8

slide-139
SLIDE 139

512KB M1 M2 64KB M4 M5 M6 M7 M8 X1 S1 S2 S3 4KB 16KB X3 _M1 _M2 _M3 _M4 _M5 _M6

Land a small chunk in the vulnerable 64 KB row

Land(S); // allocate 4KB pages until the 64KB is used

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 6/8

slide-140
SLIDE 140

512KB M1 M2 64KB M4 M5 M6 M7 M8 X1 S1 S2 S3 S4 16KB X3 _M1 _M2 _M3 _M4 _M5 _M6

Land a small chunk in the vulnerable 64 KB row

Land(S); // allocate 4KB pages until the 64KB is used

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 6/8

slide-141
SLIDE 141

512KB M1 M2 64KB M4 M5 M6 M7 M8 X1 S1 S2 S3 S4 8KB 8KB X3 _M1 _M2 _M3 _M4 _M5 _M6

Land a small chunk in the vulnerable 64 KB row

Land(S); // allocate 4KB pages until the 64KB is used

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 6/8

slide-142
SLIDE 142

512KB M1 M2 64KB M4 M5 M6 M7 M8 X1 S1 S2 S3 S4 4KB 4KB 8KB X3 _M1 _M2 _M3 _M4 _M5 _M6

Land a small chunk in the vulnerable 64 KB row

Land(S); // allocate 4KB pages until the 64KB is used

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 6/8

slide-143
SLIDE 143

512KB M1 M2 64KB M4 M5 M6 M7 M8 X1 S1 S2 S3 S4 S5 4KB 8KB X3 _M1 _M2 _M3 _M4 _M5 _M6

Land a small chunk in the vulnerable 64 KB row

Land(S); // allocate 4KB pages until the 64KB is used

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 6/8

slide-144
SLIDE 144

512KB M1 M2 64KB M4 M5 M6 M7 M8 X1 S1 S2 S3 S4 S5 S6 8KB X3 _M1 _M2 _M3 _M4 _M5 _M6

Land a small chunk in the vulnerable 64 KB row

Land(S); // allocate 4KB pages until the 64KB is used

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 6/8

slide-145
SLIDE 145

512KB M1 M2 64KB M4 M5 M6 M7 M8 X1 S1 S2 S3 S4 S5 S6 4KB 4KB X3 _M1 _M2 _M3 _M4 _M5 _M6

Land a small chunk in the vulnerable 64 KB row

Land(S); // allocate 4KB pages until the 64KB is used

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 6/8

slide-146
SLIDE 146

512KB M1 M2 64KB M4 M5 M6 M7 M8 X1 S1 S2 S3 S4 S5 S6 S7 4KB X3 _M1 _M2 _M3 _M4 _M5 _M6

Land a small chunk in the vulnerable 64 KB row

Land(S); // allocate 4KB pages until the 64KB is used

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 6/8

slide-147
SLIDE 147

512KB M1 M2 64KB M4 M5 M6 M7 M8 X1 S1 S2 S3 S4 S5 S6 S7 S8 X3 _M1 _M2 _M3 _M4 _M5 _M6

Land a small chunk in the vulnerable 64 KB row

Land(S); // allocate 4KB pages until the 64KB is used

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 6/8

slide-148
SLIDE 148

512KB M1 M2 32KB 32KB M4 M5 M6 M7 M8 X1 S1 S2 S3 S4 S5 S6 S7 S8 X3 _M1 _M2 _M3 _M4 _M5 _M6

Land a small chunk in the vulnerable 64 KB row

Land(S); // allocate 4KB pages until the 64KB is used

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 6/8

slide-149
SLIDE 149

512KB M1 M2 16KB 16KB 32KB M4 M5 M6 M7 M8 X1 S1 S2 S3 S4 S5 S6 S7 S8 X3 _M1 _M2 _M3 _M4 _M5 _M6

Land a small chunk in the vulnerable 64 KB row

Land(S); // allocate 4KB pages until the 64KB is used

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 6/8

slide-150
SLIDE 150

512KB M1 M2 8KB 8KB 16KB 32KB M4 M5 M6 M7 M8 X1 S1 S2 S3 S4 S5 S6 S7 S8 X3 _M1 _M2 _M3 _M4 _M5 _M6

Land a small chunk in the vulnerable 64 KB row

Land(S); // allocate 4KB pages until the 64KB is used

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 6/8

slide-151
SLIDE 151

512KB M1 M2 4KB 4KB 8KB 16KB 32KB M4 M5 M6 M7 M8 X1 S1 S2 S3 S4 S5 S6 S7 S8 X3 _M1 _M2 _M3 _M4 _M5 _M6

Land a small chunk in the vulnerable 64 KB row

Land(S); // allocate 4KB pages until the 64KB is used

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 6/8

slide-152
SLIDE 152

512KB M1 M2 S9 4KB 8KB 16KB 32KB M4 M5 M6 M7 M8 X1 S1 S2 S3 S4 S5 S6 S7 S8 X3 _M1 _M2 _M3 _M4 _M5 _M6

Land a small chunk in the vulnerable 64 KB row

Land(S); // allocate 4KB pages until the 64KB is used

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 6/8

slide-153
SLIDE 153

512KB M1 M2 S9 4KB 8KB 16KB 32KB M4 M5 M6 M7 M8 X1 S1 S2 S3 S4 S5 S6 S7 S8 X3 _M1 _M2 _M3 _M4 _M5 _M6

Pad small chunks until the vulnerable page

Pad(P); // insert padding until vulnerable page

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 7/8

slide-154
SLIDE 154

512KB M1 M2 S9 P1 8KB 16KB 32KB M4 M5 M6 M7 M8 X1 S1 S2 S3 S4 S5 S6 S7 S8 X3 _M1 _M2 _M3 _M4 _M5 _M6

Pad small chunks until the vulnerable page

Pad(P); // insert padding until vulnerable page

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 7/8

slide-155
SLIDE 155

512KB M1 M2 S9 P1 4KB 4KB 16KB 32KB M4 M5 M6 M7 M8 X1 S1 S2 S3 S4 S5 S6 S7 S8 X3 _M1 _M2 _M3 _M4 _M5 _M6

Pad small chunks until the vulnerable page

Pad(P); // insert padding until vulnerable page

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 7/8

slide-156
SLIDE 156

512KB M1 M2 S9 P1 P2 4KB 16KB 32KB M4 M5 M6 M7 M8 X1 S1 S2 S3 S4 S5 S6 S7 S8 X3 _M1 _M2 _M3 _M4 _M5 _M6

Pad small chunks until the vulnerable page

Pad(P); // insert padding until vulnerable page

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 7/8

slide-157
SLIDE 157

512KB M1 M2 S9 P1 P2 P3 16KB 32KB M4 M5 M6 M7 M8 X1 S1 S2 S3 S4 S5 S6 S7 S8 X3 _M1 _M2 _M3 _M4 _M5 _M6

Pad small chunks until the vulnerable page

Pad(P); // insert padding until vulnerable page

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 7/8

slide-158
SLIDE 158

512KB M1 M2 S9 P1 P2 P3 16KB 32KB M4 M5 M6 M7 M8 X1 S1 S2 S3 S4 S5 S6 S7 S8 X3 _M1 _M2 _M3 _M4 _M5 _M6

Force a Page Table allocation + map the vulnerable PTE

PT = mmap(MAP_FIXED); // Force a Page Table allocation

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 8/8

slide-159
SLIDE 159

512KB M1 M2 S9 P1 P2 P3 8KB 8KB 32KB M4 M5 M6 M7 M8 X1 S1 S2 S3 S4 S5 S6 S7 S8 X3 _M1 _M2 _M3 _M4 _M5 _M6

Force a Page Table allocation + map the vulnerable PTE

PT = mmap(MAP_FIXED); // Force a Page Table allocation

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 8/8

slide-160
SLIDE 160

512KB M1 M2 S9 P1 P2 P3 4KB 4KB 8KB 32KB M4 M5 M6 M7 M8 X1 S1 S2 S3 S4 S5 S6 S7 S8 X3 _M1 _M2 _M3 _M4 _M5 _M6

Force a Page Table allocation + map the vulnerable PTE

PT = mmap(MAP_FIXED); // Force a Page Table allocation

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 8/8

slide-161
SLIDE 161

512KB M1 M2 S9 P1 P2 P3 PT 4KB 8KB 32KB M4 M5 M6 M7 M8 X1 S1 S2 S3 S4 S5 S6 S7 S8 X3 _M1 _M2 _M3 _M4 _M5 _M6

Force a Page Table allocation + map the vulnerable PTE

PT = mmap(MAP_FIXED); // Force a Page Table allocation

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 8/8

slide-162
SLIDE 162

M1 M2 S9 P1 P2 P3 PT 4KB 8KB 32KB M4 M5 M6 M7 M8

Force a Page Table allocation + map the vulnerable PTE

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 8/8

slide-163
SLIDE 163

M1 M2 S9 P1 P2 P3 PT 4KB 8KB 32KB M4 M5 M6 M7 M8

Force a Page Table allocation + map the vulnerable PTE

M2 P2 P3 PT 4KB 8KB (first page) M4 Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 8/8

slide-164
SLIDE 164

M1 M2 S9 P1 P2 P3 PT 4KB 8KB 32KB M4 M5 M6 M7 M8

Force a Page Table allocation + map the vulnerable PTE

PTE with bit flip

M2 P2 P3 PT 4KB 8KB (first page) M4 Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 8/8

slide-165
SLIDE 165

M1 M2 S9 P1 P2 P3 PT 4KB 8KB 32KB M4 M5 M6 M7 M8

Force a Page Table allocation + map the vulnerable PTE

PTE with bit flip

M2 P2 P3 PT 4KB 8KB (first page) M4

16 * 4KB pages = 64KB rows

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 8/8

slide-166
SLIDE 166

M1 M2 S9 P1 P2 P3 PT 4KB 8KB 32KB M4 M5 M6 M7 M8

Force a Page Table allocation + map the vulnerable PTE

M2

M4[5]

P2 P3 PT 4KB 8KB (first page) M4[3] (3rd page) M4[4] (4th page) M4[5] (5th page) M4[6] (6th page) M4[7] (7th page)

16 * 4KB pages = 64KB rows mmap(M4[5], MAP_FIXED); // map vulnerable PTE 64KB ‘away’

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Phys Feng Shui step 8/8

slide-167
SLIDE 167
  • 1. Memory Templating

Scan memory for useful bit flips

  • 2. Land a Page Table

Store a page table on a vulnerable page

  • 3. Reproduce the bit flip

Modify the data structure and get root acces

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Overview

slide-168
SLIDE 168

Perform double-sided rowhammer to flip a bit in the PTE

Drammer

M2

M4[5]

P2 P3 PT 4KB 8KB (first page) M4[3] (3rd page) M4[4] (4th page) M4[5] (5th page) M4[6] (6th page) M4[7] (7th page)

16 * 4KB pages = 64KB rows

slide-169
SLIDE 169

Perform double-sided rowhammer to flip a bit in the PTE

Drammer

M2

M4[5]

P2 P3 PT 4KB 8KB (first page) M4[3] (3rd page) M4[4] (4th page) M4[5] (5th page) M4[6] (6th page) M4[7] (7th page)

16 * 4KB pages = 64KB rows

slide-170
SLIDE 170

Perform double-sided rowhammer to flip a bit in the PTE

Drammer

M2

M4[5]

P2 P3 PT 4KB 8KB (first page) M4[3] (3rd page) M4[4] (4th page) M4[5] (5th page) M4[6] (6th page) M4[7] (7th page)

16 * 4KB pages = 64KB rows

slide-171
SLIDE 171

M2

PT

P2 P3 PT 4KB 8KB (first page) M4[3] (3rd page) M4[4] (4th page) M4[5] (5th page) M4[6] (6th page) M4[7] (7th page)

16 * 4KB pages = 64KB rows

Drammer

Write access to a Page Table

slide-172
SLIDE 172

M2

PT

P2 P3 PT 4KB 8KB (first page) M4[3] (3rd page) M4[4] (4th page) M4[5] (5th page) M4[6] (6th page) M4[7] (7th page)

16 * 4KB pages = 64KB rows

Drammer

Write access to a Page Table

  • 1. Fill PT with Page Table Entries to kernel memory
slide-173
SLIDE 173

M2

PT

P2 P3 PT 4KB 8KB (first page) M4[3] (3rd page) M4[4] (4th page) M4[5] (5th page) M4[6] (6th page) M4[7] (7th page)

16 * 4KB pages = 64KB rows

Drammer

Write access to a Page Table

  • 1. Fill PT with Page Table Entries to kernel memory
  • 2. Search kernel memory for our struct cred
slide-174
SLIDE 174

M2

PT

P2 P3 PT 4KB 8KB (first page) M4[3] (3rd page) M4[4] (4th page) M4[5] (5th page) M4[6] (6th page) M4[7] (7th page)

16 * 4KB pages = 64KB rows

Drammer

Write access to a Page Table

  • 1. Fill PT with Page Table Entries to kernel memory
  • 2. Search kernel memory for our struct cred
  • 3. Overwrite our uid and gid to get root privileges
slide-175
SLIDE 175

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Evaluation

Device #flips 1st exploitable flip after LG Nexus 51 1058 116s LG Nexus 54

  • LG Nexus 55

747,013 1s LG Nexus 4 1,328 7s OnePlus One 3,981 942s Motorola Moto G (2013) 429 441s LG G4 (ARMv8 – 64-bit) 117,496 5s

Bit flips on 18 out of 27 tested devices

slide-176
SLIDE 176

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Evaluation

Device #flips 1st exploitable flip after LG Nexus 51 1058 116s LG Nexus 54

  • LG Nexus 55

747,013 1s LG Nexus 4 1,328 7s OnePlus One 3,981 942s Motorola Moto G (2013) 429 441s LG G4 (ARMv8 – 64-bit) 117,496 5s

slide-177
SLIDE 177

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Evaluation

Device #flips 1st exploitable flip after LG Nexus 51 1058 116s LG Nexus 54

  • LG Nexus 55

747,013 1s LG Nexus 4 1,328 7s OnePlus One 3,981 942s Motorola Moto G (2013) 429 441s LG G4 (ARMv8 – 64-bit) 117,496 5s

slide-178
SLIDE 178

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Evaluation

Device #flips 1st exploitable flip after LG Nexus 51 1058 116s LG Nexus 54

  • LG Nexus 55

747,013 1s LG Nexus 4 1,328 7s OnePlus One 3,981 942s Motorola Moto G (2013) 429 441s LG G4 (ARMv8 – 64-bit) 117,496 5s

slide-179
SLIDE 179

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Evaluation

Device #flips 1st exploitable flip after LG Nexus 51 1058 116s LG Nexus 54

  • LG Nexus 55

747,013 1s LG Nexus 4 1,328 7s OnePlus One 3,981 942s Motorola Moto G (2013) 429 441s LG G4 (ARMv8 – 64-bit) 117,496 5s

After the 1st exploitable flip, exploitation takes at most 22 seconds

slide-180
SLIDE 180

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Evaluation

Device #flips 1st exploitable flip after LG Nexus 51 1058 116s LG Nexus 54

  • LG Nexus 55

747,013 1s LG Nexus 4 1,328 7s OnePlus One 3,981 942s Motorola Moto G (2013) 429 441s LG G4 (ARMv8 – 64-bit) 117,496 5s

After the 1st exploitable flip, exploitation takes at most 22 seconds Drammer test app reported bit flips on: Google Pixel, OnePlus 3, Galaxy Note 7, HTC One M8, …

slide-181
SLIDE 181

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Disclosure

Contacted Google with a list of suggested mitigations on July 25

slide-182
SLIDE 182

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Disclosure

Contacted Google with a list of suggested mitigations on July 25

(91 days before #CCS16)

slide-183
SLIDE 183

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Disclosure

Contacted Google with a list of suggested mitigations on July 25 “Can you publish at another conference, later this year?”

(91 days before #CCS16)

slide-184
SLIDE 184

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Disclosure

Contacted Google with a list of suggested mitigations on July 25 “Can you publish at another conference, later this year?” “What if we support you financially?”

(91 days before #CCS16)

slide-185
SLIDE 185

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Disclosure

Contacted Google with a list of suggested mitigations on July 25 “Ok, could you then perhaps obfuscate some parts of the paper?”

(91 days before #CCS16)

slide-186
SLIDE 186

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Disclosure

Contacted Google with a list of suggested mitigations on July 25 “Ok, could you then perhaps obfuscate some parts of the paper?” Rewarded $4000 for a critical issue

(91 days before #CCS16)

slide-187
SLIDE 187

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Disclosure

Contacted Google with a list of suggested mitigations on July 25 “Ok, could you then perhaps obfuscate some parts of the paper?” Rewarded $4000 for a critical issue

(91 days before #CCS16) (because “it doesn’t work on the devices in our Reward Program”)

slide-188
SLIDE 188

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Disclosure

Contacted Google with a list of suggested mitigations on July 25 “Ok, could you then perhaps obfuscate some parts of the paper?” Rewarded $4000 for a critical issue

(91 days before #CCS16) (because “it doesn’t work on the devices in our Reward Program”)

But now it does

slide-189
SLIDE 189

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Disclosure

Contacted Google with a list of suggested mitigations on July 25 “Ok, could you then perhaps obfuscate some parts of the paper?” Rewarded $4000 for a critical issue Partial hardening in November’s updates

(91 days before #CCS16)

“We will continue to work on a longer term solution”

slide-190
SLIDE 190

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Conclusion

  • Deterministic Rowhammer exploitation
  • No special memory management features required (e.g., deduplication)
  • ARM memory controllers are fast enough to do Rowhammer
  • LPDDR* found vulnerable
  • No easy software fix
slide-191
SLIDE 191

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Conclusion

  • Deterministic Rowhammer exploitation
  • No special memory management features required (e.g., deduplication)
  • ARM memory controllers are fast enough to do Rowhammer
  • LPDDR* found vulnerable
  • No easy software fix
  • Using DMA bypasses state-of-the-art defenses (e.g., ANVIL)
slide-192
SLIDE 192

Drammer: Deterministic Rowhammer Attacks on Mobile Platforms

Conclusion

  • Deterministic Rowhammer exploitation
  • No special memory management features required (e.g., deduplication)
  • ARM memory controllers are fast enough to do Rowhammer
  • LPDDR* found vulnerable
  • No easy software fix
  • Using DMA bypasses state-of-the-art defenses (e.g., ANVIL)
  • More details
  • Demos, statistics and test app:

https://vusec.net/projects/drammer

  • Open source:

https://github.com/vusec/drammer