Download Building Secure Defenses Against Code-Reuse Attacks by Lucas Davi, Ahmad-Reza Sadeghi PDF

By Lucas Davi, Ahmad-Reza Sadeghi

This ebook presents an in-depth examine return-oriented programming assaults. It explores a number of traditional return-oriented programming assaults and analyzes the effectiveness of security options together with tackle area format randomization (ASLR) and the control-flow regulations applied in safeguard watchdogs corresponding to Microsoft EMET.

Chapters additionally clarify the primary of control-flow integrity (CFI), spotlight the advantages of CFI and speak about its present weaknesses. numerous superior and complicated return-oriented programming assault thoughts akin to just-in-time return-oriented programming are presented.

Building safe Defenses opposed to Code-Reuse Attacks is a superb reference software for researchers, programmers and execs operating within the defense box. It presents advanced-level scholars learning computing device technology with a accomplished evaluation and transparent realizing of significant runtime attacks.

Show description

Read Online or Download Building Secure Defenses Against Code-Reuse Attacks PDF

Similar object-oriented software design books

Groovy and Grails Recipes

Groovy and Grails Recipes is the busy builders’ advisor for constructing functions in Groovy and Grails. instead of dull you with theoretical wisdom of “yet one other language/framework,” this booklet delves instantly into fixing real–life difficulties in Groovy and Grails utilizing easy–to–understand, well–explained code snippets.

A Primer on Scientific Programming with Python

The e-book serves as a primary advent to computing device programming of clinical purposes, utilizing the high-level Python language. The exposition is instance and problem-oriented, the place the purposes are taken from arithmetic, numerical calculus, facts, physics, biology and finance. The publication teaches "Matlab-style" and procedural programming in addition to object-oriented programming.

Clojure Programming: Practical Lisp for the Java World

Clojure is a realistic, general-purpose language that gives expressivity rivaling different dynamic languages like Ruby and Python, whereas seamlessly benefiting from Java libraries, providers, and all the assets of the JVM atmosphere. This booklet is helping you research the basics of Clojure with examples referring to it to the languages you recognize already, within the domain names and issues you're employed with on a daily basis.

Beginning SOLID Principles and Design Patterns for ASP.NET Developers

This publication teaches you the entire crucial wisdom required to benefit and follow time-proven good ideas of object-oriented layout and critical layout styles in ASP. internet five functions. you are going to learn how to write server-side in addition to client-side code that uses confirmed practices and styles.

Additional resources for Building Secure Defenses Against Code-Reuse Attacks

Sample text

2 Practical CFI Implementations 33 In order to prevent an attacker from tampering with the shadow stack, Abadi et al. [2] leverage memory segmentation which is available on x86-based systems. Alternatively, one could only allow call and return instructions to access the shadow stack using software fault isolation techniques [57]. Although the shadow stack approach allows fine-grained CFI for return instructions, it introduces several practical problems. Foremost, the performance overhead is significant due to the fact that one needs to instrument direct call instructions which occur frequently during program execution.

1 Basics of Control-Flow Integrity Enforcement int value = rand() % 3 + 1; switch(value) { case 1: printf("Case 1"); break; case 2: printf("Case 2"); break; case 3: printf("Case 3"); break; } Source Code 29 eax ← value SHL eax, 2 ADD eax, table_base MOV eax, [eax] JMP eax case_1: asm_ins, … case_2: asm_ins, … case_3: asm_ins, … table_base: Addr(case_1) Addr(case_2) Addr(case_3) Code Memory Data Memory Fig. 2 Indirect jumps in switch-case statements one of the case branches. The main idea is to load the correct target address from a dedicated jump table based on the content of value.

4 CFI for COTS Binaries Most closely related to the original CFI work by Abadi et al. [4] is the proposal of Zhang and Sekar [64] which suggests an approach for commercial-off-theshelf (COTS) binaries based on a static binary rewriting approach, but without requiring debug symbols or relocation information of the target application. The CFI checks are directly incorporated into the application binary. To do so, the binary is disassembled using the Linux disassembler objdump. However, since that disassembler uses a simple linear sweep disassembly algorithm, Zhang and Sekar [64] suggest several error correction methods to ensure correct disassembly.

Download PDF sample

Rated 4.11 of 5 – based on 4 votes