Breaking and Fixing Destructive Code Read Defenses

07/05/2020
by   Jannik Pewny, et al.
0

Just-in-time return-oriented programming (JIT-ROP) is a powerful memory corruption attack that bypasses various forms of code randomization. Execute-only memory (XOM) can potentially prevent these attacks, but requires source code. In contrast, destructive code reads (DCR) provide a trade-off between security and legacy compatibility. The common belief is that DCR provides strong protection if combined with a high-entropy code randomization. The contribution of this paper is twofold: first, we demonstrate that DCR can be bypassed regardless of the underlying code randomization scheme. To this end, we show novel, generic attacks that infer the code layout for highly randomized program code. Second, we present the design and implementation of BGDX (Byte-Granular DCR and XOM), a novel mitigation technique that protects legacy binaries against code inference attacks. BGDX enforces memory permissions on a byte-granular level allowing us to combine DCR and XOM for legacy, off-the-shelf binaries. Our evaluation shows that BGDX is not only effective, but highly efficient, imposing only a geometric mean performance overhead of 3.95

READ FULL TEXT

page 1

page 2

page 3

page 4

research
09/20/2019

Making Code Re-randomization Practical with MARDU

Defense techniques such as Data Execution Prevention (DEP) and Address S...
research
03/11/2019

IskiOS: Lightweight Defense Against Kernel-Level Code-Reuse Attacks

Commodity operating systems such as Windows, Linux, and MacOS X form the...
research
10/07/2019

Measuring Attack Surface Reduction in the Presence of Code (Re-)Randomization

Just-in-time return-oriented programming (JIT-ROP) technique allows one ...
research
01/20/2022

Adelie: Continuous Address Space Layout Re-randomization for Linux Drivers

While address space layout randomization (ASLR) has been extensively stu...
research
07/03/2018

RUMA: On the Analysis of Defenses based on Misaligned Accesses

The adoption of randomness against heap layout has rendered a good porti...
research
08/24/2021

Randomized C/C++ dynamic memory allocator

Dynamic memory management requires special attention in programming. It ...
research
09/12/2019

Taking a Look into Execute-Only Memory

The development process of microcontroller firmware often involves multi...

Please sign up or login with your details

Forgot password? Click here to reset