Return-oriented programming without returns

  • Authors:
  • Stephen Checkoway;Lucas Davi;Alexandra Dmitrienko;Ahmad-Reza Sadeghi;Hovav Shacham;Marcel Winandy

  • Affiliations:
  • University of California, San Diego, La Jolla, CA, USA;Ruhr-Universit ät Bochum, Bochum, Germany;Ruhr-Universit ät Bochum, Bochum, Germany;Ruhr-Universit ät Bochum, Bochum, Germany;University of California, San Diego, La Jolla, CA, USA;Ruhr-Universit ät Bochum, Bochum, Germany

  • Venue:
  • Proceedings of the 17th ACM conference on Computer and communications security
  • Year:
  • 2010

Quantified Score

Hi-index 0.00

Visualization

Abstract

We show that on both the x86 and ARM architectures it is possible to mount return-oriented programming attacks without using return instructions. Our attacks instead make use of certain instruction sequences that behave like a return, which occur with sufficient frequency in large libraries on (x86) Linux and (ARM) Android to allow creation of Turing-complete gadget sets. Because they do not make use of return instructions, our new attacks have negative implications for several recently proposed classes of defense against return-oriented programming: those that detect the too-frequent use of returns in the instruction stream; those that detect violations of the last-in, first-out invariant normally maintained for the return-address stack; and those that modify compilers to produce code that avoids the return instruction.