Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

Data-Oriented Programming: On the Expressiveness of Non-Control Data Attacks

论文下载

Introduction

程序的内存可以分为两个部分:control plane、data plane

  • control plane:可以直接影响控制流的变量(returns, indirect calls)
  • data plane:不直接影响控制流的变量

控制路防御通常是保护control plane的完整性,因此本文利用data plane来构攻击,并保证所有的control-plane data不变。

贡献

  • 提出 DOP
  • 使用9个实际应用进行试验,可以找到1273个能被相关CVE使用的data-oriented gadgets
  • DOP是图灵完全的

Problem

Fig

Fig

Data-Oriented Programming

DOP Overview

Data-oriented programming is a technique that allows the attacker to simulate expressive computations on the program memory, without exhibiting any illegitimate control flow with respect to the program CFG.

MINDOP 语言,可以由x86 gadgets 集成六种基本操作

Fig

Data-Oriented Gadgets

Fig

Fig

Gadget Dispatcher

Gadget dispatchers are sequences of x86 instructions that equip attackers with the ability to repeat gadget invocations and, for each invocation, to selectively activate specific gadgets.

Fig

MINDOP is Turing-Complete

DOP ATTACK CONSTRUCTION

主要任务

  • Data-oriented gadget identification
  • Gadget dispatcher identification
  • Data-oriented gadget stitching

Data-oriented gadget identification

  • 将程序源代码编译成LLVM中间表达式(IR)进行分析。
  • 首先遍历程序中所有的函数,找到store命令,视为一个潜在的gadget,然后进行backward分析,如果有load操作,则标记为Data-oriented gadget。

将这些gadgets进行分类:

  • global gadget
  • function-parameter gadget
  • local gadget

设置选择优先顺序: * global > function-parameter > local * 长度短的 > 长的

Dispatcher Identification

首先识别所有的可能的loops。如果loop包含memory error,这个loop标记为reachable。

Fig

Attack Construction

  • Gadget preparation (Semi-automated)
  • Exploit chain construction (Manual)
  • Stitchability verification (Manual)

EVALUATION

Fig

Fig

Turing-Complete Examples

  • Interactive: 可以与程序交互,观察程序行为后再伪造接下来的攻击payload
  • Non-interactive: 一次性payload

Interactive – ProFTPD

  • CVE-2006-5815 栈溢出

Fig

Fig

Fig

Fig

Non-interactive – Wireshark

Fig

Why are Expressive Payloads Useful?

Bypassing Randomization Defenses

Fig

Simulating A Network Bot

Fig

Altering Memory Permissions