Back to results

Syracuse University

Binary Program Integrity Models for Defeating Code-Reuse Attacks

Abstract

dc:description.abstract

<p>During a cyber-attack, an adversary executes offensive maneuvers to target computer systems. Particularly, an attacker often exploits a vulnerability within a program, hijacks control-flow, and executes malicious code. Data Execution Prevention (DEP), a hardware-enforced security feature, prevents an attacker from directly executing the injected malicious code. Therefore, attackers have resorted to code-reuse attacks, wherein carefully chosen fragments of code within existing code sections of a program are sequentially executed to accomplish malicious logic. Code-reuse attacks are ubiquitous and account for majority of the attacks in the wild. On one hand, due to the wide use of closed-source software, binary-level solutions are essential. On the other hand, without access to source-code and debug-information, defending raw binaries is hard.</p> <p> A majority of defenses against code-reuse attacks enforce "control-flow integrity", a program property that requires the runtime execution of a program to adhere to a statically determined control-flow graph (CFG) -- a graph that captures the intended flow of control within the program. While defenses against code-reuse attacks have focused on reducing the attack space, due to the lack of high-level semantics in the binary, they lack in precision, which in turn results in smaller yet significant attack space. </p> <p> This dissertation presents program integrity models aimed at narrowing the attack space available to execute code-reuse attacks. First, we take a semantic-recovery approach to restrict the targets of indirect branches in a binary. Then, we further improve the precision by recovering C++-level semantics, and enforce a strict integrity model that improves precision for virtual function calls in the binary. </p> <p> Finally, in order to further reduce the attack space, we take a different perspective on defense against code-reuse attacks, and introduce Stack-Pointer Integrity -- a novel integrity model targeted at ensuring the integrity of stack pointer as opposed to the instruction pointer. </p> <p> Our results show that the semantic-recovery-based approaches can help in significantly reducing the attack space by improving the precision of the underlying CFG. Function-level semantic recovery can eliminate 99.47% of inaccurate targets, whereas recovering virtual callsites and VTables at a C++ level can eliminate 99.99% of inaccurate targets.</p>

Degree

thesis:*
Name thesis:degree_name
Doctor of Philosophy (PhD)
Level thesis:degree_level
Dissertation
Discipline thesis:degree_discipline
Electrical Engineering and Computer Science
Year
2015

Author and committee

dc:creator, dc:contributor.*
Author dc:creator
  • Prakash, Aravind
Contributors dc:contributor
  • Heng Yin

Subjects

dc:subject × 5

Identifiers

dc:identifier.*
Repository record dc:identifier
https://surface.syr.edu/etd/230
OAI identifier oai:identifier
oai:surface.syr.edu:etd-1230

Chain of custody

source
Harvested from
Syracuse University
Base URL
surface.syr.edu/do/oai/
Last updated
2026-07-24
Source record
OAI-PMH GetRecord
citation

Prakash, Aravind. Binary Program Integrity Models for Defeating Code-Reuse Attacks. Dissertation thesis, 2015. https://surface.syr.edu/etd/230