1 of 20

Nothing is Unreachable: Automated Synthesis of Robust Code-Reuse Gadget Chains for Arbitrary Exploitation Primitives

2025. 9. 18.

USENIX `25

Nicolas Bailluet, Emmanuel Fleury, Isabelle Puaut and Erven Rohou

Univ Rennes, Inria, CNRS, IRISA

Univ Bordeaux, CNRS, LaBRI

2 of 20

Timeline of Eternal Memory War

2

  • The memory war continues as patches drive attack evolution
  • As mitigations are introduced, memory exploitation trends are also evolved

3 of 20

Timeline of Eternal Memory War

3

  • The memory war continues as patches drive attack evolution
  • As mitigations are introduced, memory exploitation trends are also evolved

Code Injection Attack

Code Reuse Attack

Data-Only Attack

i.e. Shellcode injection

i.e. ret2libc, ROP

i.e. DOP, privilege escalation

NX

CFI

4 of 20

Timeline of Eternal Memory War

4

  • The memory war continues as patches drive attack evolution
  • As mitigations are introduced, memory exploitation trends are also evolved

Code Injection Attack

Code Reuse Attack

Data-Only Attack

i.e. Shellcode injection

i.e. ret2libc, ROP

i.e. DOP, privilege escalation

NX

CFI

Still some exploits shows that it’s valid

5 of 20

Motivation - Limitation of ROP

5

  • ROP is still powerful attack, but the ability to chaining payload highly relies on attacker’s capabilities
  • Which values, memory regions are attacker-controllable?
  • What gadgets attacker can use?
  • To overcome these problems, they suggest automated tools

- Without attacker’s capabilities

- Various memory layout

  • Existing works tries to automatically generate ROP chain

But,

  • It is only for stack layout
  • It could rely on attacker-uncontrollable values 🡪 which led fail to generating

6 of 20

Background - ROP

6

  • ROP (Return Oriented Programming)
  • Code reuse attack that chains together existing code fragment
  • Reuses code snippets (gadgets) already present in memory
  • Make fake call-stack to hijack control-flow
  • Usually used with memory corruption (e.g. stack buffer overflow)

7 of 20

Background – SMT Solver & Taint Propagation

7

  • SMT(Satisfiability Modulo Theory) solvers determine the satisfiability of logical constraints �over background theories.

- They find whether variable values exist that satisfy given conditions.

- Traditional solvers are SAT (boolean Satisfiability Theory) 🡪 It only regards Boolean

- SMT can handle more various logical constraints

  • Tatin propagation is analysis technique that internal program’s data-flow

🡪 Expect to how tainted data are propagated in the program

  • Taint?

- Taint means that data from untrusted sources (e.g. user-input)

8 of 20

Threat Model

8

  • Attacker can rewrite the code-pointer (e.g. memory corruption vuln)
  • Attacker can bypass ASLR before running the attack
  • NX/DEP is activated
  • CFI mitigations are not enforced
  • They do not aim for automated end-to-end exploit, �so they don’t focus on other exploit techniques

9 of 20

Novelty of ARCANIST

9

The attacker sets goal, then ARCANIST tells it is possible or not (if possible, it shows how to reach the goal)

To do this, they combine two concept; robust reachability & Component-based program synthesis

  • Robust reachability
  • Contrary to standard reachability, it tells whether a point in the program can be reached, � whatever the value of uncontrolled variables (only considered by controlled variables)
  • It’s inspired by taint propagation
  • Component-based program synthesis
  • Finding a sequence of components (gadgets) that always fits specification

🡺 They build one-shot SMT queries with this two concept

10 of 20

Comparison between SOTA and ARCANIST

10

  • Unsound synthesizer�: It’s unsound, because it rely on uncontrollable values
  • Limited exploitation layout�: They only regard the stack

SOTA

11 of 20

Comparison between ARCANIST and SOTA (Cont’d)

11

One-shot SMT query

Robust reachability

  • Robust synthesizer

: it takes into parameter the exact exploitation layout, so it knows exactly which regions it can use

ARCANIST

12 of 20

Workflow of ARCANIST

12

  • Goal : initial state 🡪 attacker’s goal
  • Exploitation Layout : Attacker’s (un)controllable values, register, memory regions, etc.

13 of 20

Workflow of ARCANIST (Cont’d)

13

  • Gadget Extractor + Translator : Extract ROP gadgets from binary, then encode in SMT format
  • Formula Builder : Generate SMT query with attacker’s context & binary information

14 of 20

Robust Gadget Chaining Problem

14

How to robustly chaining the gadgets whatever uncontrollable (or unpredictable) values

They define changing problem as formula

Initial state 🡪 gadgets * n 🡪 final state (with no fail)

S : Specification (goal)

A : Assumption (initial state)

GS: How to achieve goal with no fail

p : controllable

u : uncontrollable

15 of 20

Robust Gadget Chaining Problem (Cont’d)

15

Definition

🡪 Could you reach the final state regardless of the u, after executing n gadgets?

GS: How to achieve goal with no fail

p : controllable

u : uncontrollable

SMT solver will judge the result with this formula

16 of 20

Evaluation

16

  • Hardware Setup

- Intel® Xeon®Gold 5218 CPU 64 Cores @ 2.30 GHz, with 93 GB of RAM

  • Competitors

- Existing models : Ropium, Angrop, SGC

17 of 20

Evaluation

17

fcall# : synthesize the function with # parameters

18 of 20

Thought about this paper

18

  • Novel way to solve the complicated problems
    • There are some real-world study to show its performance
    • Good paper structure
  • Strong assumption of threat model
  • If CFI become more standard, it’ll become useless
  • It relies on taint propagation, but it could be generate some errors

19 of 20

APPENDIX

19

20 of 20

Thank you

20