University of Cyprus 1
Info formation Leaks
Kyriakos Kyriakou
kkyria16@cs.ucy.ac.cy
EPL 682: Advanced Security Topics
Info formation Leaks Kyriakos Kyriakou kkyria16@cs.ucy.ac.cy - - PowerPoint PPT Presentation
Info formation Leaks Kyriakos Kyriakou kkyria16@cs.ucy.ac.cy University of Cyprus EPL 682: Advanced Security Topics 1 Ju Just st-in in-tim time Code Reuse On the effectiveness of Fine-Grained Address Space Layout Randomization Kevin Z.
University of Cyprus 1
Kyriakos Kyriakou
kkyria16@cs.ucy.ac.cy
EPL 682: Advanced Security Topics
University of Cyprus EPL 682: Advanced Security Topics 2
On the effectiveness of Fine-Grained Address Space Layout Randomization
Kevin Z. Snow, Fabian Monrose, Lucas Davi, Alexandra Dmitrienko, Christopher Liebchen, Ahmad-Reza Sadeghi
University of Cyprus EPL 682: Advanced Security Topics 3
University of Cyprus EPL 682: Advanced Security Topics 4
University of Cyprus EPL 682: Advanced Security Topics 5
University of Cyprus EPL 682: Advanced Security Topics 6
Introduction
University of Cyprus EPL 682: Advanced Security Topics 7
University of Cyprus EPL 682: Advanced Security Topics 8
§ Shellcode, return address, stack § Overwriting alternative control-flow constructs § Redirect execution to existing shared-library functions, chaining together short instruction sequences ending with ret (gadgets, ROP) § Memory disclosure problem
University of Cyprus EPL 682: Advanced Security Topics 9
Canary NX bit ASLR
?
Review the basis of important concepts
University of Cyprus EPL 682: Advanced Security Topics 10
University of Cyprus EPL 682: Advanced Security Topics 11
1
University of Cyprus EPL 682: Advanced Security Topics 12
13
An example of a ROP attack on the heap using a sequence of single-instruction gadgets
University of Cyprus EPL 682: Advanced Security Topics 14
2
University of Cyprus EPL 682: Advanced Security Topics 15
University of Cyprus EPL 682: Advanced Security Topics 16
The ba basi sic i ide dea of address space layout randomization (ASLR) refer to a new stack memory allocator that ad adds a a ra random pad for stack objects larger than 16 bytes. Sta Start rt ad address of an executable is relocated between co conse secu cutive runs runs of the application.
University of Cyprus EPL 682: Advanced Security Topics 17
University of Cyprus EPL 682: Advanced Security Topics 18
attacks
Since current ASLR implementations only randomize on
module level, disclosing a single address within a module effectively
re reveals the the locati tion n of every ery piec ece e of code e wi withi thin n tha that t modul ule
University of Cyprus EPL 682: Advanced Security Topics 19
University of Cyprus EPL 682: Advanced Security Topics 20
University of Cyprus EPL 682: Advanced Security Topics 21
University of Cyprus EPL 682: Advanced Security Topics 22
Modern st stack and he heap mi mitigation
supporting stage one, but these mitigations are not comprehensive
(ie. exploitable vulnerabilities still exist)
University of Cyprus EPL 682: Advanced Security Topics 23
Assumptions for the target platform uses the following mechanisms to mitigate the execution of malicious computations
i. Permutes the order of functions and basic blocks ii. Swaps registers and replaces instructions
University of Cyprus EPL 682: Advanced Security Topics 24
executable or lib librar ary, thereby allowing an ad adversar ary to leverage the non-randomized code parts for a conventional code reuse attack.
do not
enfor force fine-grained randomization.
University of Cyprus EPL 682: Advanced Security Topics 25
University of Cyprus EPL 682: Advanced Security Topics 26
as deployed in Windows 8 The trend is
reuse attacks can re readily undermine the security provided by these techniques
simpl pler and mo more st streamlined exploit development process than ever before
uilds the entire payload on-the-fly
compatible with all OS revisions.
University of Cyprus EPL 682: Advanced Security Topics 27
reveals values at an absolute address
University of Cyprus EPL 682: Advanced Security Topics 28
JIT Code Reuse
University of Cyprus EPL 682: Advanced Security Topics 29
mitigation model
search for all necessary gadgets on-the-fly
University of Cyprus EPL 682: Advanced Security Topics 30
University of Cyprus EPL 682: Advanced Security Topics 31
32
Utilizing just-in-time code reuse against a script-enabled application protected by fine- grained memory (or code) randomization.
University of Cyprus EPL 682: Advanced Security Topics 33
JIT-ROP
University of Cyprus EPL 682: Advanced Security Topics 34
University of Cyprus EPL 682: Advanced Security Topics 35
1
University of Cyprus EPL 682: Advanced Security Topics 36
1
University of Cyprus EPL 682: Advanced Security Topics 37
2
University of Cyprus EPL 682: Advanced Security Topics 38
39
Given an initial code page, recursively disassemble pages and discover direct and indirect pointers to other mapped code pages. It is a recursive search over discovered code pages that results in the set of unique code page virtual addresses along with associated data. Iteration continues only until all the requisite information to build a payload has been acquired.
JIT-ROP
University of Cyprus EPL 682: Advanced Security Topics 40
University of Cyprus EPL 682: Advanced Security Topics 41
University of Cyprus EPL 682: Advanced Security Topics 42
calls because of the relative stability across OS revisions. [as in kernel32.dll] (not system calls)
attacker-supplied program (S (Step ep ❸)
large amount of application code. This offers a unique
function pointers. (S (Step ep ❷)
University of Cyprus EPL 682: Advanced Security Topics 43
JIT-ROP
University of Cyprus EPL 682: Advanced Security Topics 44
University of Cyprus EPL 682: Advanced Security Topics 45
University of Cyprus EPL 682: Advanced Security Topics 46
University of Cyprus EPL 682: Advanced Security Topics 47
adapting the Galileo algorithm proposed by Shacham to it iterat ate
instruction prefix tree structure.
University of Cyprus EPL 682: Advanced Security Topics 48
49
Automatically match a sequence of instructions to a gadget’s semantic definition.
University of Cyprus EPL 682: Advanced Security Topics 50
JIT-ROP
University of Cyprus EPL 682: Advanced Security Topics 51
University of Cyprus EPL 682: Advanced Security Topics 52
University of Cyprus EPL 682: Advanced Security Topics 53
except that compilation is embedded directly within an exploit script with a subset of concrete instructions available for code generation
combinations that implement a program statement, as well as a search over all schedules and register combinations.
script, and control is returned to the exploit writer’s code (Step ❻)
University of Cyprus EPL 682: Advanced Security Topics 54
JIT-ROP
University of Cyprus EPL 682: Advanced Security Topics 55
University of Cyprus EPL 682: Advanced Security Topics 56
JIT-ROP
University of Cyprus EPL 682: Advanced Security Topics 57
JIT-ROP
University of Cyprus EPL 682: Advanced Security Topics 58
University of Cyprus EPL 682: Advanced Security Topics 59
University of Cyprus EPL 682: Advanced Security Topics 60
University of Cyprus EPL 682: Advanced Security Topics 61
JIT-ROP
University of Cyprus EPL 682: Advanced Security Topics 62
University of Cyprus EPL 682: Advanced Security Topics 63
University of Cyprus EPL 682: Advanced Security Topics 64
University of Cyprus EPL 682: Advanced Security Topics 65
JIT-ROP
University of Cyprus EPL 682: Advanced Security Topics 66
University of Cyprus EPL 682: Advanced Security Topics 67
JIT-ROP
University of Cyprus EPL 682: Advanced Security Topics 68
University of Cyprus EPL 682: Advanced Security Topics 69
University of Cyprus EPL 682: Advanced Security Topics 70
University of Cyprus EPL 682: Advanced Security Topics 71
Suggestions
University of Cyprus EPL 682: Advanced Security Topics 72
might be re-randomized before the just-in-time pay-load executes (randomization costs problem)
code injection attacks by encrypting the binary’s code pages with a random key and decrypting them on-the-fly.
flow integrity (CFI), which mitigates runtime attacks regardless
University of Cyprus EPL 682: Advanced Security Topics 73
University of Cyprus EPL 682: Advanced Security Topics 74
University of Cyprus EPL 682: Advanced Security Topics 75
University of Cyprus EPL 682: Advanced Security Topics 76
University of Cyprus EPL 682: Advanced Security Topics 77
Andrea Bittau, Adam Belay, Ali Mashtizadeh, David Mazières, Dan Boneh
University of Cyprus EPL 682: Advanced Security Topics 78
University of Cyprus EPL 682: Advanced Security Topics 79
University of Cyprus EPL 682: Advanced Security Topics 80
University of Cyprus EPL 682: Advanced Security Topics 81
University of Cyprus EPL 682: Advanced Security Topics 82
for everyone
reach
to find vulnerabilities
that none has access to see the source code
possible, but harder
and reverse engineering
University of Cyprus EPL 682: Advanced Security Topics 83
University of Cyprus EPL 682: Advanced Security Topics 84
University of Cyprus EPL 682: Advanced Security Topics 85
University of Cyprus EPL 682: Advanced Security Topics 86
University of Cyprus EPL 682: Advanced Security Topics 87
University of Cyprus EPL 682: Advanced Security Topics 88
stack canaries enabled
University of Cyprus EPL 682: Advanced Security Topics 89
Position Independent Executables (PIE) are an output of the hardened package build process. A PIE binary and all of its dependencies are loaded into random locations within virtual memory each time the application is executed.
University of Cyprus EPL 682: Advanced Security Topics 90
used to leak canaries, to also leak saved return addresses in order to defeat ASLR on 64-bit even when Position Independent Executables (PIE) are used
Both techniques share the idea of using a single stack vulnerability to leak information based on whether a server process crashes or not. The stack reading technique overwrites the stack byte-by-byte with possible guess values, until the correct one is found and the server does not crash.
University of Cyprus EPL 682: Advanced Security Topics 91
The Blind ROP attack remotely finds enough gadgets to perform the write system call, after which the server’s binary can be transferred from memory to the attacker’s socket. At this point, canaries, ASLR and NX have been defeated and the exploit can proceed using known techniques.
University of Cyprus EPL 682: Advanced Security Topics 92
One may notice a crash when using a remote service or discover one through remote fuzz testing.
to be used in a proprietary closed-binary service A popular SSL library for example may have a stack vulnerability and one may speculate that it is being used by a proprietary service.
unknown This applies to manually compiled installations or source-based distributions such as Gentoo
University of Cyprus EPL 682: Advanced Security Topics 93
University of Cyprus EPL 682: Advanced Security Topics 94
reading).
software can be attacked when the binary is unknown.
given input on how to trigger a stack overflow on a server
that is generic, 64-bit, and defeats (full/PIE) ASLR, canaries and NX.
University of Cyprus EPL 682: Advanced Security Topics 95
In summary, ASLR must be applied to all executable segments (PIE) and re-randomization must occur after each crash (at odds with fork-only servers). Holding the binary from the attacker or purposefully altering it may not be an effective security countermeasure.
University of Cyprus EPL 682: Advanced Security Topics 96
University of Cyprus EPL 682: Advanced Security Topics 97
§ Shellcode, return address, stack § Structured exception handlers (SEH) § Redirect execution to existing shared-library functions, chaining together short instruction sequences ending with ret (gadgets, ROP) § Memory disclosure problem
University of Cyprus EPL 682: Advanced Security Topics 98
Canary NX bit ASLR
?
University of Cyprus EPL 682: Advanced Security Topics 99
University of Cyprus EPL 682: Advanced Security Topics 100
University of Cyprus EPL 682: Advanced Security Topics 101
University of Cyprus EPL 682: Advanced Security Topics 102
An attacker must fulfill at least two requirements in order to gain full control of a remote program’s execution:
reside inside the program executable
location at which the executable’s text segment is actually loaded in memory
University of Cyprus EPL 682: Advanced Security Topics 103
University of Cyprus EPL 682: Advanced Security Topics 104
University of Cyprus EPL 682: Advanced Security Topics 105
University of Cyprus EPL 682: Advanced Security Topics 106
University of Cyprus EPL 682: Advanced Security Topics 107
instruction pointer
conducting the attack, and the server must restart
noticing that the socket closes without receiving a response If the server is compiled with the PIE flag, the server must be a forking daemon and must restart without using execve. The same is true for
University of Cyprus EPL 682: Advanced Security Topics 108
University of Cyprus EPL 682: Advanced Security Topics 109
address to defeat ASLR
control its arguments
enough gadgets to build a shellcode, and launch the final exploit
University of Cyprus EPL 682: Advanced Security Topics 110
University of Cyprus EPL 682: Advanced Security Topics 111
University of Cyprus EPL 682: Advanced Security Topics 112
repeated for all possible 256 byte values until it is found (128 tries on average)
continues for the next byte until all 8 canary bytes (on 64-bit) are leaked
University of Cyprus EPL 682: Advanced Security Topics 113
University of Cyprus EPL 682: Advanced Security Topics 114
University of Cyprus EPL 682: Advanced Security Topics 115
University of Cyprus EPL 682: Advanced Security Topics 116
University of Cyprus EPL 682: Advanced Security Topics 117
F. Finding write
I. First principles attack J. Other low-level details
University of Cyprus EPL 682: Advanced Security Topics 118
University of Cyprus EPL 682: Advanced Security Topics 119
University of Cyprus EPL 682: Advanced Security Topics 120
University of Cyprus EPL 682: Advanced Security Topics 121
(socket)
(buffer)
(length)
(write syscall number)
University of Cyprus EPL 682: Advanced Security Topics 122
University of Cyprus EPL 682: Advanced Security Topics 123
University of Cyprus EPL 682: Advanced Security Topics 124
University of Cyprus EPL 682: Advanced Security Topics 125
University of Cyprus EPL 682: Advanced Security Topics 126
University of Cyprus EPL 682: Advanced Security Topics 127
A stop gadget is anything that would cause the program to block, like an infinite loop or a blocking system call (like sleep).
University of Cyprus EPL 682: Advanced Security Topics 128
University of Cyprus EPL 682: Advanced Security Topics 129
University of Cyprus EPL 682: Advanced Security Topics 130
Probe The address of the gadget being scanned. Stop The address of a stop gadget that will not crash Trap The address of non-executable memory that will cause a crash (e.g., 0x0).
University of Cyprus EPL 682: Advanced Security Topics 131
University of Cyprus EPL 682: Advanced Security Topics 132
Will find gadgets that do not pop the stack like ret or xor rax, rax; ret
Will find gadgets that pop exactly one stack word like pop rax; ret or pop rdi; ret
Will find gadgets that pop up to six words (e.g., the BROP gadget)
University of Cyprus EPL 682: Advanced Security Topics 133
University of Cyprus EPL 682: Advanced Security Topics 134
University of Cyprus EPL 682: Advanced Security Topics 135
University of Cyprus EPL 682: Advanced Security Topics 136
University of Cyprus EPL 682: Advanced Security Topics 137
University of Cyprus EPL 682: Advanced Security Topics 138
University of Cyprus EPL 682: Advanced Security Topics 139
University of Cyprus EPL 682: Advanced Security Topics 140
strcmp for example has the following behavior and signature, where “bad” is an invalid memory location (e.g., 0x0) and “readable” is a readable pointer (e.g., an address in .text):
The attacker finds strcmp by finding an entry that responds to the previously mentioned signature.
University of Cyprus EPL 682: Advanced Security Topics 141
University of Cyprus EPL 682: Advanced Security Topics 142
University of Cyprus EPL 682: Advanced Security Topics 143
University of Cyprus EPL 682: Advanced Security Topics 144
University of Cyprus EPL 682: Advanced Security Topics 145
University of Cyprus EPL 682: Advanced Security Topics 146
The attacker can use dup2 or close, followed by either dup
An effective technique is to find a writable memory region like the environment, environ, from the symbol table, and read “/bin/sh” from the attacker’s socket to that address.
If execve is not in the PLT, the attacker will need to transfer more of the binary to find a pop rax; ret and syscall gadget.
University of Cyprus EPL 682: Advanced Security Topics 147
University of Cyprus EPL 682: Advanced Security Topics 148
1. Find where the executable is loaded. Either 0x400000 for non-PIE executables (default) or stack read a saved return address. 2. Find a stop gadget. This is typically a blocking system call (like sleep
3. Find the BROP gadget. The attacker can now control the first two arguments to calls. 4. Find strcmp in the PLT. The attacker can now control the first three arguments to calls. 5. Find write in the PLT. The attacker can now dump the entire binary to find more gadgets. 6. Build a shellcode and exploit the server.
University of Cyprus EPL 682: Advanced Security Topics 149
University of Cyprus EPL 682: Advanced Security Topics 150
University of Cyprus EPL 682: Advanced Security Topics 151
instructions.
finding a syscall gadget.
behavior after tweaking system call arguments, in a similar way as to how strcmp was found in the optimized attack.
University of Cyprus EPL 682: Advanced Security Topics 152
University of Cyprus EPL 682: Advanced Security Topics 153
desired system call number, and one of them will likely be rax
and so ignores all other registers. It also stops program execution until a signal is raised and so it acts as a stop gadget, making it identifiable
to the pop chain to find a system call gadget
attacker can eliminate the pops one by one to find which one controls rax
University of Cyprus EPL 682: Advanced Security Topics 154
University of Cyprus EPL 682: Advanced Security Topics 155
University of Cyprus EPL 682: Advanced Security Topics 156
University of Cyprus EPL 682: Advanced Security Topics 157
University of Cyprus EPL 682: Advanced Security Topics 158
In this section they list a number of not so obvious low-level attack details, many of which added to the attack’s stability:
a) Stack reading with zeros b) Further strcmp verification c) Dealing with small buffers d) Dealing with few event-based workers
University of Cyprus EPL 682: Advanced Security Topics 159
University of Cyprus EPL 682: Advanced Security Topics 160
University of Cyprus EPL 682: Advanced Security Topics 161
University of Cyprus EPL 682: Advanced Security Topics 162
1. 1. An An op
source e SSL library with a known st stack vulner erability (ya yaSSL). ). This mimics the scenario where one is attacking a proprietary service that is believed to use a vulnerable open-source component. As a sample target we used an older version of MySQL that used yaSSL. 2. 2. An An ope pen-so source e so software e with a known st stack vulner erability (ng nginx nx), ), ma manually comp
from
source of the entire server but does not hold the binary. 3. 3. A A toy y cl closed-bi bina nary pr propr prieta tary service ce with th a sta tack ck vul ulne nerabi bility
was written by a colleague and both the binary and source were kept
proprietary service but it would have been difficult to do so legally
University of Cyprus EPL 682: Advanced Security Topics 163
University of Cyprus EPL 682: Advanced Security Topics 164
1.
Perform rmanc nce: e: number of requests and time. 2.
Stability ty: how robust the attack is. 3.
Attack ck paired with so source ce-co code kn knowledge: : whether having access to the source code (but not the binary) can make the attack better
University of Cyprus EPL 682: Advanced Security Topics 165
University of Cyprus EPL 682: Advanced Security Topics 166
University of Cyprus EPL 682: Advanced Security Topics 167
University of Cyprus EPL 682: Advanced Security Topics 168
granularity and controls the last byte being overflown.
each attempt.
up in a situation where all workers become “stuck” in an infinite loop.
University of Cyprus EPL 682: Advanced Security Topics 169
University of Cyprus EPL 682: Advanced Security Topics 170
A.
Rerand ndomizati tion The most basic protection against the BROP attack is to rerandomize canaries and ASLR as often as possible. It is important that any child processes forked are randomized independently so that any information learned from one child cannot be used against another one. They suggest servers write a new canary before entering a per-request function.
University of Cyprus EPL 682: Advanced Security Topics 171
B.
Sleep on n crash In some situations, servers should not respawn, but in practice users and developers find this an unacceptable solution. Modern Linux desktops use systemd to monitor services and automatically restart services on failures. Developers should be cautious about which remote services they really need or want to restart automatically to reduce the attack surface.
University of Cyprus EPL 682: Advanced Security Topics 172
C.
ROP protec tecti tions ns Control Flow Integrity (CFI), prevents return oriented programming in general by enforcing the control flow graph. There are many other similar techniques that can be applied.
University of Cyprus EPL 682: Advanced Security Topics 173
D.
Compiler r Techni hnique ues Many modern compilers support inserting runtime bounds checks on buffers.
University of Cyprus EPL 682: Advanced Security Topics 174
University of Cyprus EPL 682: Advanced Security Topics 175
University of Cyprus EPL 682: Advanced Security Topics 176
University of Cyprus EPL 682: Advanced Security Topics 177
modern 64-bit Linux servers
a) a) gen gener eraliz lized ed st stack re reading: which defeats full ASLR on 64-bit systems b) b) BR BROP P atta ttack: which is able to remotely find ROP gadgets.
20 minutes, tested against real versions of yaSSL+MySQL and nginx with known vulnerabilities, and a toy proprietary service running an unknown binary
University of Cyprus EPL 682: Advanced Security Topics 178
in the binary (including PIE)
randomized, can only slow but not prevent buffer overflow attacks
should rerandomize ASLR and canaries after any crash, and that no library or executable should be exempt from ASLR
University of Cyprus EPL 682: Advanced Security Topics 179
Feel free to ask any questions
University of Cyprus EPL 682: Advanced Security Topics 180