Return to the Zombie Gadgets: Undermining Destructive Code Reads via Code Inference Attacks

Kevin Z. Snow, Roman Rogowski, Jan Werner, Hyungjoon Koo, Fabian Monrose, Michalis Polychronakis

Research output: Chapter in Book/Report/Conference proceedingConference contributionpeer-review

33 Scopus citations

Abstract

The concept of destructive code reads is a new defensive strategy that prevents code reuse attacks by coupling fine-grained address space layout randomization with a mitigation for online knowledge gathering that destroys potentially useful gadgets as they are disclosed by an adversary. The intuition is that by destroying code as it is read, an adversary is left with no usable gadgets to reuse in a control-flow hijacking attack. In this paper, we examine the security of this new mitigation. We show that while the concept initially appeared promising, there are several unforeseen attack tactics that render destructive code reads ineffective in practice. Specifically, we introduce techniques for leveraging constructive reloads, wherein multiple copies of native code are loaded into a process' address space (either side-by-side or one-after-another). Constructive reloads allow the adversary to disclose one code copy, destroying it in the process, then use another code copy for their code reuse payload. For situations where constructive reloads are not viable, we show that an alternative, and equally powerful, strategy exists: leveraging code association via implicit reads, which allows an adversary to undo in-place code randomization by inferring the layout of code that follows already disclosed bytes. As a result, the implicitly learned code is not destroyed, and can be used in the adversary's code reuse attack. We demonstrate the effectiveness of our techniques with concrete instantiations of these attacks against popular applications. In light of our successes, we argue that the code inference strategies presented herein paint a cautionary tale for defensive approaches whose security blindly rests on the perceived inability to undo the application of in-place randomization.

Original languageEnglish
Title of host publicationProceedings - 2016 IEEE Symposium on Security and Privacy, SP 2016
PublisherInstitute of Electrical and Electronics Engineers Inc.
Pages954-968
Number of pages15
ISBN (Electronic)9781509008247
DOIs
StatePublished - 16 Aug 2016
Externally publishedYes
Event2016 IEEE Symposium on Security and Privacy, SP 2016 - San Jose, United States
Duration: 23 May 201625 May 2016

Publication series

NameProceedings - 2016 IEEE Symposium on Security and Privacy, SP 2016

Conference

Conference2016 IEEE Symposium on Security and Privacy, SP 2016
Country/TerritoryUnited States
CitySan Jose
Period23/05/1625/05/16

Keywords

  • application security
  • code reuse
  • fine-grained randomization
  • memory disclosure
  • return-oriented programming

Fingerprint

Dive into the research topics of 'Return to the Zombie Gadgets: Undermining Destructive Code Reads via Code Inference Attacks'. Together they form a unique fingerprint.

Cite this