iOS Kernel Heap Armageddon - Hakim
iOS Kernel Heap Armageddon - Hakim iOS Kernel Heap Armageddon - Hakim
Memory Sizes Cheat Sheet in memory size kalloc zone size additional alloc OSArray 36 40 + capacity * 4 OSDictionary 36 40 + capacity * 8 OSData 28 32 + capacity OSSet 24 24 + sizeof(OSArray) OSNumber 24 24 OSString 20 24 + strlen + 1 OSBoolean 12 16 cannot be generated by OSUnserializeXML() Stefan Esser • iOS Kernel Heap Armageddon REVISITED • July 2012 • 86
Heap Spraying (Remember?) • allocate repeatedly • allocate attacker controlled data • allocate large quantities of data in a row • usually fill memory with specific pattern Stefan Esser • iOS Kernel Heap Armageddon REVISITED • July 2012 • 87
- Page 35 and 36: Visualization of Zone Page Allocati
- Page 37 and 38: Visualization of Zone Page Allocati
- Page 39 and 40: Visualization of Zone Page Allocati
- Page 41 and 42: Visualization of Zone Page Allocati
- Page 43 and 44: Visualization of Zone Page Allocati
- Page 45 and 46: Visualization of Zone Page Allocati
- Page 47 and 48: Visualization of Zone Page Allocati
- Page 49 and 50: Visualization of Zone Page Allocati
- Page 51 and 52: Visualization of Zone Page Allocati
- Page 53 and 54: Visualization of Zone Page Allocati
- Page 55 and 56: Visualization of Zone Page Allocati
- Page 57 and 58: Visualization of Zone Page Allocati
- Page 59 and 60: Visualization of Zone Page Allocati
- Page 61 and 62: Zone Page Allocation Distribution (
- Page 63 and 64: Cross Memory Allocator Attacks •
- Page 65 and 66: iOS Kernel C++ • iOS kernel‘s l
- Page 67 and 68: OSObject Memory Layout 0x00 0x04 vt
- Page 69 and 70: Overwriting an OSObject in Memory
- Page 71 and 72: OSArray Memory Layout and Overwriti
- Page 73 and 74: “Generic“ Technique to control
- Page 75 and 76: Heap Feng Shui / Heap Massage / ...
- Page 77 and 78: OSUnserializeXML() • deserializat
- Page 79 and 80: How does the parser work? (II) •
- Page 81 and 82: How does the parser work? (IV) •
- Page 83 and 84: How does the parser work? (VI) •
- Page 85: How does the parser work? (VIII)
- Page 89 and 90: Heap Spraying • allocate repeated
- Page 91 and 92: Heap Spraying • allocate repeated
- Page 93 and 94: Fill Arbitrary Sized Memory Blocks
- Page 95 and 96: Poking Holes into Allocated Data
- Page 97 and 98: Extra: Keeping Data Allocated • s
Memory Sizes Cheat Sheet<br />
in memory size kalloc zone size additional alloc<br />
OSArray<br />
36 40 + capacity * 4<br />
OSDictionary<br />
36 40 + capacity * 8<br />
OSData<br />
28 32 + capacity<br />
OSSet<br />
24 24 + sizeof(OSArray)<br />
OSNumber<br />
24 24<br />
OSString<br />
20 24 + strlen + 1<br />
OSBoolean<br />
12 16<br />
cannot be generated<br />
by OSUnserializeXML()<br />
Stefan Esser • <strong>iOS</strong> <strong>Kernel</strong> <strong>Heap</strong> <strong>Armageddon</strong> REVISITED • July 2012 •<br />
86