SlideShare a Scribd company logo
1 of 57
Download to read offline
PhD Thesis Defense
Presented by Marcel Boehme
Directedā€Ø
Greybox Fuzzing
Marcel Bƶhme Thuan Pham Abhik RoychoudhuryM.-D. Nguyen
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Motivation
ā€¢ Automated vulnerability detection techniques

1. Blackbox Fuzzing (no program analysis, no feedback)

2. Whitebox Fuzzing (mostly program analysis)

3. Greybox Fuzzing (no program analysis, but coverage feedback)
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Motivation
ā€¢ Automated vulnerability detection techniques

1. Blackbox Fuzzing (no program analysis, no feedback)
šŸ“„ Model-Based
Blackbox
Fuzzing
Peach, Spike ā€¦
Seed Input
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Motivation
ā€¢ Automated vulnerability detection techniques

1. Blackbox Fuzzing (no program analysis, no feedback)
šŸ“„ Model-Based
Blackbox
Fuzzing
Peach, Spike ā€¦
Seed Input
šŸ“„
šŸ“„
šŸ“„
Valid input
Semi-valid input
Semi-valid input
Mutated Inputs
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Motivation
ā€¢ Automated vulnerability detection techniques

1. Blackbox Fuzzing (no program analysis, no feedback)
šŸ“„ Model-Based
Blackbox
Fuzzing
Input model
Peach, Spike ā€¦
Seed Input
šŸ“„
šŸ“„
šŸ“„
Valid input
Semi-valid input
Semi-valid input
Mutated Inputs
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Motivation
ā€¢ Automated vulnerability detection techniques

1. Blackbox Fuzzing (no program analysis, no feedback)

2. Whitebox Fuzzing (mostly program analysis)
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Motivation
ā€¢ Automated vulnerability detection techniques

1. Blackbox Fuzzing (no program analysis, no feedback)

2. Whitebox Fuzzing (mostly program analysis)

3. Greybox Fuzzing (no program analysis, but coverage feedback)
šŸ“„ šŸ“„šŸ“„ šŸ“„Greybox
Fuzzing
ā€¦
Seed Input
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Motivation
ā€¢ Automated vulnerability detection techniques

1. Blackbox Fuzzing (no program analysis, no feedback)

2. Whitebox Fuzzing (mostly program analysis)

3. Greybox Fuzzing (no program analysis, but coverage feedback)
šŸ“„ šŸ“„šŸ“„ šŸ“„Greybox
Fuzzing
ā€¦
šŸ“„šŸ“„ Enqueue
Seed Input Mutated Inputs
Queue of ā€Ø
ā€œinterestingā€ seeds
Retain inputsā€Ø
that increaseā€Ø
coverage!
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Motivation
ā€¢ Automated vulnerability detection techniques

1. Blackbox Fuzzing (no program analysis, no feedback)

2. Whitebox Fuzzing (mostly program analysis)

3. Greybox Fuzzing (no program analysis, but coverage feedback)
šŸ“„ šŸ“„šŸ“„ šŸ“„Greybox
Fuzzing
ā€¦
šŸ“„šŸ“„ EnqueueDequeue
Seed Input Mutated Inputs
Queue of ā€Ø
ā€œinterestingā€ seeds
Retain inputsā€Ø
that increaseā€Ø
coverage!
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Motivation
ā€¢ Greybox Fuzzing is frequently used
ā€¢ State-of-the-art in automated vulnerability detection

ā€¢ Extremely eļ¬ƒcient coverage-based input generation

ā€¢ All program analysis before/at instrumentation time.

ā€¢ Start with a seed corpus, choose a seed ļ¬le, fuzz it.

ā€¢ Add to corpus only if new input increases coverage.
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Motivation
ā€¢ Greybox Fuzzing is frequently used
ā€¢ State-of-the-art in automated vulnerability detection

ā€¢ Extremely eļ¬ƒcient coverage-based input generation

ā€¢ All program analysis before/at instrumentation time.

ā€¢ Start with a seed corpus, choose a seed ļ¬le, fuzz it.

ā€¢ Add to corpus only if new input increases coverage.

ā€¢ Cannot be directed!
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Motivation
ā€¢ Directed Fuzzing has many applications
ā€¢ Patch Testing: reach changed statements
ā€¢ Crash Reproduction: exercise stack trace

ā€¢ SA Report Veriļ¬cation: reach ā€œdangerousā€ location

ā€¢ Information Flow Detection: exercise source-sink pairs
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Motivation
ā€¢ Directed Fuzzing: classical constraint satisfaction prob.

ā€¢ Program analysis to identify program paths ā€Ø
that reach given program locations.

ā€¢ Symbolic Execution to derive path conditions ā€Ø
for any of the identiļ¬ed paths.

ā€¢ Constraint Solving to ļ¬nd an input that

ā€¢ satisļ¬es the path condition and thus

ā€¢ reaches a program location that was given.
Ļ†1 = (x>y)āˆ§(x+y>10)ā€Ø
Ļ†2 = Ā¬(x>y)āˆ§(x+y>10)
x > y
a = x a = y
x+y>10
b = a
return b
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Motivation
ā€¢ Directed Fuzzing: classical constraint satisfaction prob.

ā€¢ Program analysis to identify program paths ā€Ø
that reach given program locations.

ā€¢ Symbolic Execution to derive path conditions ā€Ø
for any of the identiļ¬ed paths.

ā€¢ Constraint Solving to ļ¬nd an input that

ā€¢ satisļ¬es the path condition and thus

ā€¢ reaches a program location that was given.
Ļ†1 = (x>y)āˆ§(x+y>10)ā€Ø
Ļ†2 = Ā¬(x>y)āˆ§(x+y>10)
x > y
a = x a = y
x+y>10
b = a
return b
Requiresā€Ø
heavy-weightā€Ø
machinery!
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Overview
ā€¢ Directed Fuzzing as optimisation problem!

1. Instrumentation Time:

1. Extract call graph (CG) and control-ļ¬‚ow graphs (CFGs).

2. For each BB, compute distance to target locations.

3. Instrument program to aggregate distance values.
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Overview
ā€¢ Directed Fuzzing as optimisation problem!

1. Instrumentation Time:

1. Extract call graph (CG) and control-ļ¬‚ow graphs (CFGs).

2. For each BB, compute distance to target locations.

3. Instrument program to aggregate distance values.

2. Runtime, for each input

1. collect coverage and distance information, and

2. decide how long to be fuzzed based on distance.

ā€¢ If input is closer to the targets, it is fuzzed for longer.

ā€¢ If input is further away from the targets, it is fuzzed for shorter.
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Instrumentation
ā€¢ Function-level target distance using call graph (CG)
main
a b
cd e
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Instrumentation
ā€¢ Function-level target distance using call graph (CG)

1. Identify target functions in CG
main
a b
cd e
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
main
a b
cd e
Instrumentation
ā€¢ Function-level target distance using call graph (CG)

1. Identify target functions in CG

2. For each function, compute theā€Ø
harmonic mean of the length ā€Ø
of the shortest path to targets
1
2
0
2
3N/A
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Instrumentation
ā€¢ Function-level target distance using call graph (CG)

ā€¢ BB-level target distance using CFG
CFG for function b
main
a b
cd e
1
2
0
2
3N/A
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Instrumentation
ā€¢ Function-level target distance using call graph (CG)

ā€¢ BB-level target distance using control-ļ¬‚ow graph (CFG)

1. Identify target BBs andā€Ø
assign distance 0ā€Ø
(none in function b)
CFG for function b
main
a b
cd e
1
2
0
2
3N/A
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Instrumentation
ā€¢ Function-level target distance using call graph (CG)

ā€¢ BB-level target distance using control-ļ¬‚ow graph (CFG)

1. Identify target BBs andā€Ø
assign distance 0

2. Identify BBs thatā€Ø
call functions
CFG for function b
main
a b
cd e
1
2
0
2
3N/A
c
a
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Instrumentation
ā€¢ Function-level target distance using call graph (CG)

ā€¢ BB-level target distance using control-ļ¬‚ow graph (CFG)

1. Identify target BBs andā€Ø
assign distance 0

2. Identify BBs thatā€Ø
call functions andā€Ø
assign 10*FLTD
CFG for function b
main
a b
cd e
1
2
0
2
3N/A
c
a 10
30
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Instrumentation
ā€¢ Function-level target distance using call graph (CG)

ā€¢ BB-level target distance using control-ļ¬‚ow graph (CFG)

1. Identify target BBs andā€Ø
assign distance 0

2. Identify BBs thatā€Ø
call functions andā€Ø
assign 10*FLTD

3. For each BB, compute harmonicā€Ø
mean of (length of shortest path toā€Ø
any function-calling BB + 10*FLTD).
CFG for function b
c
a 10
30
[(1+30)-1+(2+10)-1]-1
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Instrumentation
ā€¢ Function-level target distance using call graph (CG)

ā€¢ BB-level target distance using control-ļ¬‚ow graph (CFG)

1. Identify target BBs andā€Ø
assign distance 0

2. Identify BBs thatā€Ø
call functions andā€Ø
assign 10*FLTD

3. For each BB, compute harmonicā€Ø
mean of (length of shortest path toā€Ø
any function-calling BB + 10*FLTD).
CFG for function b
8.7
11
10
30
13
12
N/A
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Runtime
ā€¢ Function-level target distance using call graph (CG)

ā€¢ BB-level target distance using control-ļ¬‚ow graph (CFG)

ā€¢ Seed distance from instrumented binary
CFG for function b
8.7
11
10
30
13
12
N/A
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Runtime
ā€¢ Function-level target distance using call graph (CG)

ā€¢ BB-level target distance using control-ļ¬‚ow graph (CFG)

ā€¢ Seed distance from instrumented binary

ā€¢ Two 64-bit shared memory entries

ā€¢ Aggregated BB-level distance values

ā€¢ Number of executed BBs
Seed Distance: 19.4 ā€Ø
= (8.7+30)/2
8.7
11
10
30
13
12
N/A
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Runtime
ā€¢ Function-level target distance using call graph (CG)

ā€¢ BB-level target distance using control-ļ¬‚ow graph (CFG)

ā€¢ Seed distance from instrumented binary

ā€¢ Two 64-bit shared memory entries

ā€¢ Aggregated BB-level distance values

ā€¢ Number of executed BBs
8.7
11
10
30
13
12
N/A
Seed Distance: 10.4 ā€Ø
= (8.7+11+10+12)/4
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Runtime
ā€¢ Function-level target distance using call graph (CG)

ā€¢ BB-level target distance using control-ļ¬‚ow graph (CFG)

ā€¢ Seed distance from instrumented binary

ā€¢ Two 64-bit shared memory entries

ā€¢ Aggregated BB-level distance values

ā€¢ Number of executed BBs
8.7
11
10
30
13
12
N/A
Seed Distance: 10.4 ā€Ø
= (8.7+11+10+12)/4
Now that we know how toā€Ø
compute seed distance,
ā€” letā€™s minimise it! ā€”
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
ā€¢ Background: Coverage-based Greybox Fuzzing
Directed Fuzzing as ā€Ø
Optimisation Problem
Seed File
šŸ“„
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
ā€¢
Mutation Operators:
ā€¢ Bitļ¬‚ips
ā€¢ BoundaryValues ā€Ø
(0,1,-1,INT_MAX,INT_MIN)
ā€¢ Simple arithmeticsā€Ø
(add/subtract 1)
ā€¢ Block deletion
ā€¢ Block insertion
ā€¢ Background: Coverage-based Greybox Fuzzing
Directed Fuzzing as ā€Ø
Optimisation Problem
Seed File
šŸ“„
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
ā€¢ Background: Coverage-based Greybox Fuzzing
Directed Fuzzing as ā€Ø
Optimisation Problem
šŸ“„ šŸ“„šŸ“„ šŸ“„Greybox
Fuzzing
ā€¦
Seed Input
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
ā€¢ Background: Coverage-based Greybox Fuzzing
Directed Fuzzing as ā€Ø
Optimisation Problem
šŸ“„ šŸ“„šŸ“„ šŸ“„Greybox
Fuzzing
ā€¦
šŸ“„šŸ“„ Enqueue
Seed Input Mutated Inputs
Queue of ā€Ø
ā€œinterestingā€ seeds
Retain inputsā€Ø
that increaseā€Ø
coverage!
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
ā€¢ Background: Coverage-based Greybox Fuzzing
Directed Fuzzing as ā€Ø
Optimisation Problem
šŸ“„ šŸ“„šŸ“„ šŸ“„Greybox
Fuzzing
ā€¦
šŸ“„šŸ“„ EnqueueDequeue
Seed Input Mutated Inputs
Queue of ā€Ø
ā€œinterestingā€ seeds
Retain inputsā€Ø
that increaseā€Ø
coverage!
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
ā€¢ Background: Coverage-based Greybox Fuzzing
Directed Fuzzing as ā€Ø
Optimisation Problem
šŸ“„šŸ“„
Queue of ā€Ø
ā€œinterestingā€ seeds
šŸ“„šŸ“„ šŸ“„
energy
low energyā€Ø
- generated lessā€Ø
test inputs!
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
ā€¢ Background: Coverage-based Greybox Fuzzing
Directed Fuzzing as ā€Ø
Optimisation Problem
šŸ“„šŸ“„
Queue of ā€Ø
ā€œinterestingā€ seeds
šŸ“„šŸ“„ šŸ“„
high energyā€Ø
- generated moreā€Ø
test inputs!šŸ“„
energy
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Directed Fuzzing as ā€Ø
Optimisation Problem
ā€¢ Background: Coverage-based Greybox Fuzzing

ā€¢ Seedā€™s energy:

ā€¢ Number of inputs generated when chosen for fuzzing

ā€¢ Local property: each seed has its own energy

ā€¢ Power schedule: 

ā€¢ Assigns energy to seeds according to a pre-deļ¬ned formula

ā˜… Boosted Greybox Fuzzing (AFLFast CCSā€™16)

ā€¢ Assign more energy to seeds exercising low-frequency paths.
ā˜… Directed Greybox Fuzzing (AFLGo CCSā€™17)
ā€¢ Assign more energy to seeds that a closer to the given targets!
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Directed Fuzzing as ā€Ø
Optimisation Problem
ā€¢ Background: Coverage-based Greybox Fuzzing

ā€¢ Seedā€™s energy:

ā€¢ Number of inputs generated when chosen for fuzzing

ā€¢ Local property: each seed has its own energy

ā€¢ Power schedule: 

ā€¢ Assigns energy to seeds according to a pre-deļ¬ned formula

ā˜… Boosted Greybox Fuzzing (AFLFast CCSā€™16)

ā€¢ Assign more energy to seeds exercising low-frequency paths.
ā˜… Directed Greybox Fuzzing (AFLGo CCSā€™17)
ā€¢ Assign more energy to seeds that a closer to the given targets!
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
ā€¢ Directed Greybox Fuzzing

ā€¢ Assign more energy to seeds that a closer to the given targets!

ā€¢ Problem (Stochastic Gradient Descent)
ā€¢ If we always assign more energy to closer seeds, ā€Ø
we typically reach only a local minimum,ā€Ø
but never a global minimum distance!

ā€¢ Solution (Simulated Annealing)

ā€¢ Sometimes assign more energy to further-away seeds!

ā€¢ Approaches global minimum distance.
Directed Fuzzing as ā€Ø
Optimisation Problem
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
ā€¢ Directed Greybox Fuzzing

ā€¢ Assign more energy to seeds that a closer to the given targets!

ā€¢ Problem (Stochastic Gradient Descent)
ā€¢ If we always assign more energy to closer seeds, ā€Ø
we typically reach only a local minimum,ā€Ø
but never a global minimum distance!

ā€¢ Solution (Simulated Annealing)

ā€¢ Sometimes assign more energy to further-away seeds!

ā€¢ Approaches global minimum distance.
Directed Fuzzing as ā€Ø
Optimisation Problem
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Directed Fuzzing as ā€Ø
Optimisation Problem
ā€¢ Simulated Annealing (SA)

ā€¢ Exploration phase:

ā€¢ Energy of closer seeds similar to energyā€Ø
of further-away seeds

ā€¢ Exploitation phase:

ā€¢ Energy of closer seeds is assigned ā€Ø
to be higher and higher

ā€¢ Energy of further-away seeds is ā€Ø
assigned to be lower and lower

ā€¢ We are increasing the ā€œimportanceā€ ā€Ø
of seed distance over time.
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Directed Fuzzing as ā€Ø
Optimisation Problem
ā€¢ Simulated Annealing (SA)

ā€¢ Annealing from metallurgy: control the cooling of materialā€Ø
to reduce defects (e.g., cracks or bubbles) in the material.

ā€¢ Temperature T āˆˆ [0,1] speciļ¬es ā€œimportanceā€ of distance.

ā€¢ At T=1, exploration (normal AFL)

ā€¢ At T=0, exploitation (gradient descent)

ā€¢ Cooling schedule controls (global) temperature

ā€¢ Classically, exponential cooling.
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
ā€¢ Integrating Simulated Annealing as power schedule

ā€¢ In the beginning (t = 0min), ā€Ø
assign the same energyā€Ø
to all seeds.
Directed Fuzzing as ā€Ø
Optimisation Problem
dene the normalized seed
set of target locations Tb .
s. This trace contains the
ed distance d(s,Tb ) as
(m,Tb )
|
(3)
set S of seeds to fuzz. We
,Tb ) as the dierence be-
he minimum seed distance
by the dierence between
0.00
0.25
0.50
0.75
1.00
0.00 0.25 0.50 0.75 1.00
Distance d(s,Tb)
Energyp(s,Tb)
t = 0min t =10min t = 80min
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
ā€¢ Integrating Simulated Annealing as power schedule

ā€¢ In the beginning (t = 0min), ā€Ø
assign the same energyā€Ø
to all seeds.

ā€¢ Later (t=10min), assignā€Ø
a bit more energy toā€Ø
seeds that are closer.ā€Ø
Directed Fuzzing as ā€Ø
Optimisation Problem
dene the normalized seed
set of target locations Tb .
s. This trace contains the
ed distance d(s,Tb ) as
(m,Tb )
|
(3)
set S of seeds to fuzz. We
,Tb ) as the dierence be-
he minimum seed distance
by the dierence between
0.00
0.25
0.50
0.75
1.00
0.00 0.25 0.50 0.75 1.00
Distance d(s,Tb)
Energyp(s,Tb)
t = 0min t =10min t = 80min
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
ā€¢ Integrating Simulated Annealing as power schedule

ā€¢ In the beginning (t = 0min), ā€Ø
assign the same energyā€Ø
to all seeds.

ā€¢ Later (t=10min), assignā€Ø
a bit more energy toā€Ø
seeds that are closer.

ā€¢ At exploitation (t=80min),ā€Ø
assign maximal energy toā€Ø
seeds that are closest.
Directed Fuzzing as ā€Ø
Optimisation Problem
dene the normalized seed
set of target locations Tb .
s. This trace contains the
ed distance d(s,Tb ) as
(m,Tb )
|
(3)
set S of seeds to fuzz. We
,Tb ) as the dierence be-
he minimum seed distance
by the dierence between
0.00
0.25
0.50
0.75
1.00
0.00 0.25 0.50 0.75 1.00
Distance d(s,Tb)
Energyp(s,Tb)
t = 0min t =10min t = 80min
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
ā€¢ Integrating Simulated Annealing as power schedule

ā€¢ In the beginning (t = 0min), ā€Ø
assign the same energyā€Ø
to all seeds.

ā€¢ Later (t=10min), assignā€Ø
a bit more energy toā€Ø
seeds that are closer.

ā€¢ At exploitation (t=80min),ā€Ø
assign maximal energy toā€Ø
seeds that are closest.
Directed Fuzzing as ā€Ø
Optimisation Problem
0.00
0.25
0.50
0.75
1.00
0.00 0.25 0.50 0.75 1.00
Distance d(s,Tb)
Energyp(s,Tb)
t = 0min t =10min t = 80min
0.00
0.25
0.50
0.75
1.00
0 20 40 60 80
Current time t (in min)
Energyp(s,Tb)
d = 1 d = 0.5 d = 0
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Results
ā€¢ Patch Testing: Reach changed statements

ā€¢ State-of-the-art in patch testing

ā€¢ KATCH (based on Klee symbolic exec. tool)

ā€¢ Experimental Setup

ā€¢ Reuse original KATCH-benchmark

ā€¢ Measure patch coverage (#changed BBs reached)

ā€¢ Measure vuln. detection (#errors discovered)
KATCH: High-Coverage Testing of Software Patches
Paul Dan Marinescu
Department of Computing
Imperial College London, UK
p.marinescu@imperial.ac.uk
Cristian Cadar
Department of Computing
Imperial College London, UK
c.cadar@imperial.ac.uk
ABSTRACT
One of the distinguishing characteristics of software systems
is that they evolve: new patches are committed to software
repositories and new versions are released to users on a
continuous basis. Unfortunately, many of these changes
bring unexpected bugs that break the stability of the system
or aā†µect its security. In this paper, we address this problem
using a technique for automatically testing code patches.
Our technique combines symbolic execution with several
novel heuristics based on static and dynamic program anal-
!#$%'$!(
Figure 1: KATCH is integrated in the software
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Results
ā€¢ Patch Testing: Reach changed statements

ā€¢ State-of-the-art in patch testing

ā€¢ KATCH (based on Klee symbolic exec. tool)

ā€¢ Patch Coverage (#changed BBs reached)
is unrelated to the concept [32]. We make a conscious eort to
explain the observed phenomena and distinguish conceptual from
technical origins. Moreover, we encourage the reader to consider
the perspective of a security researcher who is actually handling
these tools to establish whether there exists a vulnerability.
5.1 Patch Coverage
We begin by analyzing the patch coverage achieved by both K
and AFLG as measured by the number of previously uncovered
basic blocks that were changed in the respective patch.
Table 1: Patch coverage results showing the number of previ-
ously uncovered targets that K and AFLG could cover
in the stipulated time budget, respectively.
#Changed #Uncovered
Basic Blocks Changed BBs K AFLG
Binutils 852 702 135 159
Diutils 166 108 63 64
Sum 1018 810 198 223
complex inp
executed onl
for certain a
dened stru
higher-quali
approach [2
To unders
we investiga
we can see
cannot cove
cover. We at
vidual streng
dicult con
be dicult t
quickly exp
stuck in a pa
AFLG and
282 targets
cover indi
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Results
ā€¢ Patch Testing: Reach changed statements

ā€¢ State-of-the-art in patch testing

ā€¢ KATCH (based on Klee symbolic exec. tool)

ā€¢ Patch Coverage (#changed BBs reached)

ā€¢ While we would expect Klee to take a substantial lead, ā€Ø
AFLGo outperforms KATCH in terms of patch coverage.
is unrelated to the concept [32]. We make a conscious eort to
explain the observed phenomena and distinguish conceptual from
technical origins. Moreover, we encourage the reader to consider
the perspective of a security researcher who is actually handling
these tools to establish whether there exists a vulnerability.
5.1 Patch Coverage
We begin by analyzing the patch coverage achieved by both K
and AFLG as measured by the number of previously uncovered
basic blocks that were changed in the respective patch.
Table 1: Patch coverage results showing the number of previ-
ously uncovered targets that K and AFLG could cover
in the stipulated time budget, respectively.
#Changed #Uncovered
Basic Blocks Changed BBs K AFLG
Binutils 852 702 135 159
Diutils 166 108 63 64
Sum 1018 810 198 223
complex inp
executed onl
for certain a
dened stru
higher-quali
approach [2
To unders
we investiga
we can see
cannot cove
cover. We at
vidual streng
dicult con
be dicult t
quickly exp
stuck in a pa
AFLG and
282 targets
cover indi
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Results
ā€¢ Patch Testing: Reach changed statements

ā€¢ State-of-the-art in patch testing

ā€¢ KATCH (based on Klee symbolic exec. tool)

ā€¢ Patch Coverage (#changed BBs reached)

ā€¢ While we would expect Klee to take a substantial lead, ā€Ø
AFLGo outperforms KATCH in terms of patch coverage.

ā€¢ BUT: Together they cover 42% and 26% ā€Ø
more than AFLGo and KATCH individually. ā€Ø
They complement each other!ā€Ø
oject Tools diff, sdiff, diff3, cmp
ogram Size 42,930 LoC
n Commits 175 commits from Novā€™09ā€“Mayā€™12
GNU Diutils
oject Tools
addr2line, ar, cxxfilt, elfedit, nm,
objcopy, objdump, ranlib, readelf
size, strings, strip
ogram Size 68,830 LoC + 800kLoC from libraries
n Commits 181 commits from Aprā€™11ā€“Augā€™12
GNU Binutils
K ā€” 59 139 84 ā€” AFLG
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Results
ā€¢ Patch Testing: Reach changed statements

ā€¢ State-of-the-art in patch testing

ā€¢ KATCH (based on Klee symbolic exec. tool)

ā€¢ Patch Coverage (#changed BBs reached)

ā€¢ Vulnerability Detection (#errors discovered)
As future work, we are planning to integrate symbolic-execution-
based directed whitebox fuzzing and directed greybox fuzzing to
achieve a directed fuzzing technique that is both very eective and
very ecient in terms of reaching pre-specied target locations.
We believe that such an integration would be superior to each
technique individually. An integrated directed fuzzing technique
that leverages both symbolic execution and search as optmization
problem would be able to draw on their combined strengths to
mitigate their indiviual weaknesses. Driller [38] is an example of
an (undirected) fuzzer that integrates the AFL greybox fuzzer and
the K whitebox fuzzer.
5.2 Vulnerability Detection
Table 2: Showing the number of previously unreported bugs
found by AFLG (reported Aprā€™2017) in addition to the num-
ber of bug reports for K (reported Febā€™2013).
K AFLG
#Reports #Reports14 #New Reports #CVEs
Binutils 7 4 12 7
Diutils 0 N/A 1 0
Sum 7 4 13 7
AFLG found 13 previously unreported bugs in addition to 4 of
Table 3: Bug rep
Report-ID
Binutils
21408
21409
21412
21414
21415
21417
Diutils http://lists.g
We attribute m
to the eciency of
program analysis a
magnitute more in
is the runtime che
error detection mec
the program when
we instrumented o
Sanitizer (ASAN). I
e.g., by reading be
writing memory th
a SEGFAULT even
fuzzer uses this sig
for a generated in
(i.e., interprets) th
and uses constrain
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Results
ā€¢ Patch Testing: Reach changed statements

ā€¢ State-of-the-art in patch testing

ā€¢ KATCH (based on Klee symbolic exec. tool)

ā€¢ Patch Coverage (#changed BBs reached)

ā€¢ Vulnerability Detection (#errors discovered)

ā€¢ AFLGo found 13 previously unreported bugs (7 CVEs) ā€Ø
in addition to 4 of the 7 bugs that were found by KATCH.
As future work, we are planning to integrate symbolic-execution-
based directed whitebox fuzzing and directed greybox fuzzing to
achieve a directed fuzzing technique that is both very eective and
very ecient in terms of reaching pre-specied target locations.
We believe that such an integration would be superior to each
technique individually. An integrated directed fuzzing technique
that leverages both symbolic execution and search as optmization
problem would be able to draw on their combined strengths to
mitigate their indiviual weaknesses. Driller [38] is an example of
an (undirected) fuzzer that integrates the AFL greybox fuzzer and
the K whitebox fuzzer.
5.2 Vulnerability Detection
Table 2: Showing the number of previously unreported bugs
found by AFLG (reported Aprā€™2017) in addition to the num-
ber of bug reports for K (reported Febā€™2013).
K AFLG
#Reports #Reports14 #New Reports #CVEs
Binutils 7 4 12 7
Diutils 0 N/A 1 0
Sum 7 4 13 7
AFLG found 13 previously unreported bugs in addition to 4 of
Table 3: Bug rep
Report-ID
Binutils
21408
21409
21412
21414
21415
21417
Diutils http://lists.g
We attribute m
to the eciency of
program analysis a
magnitute more in
is the runtime che
error detection mec
the program when
we instrumented o
Sanitizer (ASAN). I
e.g., by reading be
writing memory th
a SEGFAULT even
fuzzer uses this sig
for a generated in
(i.e., interprets) th
and uses constrain
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Results
ā€¢ Crash Reproduction: Exercise stack trace

ā€¢ State-of-the-art in crash reproduction

ā€¢ BugRedux (based on Klee symbolic exec. tool)

ā€¢ Experimental Setup

ā€¢ Reuse original BugRedux-benchmark

ā€¢ Determine whether or not crash can be reproduced
Software
developer
Instrumenter
Application Instrumented
application
Crash report
(execution data)
Analyzer
BugRedux
Test input
Debugging
tool
Software
tester
Figure 4. Intuitive high-level view of BUGREDUX.
Test input
Oracle
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Results
ā€¢ Crash Reproduction: Exercise stack trace

ā€¢ State-of-the-art in crash reproduction

ā€¢ BugRedux (based on Klee symbolic exec. tool)

ā€¢ Experimental Setup

ā€¢ Reuse original BugRedux-benchmark

ā€¢ Determine whether or not crash can be reproduced
experimental setup, starting conguration, and timeouts. BugRedux
[18] is a directed whitebox fuzzer based on K, takes as input a
sequence of program statements, and generates as output a test case
that exercises that sequence and crashes the program. It was shown
that BugRedux works best of the complete method-call sequence is
provided that lead to the crash. However, as discussed earlier often
only the stack-trace is available, which does not contain methods
that have already ā€œreturnedā€, i.e., nished execution. Hence, for our
comparison, we set the method-calls in the stack trace as targets.
Despite our request for all subjects from the original dataset, only
a subset of nine subjects could be located for us. For two subjects
(exim, xmail), we could not obtain the stack-trace that would specify
the target locations. Specically, the crash in exim can only be
reproduced on 32bit architectures while the crash in xmail overows
the stack such that the stack-trace is overridden. The results for the
remaining seven subjects are shown in Table 6.
Table 6: Bugs reproduced for the original BugRedux subjects
Subjects BugRedux AFLG Comments
sed.fault1 7 7 Takes two les as input
sed.fault2 7 3
grep 7 3
gzip.fault1 7 3
gzip.fault2 7 3
ncompress 3 3
polymorph 3 3
same benchmarks that th
in the original papers [18
The second concern is
a study minimizes system
nal validity for fuzzer exp
However, for our experi
was readily available, suc
Binutils and the K ex
OSS-Fuzz experiments, a
classically provides for th
when comparing two fuzz
seed corpus such that bot
Second, like implementati
faithfully implement the
shown in the comparison
The third concern is co
a test measures what it c
note that results of tool co
grain of salt. An empirical
implementations of two c
selves. Improving the ec
fuzzer may only be a que
lated to the concept [32].
explain the observed phen
technical origins. Moreov
the perspective of a secur
these tools to establish w
AFLGo reproduces ā€Ø
3 times more crashes!
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Result Summary
ā€¢ Our directed greybox fuzzer (AFLGo) outperforms ā€Ø
symbolic execution-based directed fuzzers (KATCH  BugRedux)

ā€¢ in terms of reaching more target locations and

ā€¢ in terms of detecting more vulnerabilities,
ā€¢ on their own, original benchmark sets.
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Conclusion
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Motivation
ā€¢ Directed Fuzzing: classical constraint satisfaction prob.

ā€¢ Program analysis to identify program paths that reach given
program locations.

ā€¢ Symbolic Execution to derive path conditions for any of the
identiļ¬ed paths.

ā€¢ Constraint Solving to ļ¬nd an input that

ā€¢ satisļ¬es the path condition and thus

ā€¢ reaches a program location that was given.
Requiresā€Ø
heavy-weightā€Ø
machinery!
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Overview
ā€¢ Directed Fuzzing as optimisation problem!

1. Instrumentation Time:

1. Extract call graph (CG) and control-ļ¬‚ow graphs (CFGs).

2. For each BB, compute distance to target locations.

3. Instrument program to aggregate distance values.

2. Runtime, for each input

1. collect coverage and distance information, and

2. decide how long to be fuzzed based on distance.

ā€¢ If input is closer to the targets, it is fuzzed for longer.

ā€¢ If input is further away from the targets, it is fuzzed for shorter.
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
ā€¢ Integrating Simulated Annealing as power schedule

ā€¢ In the beginning (t = 0min), ā€Ø
assign the same energyā€Ø
to all seeds.

ā€¢ Later (t=10min), assignā€Ø
a bit more energy toā€Ø
seeds that are closer.

ā€¢ At exploitation (t=80min),ā€Ø
assign maximal energy toā€Ø
seeds that are closest.
Directed Fuzzing as ā€Ø
Optimisation Problem
0.00
0.25
0.50
0.75
1.00
0.00 0.25 0.50 0.75 1.00
Distance d(s,Tb)
Energyp(s,Tb)
t = 0min t =10min t = 80min
0.00
0.25
0.50
0.75
1.00
0 20 40 60 80
Current time t (in min)
Energyp(s,Tb)
d = 1 d = 0.5 d = 0
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Result Summary
ā€¢ Our directed greybox fuzzer (AFLGo) outperforms ā€Ø
symbolic execution-based directed fuzzers (KATCH  BugRedux)

ā€¢ in terms of reaching more target locations and

ā€¢ in terms of detecting more vulnerabilities,
ā€¢ on their own, original benchmark sets.
*Tool comparisons should always be taken with a grain of salt.
*
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Conclusion
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Motivation
ā€¢ Directed Fuzzing: classical constraint satisfaction prob.

ā€¢ Program analysis to identify program paths that reach given
program locations.

ā€¢ Symbolic Execution to derive path conditions for any of the
identiļ¬ed paths.

ā€¢ Constraint Solving to ļ¬nd an input that

ā€¢ satisļ¬es the path condition and thus

ā€¢ reaches a program location that was given.
Requiresā€Ø
heavy-weightā€Ø
machinery!
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Overview
ā€¢ Directed Fuzzing as optimisation problem!

1. Instrumentation Time:

1. Extract call graph (CG) and control-ļ¬‚ow graphs (CFGs).

2. For each BB, compute distance to target locations.

3. Instrument program to aggregate distance values.

2. Runtime, for each input

1. collect coverage and distance information, and

2. decide how long to be fuzzed based on distance.

ā€¢ If input is closer to the targets, it is fuzzed for longer.

ā€¢ If input is further away from the targets, it is fuzzed for shorter.
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
ā€¢ Integrating Simulated Annealing as power schedule

ā€¢ In the beginning (t = 0min), ā€Ø
assign the same energyā€Ø
to all seeds.

ā€¢ Later (t=10min), assignā€Ø
a bit more energy toā€Ø
seeds that are closer.

ā€¢ At exploitation (t=80min),ā€Ø
assign maximal energy toā€Ø
seeds that are closest.
Directed Fuzzing as ā€Ø
Optimisation Problem
0.00
0.25
0.50
0.75
1.00
0.00 0.25 0.50 0.75 1.00
Distance d(s,Tb)
Energyp(s,Tb)
t = 0min t =10min t = 80min
0.00
0.25
0.50
0.75
1.00
0 20 40 60 80
Current time t (in min)
Energyp(s,Tb)
d = 1 d = 0.5 d = 0
Presented by Abhik Roychoudhury
Directed Greybox Fuzzing
Result Summary
ā€¢ Our directed greybox fuzzer (AFLGo) outperforms ā€Ø
symbolic execution-based directed fuzzers (KATCH  BugRedux)

ā€¢ in terms of reaching more target locations and

ā€¢ in terms of detecting more vulnerabilities,
ā€¢ on their own, original benchmark sets.
*Tool comparisons should always be taken with a grain of salt.
*
Questions?

More Related Content

What's hot

Q2.12: Debugging with GDB
Q2.12: Debugging with GDBQ2.12: Debugging with GDB
Q2.12: Debugging with GDBLinaro
Ā 
GDB Rocks!
GDB Rocks!GDB Rocks!
GDB Rocks!Kent Chen
Ā 
Understanding eBPF in a Hurry!
Understanding eBPF in a Hurry!Understanding eBPF in a Hurry!
Understanding eBPF in a Hurry!Ray Jenkins
Ā 
ģ„œė²„ ź°œė°œģžź°€ ė°”ė¼ ė³ø Functional Reactive Programming with RxJava - SpringCamp2015
ģ„œė²„ ź°œė°œģžź°€ ė°”ė¼ ė³ø Functional Reactive Programming with RxJava - SpringCamp2015ģ„œė²„ ź°œė°œģžź°€ ė°”ė¼ ė³ø Functional Reactive Programming with RxJava - SpringCamp2015
ģ„œė²„ ź°œė°œģžź°€ ė°”ė¼ ė³ø Functional Reactive Programming with RxJava - SpringCamp2015NAVER / MusicPlatform
Ā 
Introduction to gdb
Introduction to gdbIntroduction to gdb
Introduction to gdbOwen Hsu
Ā 
Modern Kernel Pool Exploitation: Attacks and Techniques
Modern Kernel Pool Exploitation: Attacks and TechniquesModern Kernel Pool Exploitation: Attacks and Techniques
Modern Kernel Pool Exploitation: Attacks and TechniquesMichael Scovetta
Ā 
Play with FILE Structure - Yet Another Binary Exploit Technique
Play with FILE Structure - Yet Another Binary Exploit TechniquePlay with FILE Structure - Yet Another Binary Exploit Technique
Play with FILE Structure - Yet Another Binary Exploit TechniqueAngel Boy
Ā 
Dataplane programming with eBPF: architecture and tools
Dataplane programming with eBPF: architecture and toolsDataplane programming with eBPF: architecture and tools
Dataplane programming with eBPF: architecture and toolsStefano Salsano
Ā 
Performance analysis and randamized agoritham
Performance analysis and randamized agorithamPerformance analysis and randamized agoritham
Performance analysis and randamized agorithamlilyMalar1
Ā 
NTUSTxTDOH - PwnåŸŗē¤Ž 2015/12/27
NTUSTxTDOH - PwnåŸŗē¤Ž 2015/12/27NTUSTxTDOH - PwnåŸŗē¤Ž 2015/12/27
NTUSTxTDOH - PwnåŸŗē¤Ž 2015/12/27Sheng-Hao Ma
Ā 
Cilium - Container Networking with BPF & XDP
Cilium - Container Networking with BPF & XDPCilium - Container Networking with BPF & XDP
Cilium - Container Networking with BPF & XDPThomas Graf
Ā 
Example of iterative deepening search & bidirectional search
Example of iterative deepening search & bidirectional searchExample of iterative deepening search & bidirectional search
Example of iterative deepening search & bidirectional searchAbhijeet Agarwal
Ā 
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling Tools
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling ToolsTIP1 - Overview of C/C++ Debugging/Tracing/Profiling Tools
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling ToolsXiaozhe Wang
Ā 
svn ėŠ„ė „ģžė„¼ ģœ„ķ•œ git ź°œė… ź°€ģ“ė“œ
svn ėŠ„ė „ģžė„¼ ģœ„ķ•œ git ź°œė… ź°€ģ“ė“œsvn ėŠ„ė „ģžė„¼ ģœ„ķ•œ git ź°œė… ź°€ģ“ė“œ
svn ėŠ„ė „ģžė„¼ ģœ„ķ•œ git ź°œė… ź°€ģ“ė“œInsub Lee
Ā 
Heap exploitation
Heap exploitationHeap exploitation
Heap exploitationAngel Boy
Ā 
Uninformed search
Uninformed searchUninformed search
Uninformed searchBablu Shofi
Ā 
Accelerating Envoy and Istio with Cilium and the Linux Kernel
Accelerating Envoy and Istio with Cilium and the Linux KernelAccelerating Envoy and Istio with Cilium and the Linux Kernel
Accelerating Envoy and Istio with Cilium and the Linux KernelThomas Graf
Ā 
Linux Binary Exploitation - Stack buffer overflow
Linux Binary Exploitation - Stack buffer overflowLinux Binary Exploitation - Stack buffer overflow
Linux Binary Exploitation - Stack buffer overflowAngel Boy
Ā 
VerilatorćØSystemC
VerilatorćØSystemCVerilatorćØSystemC
VerilatorćØSystemCMr. Vengineer
Ā 

What's hot (20)

Q2.12: Debugging with GDB
Q2.12: Debugging with GDBQ2.12: Debugging with GDB
Q2.12: Debugging with GDB
Ā 
GDB Rocks!
GDB Rocks!GDB Rocks!
GDB Rocks!
Ā 
Fuzzing.pptx
Fuzzing.pptxFuzzing.pptx
Fuzzing.pptx
Ā 
Understanding eBPF in a Hurry!
Understanding eBPF in a Hurry!Understanding eBPF in a Hurry!
Understanding eBPF in a Hurry!
Ā 
ģ„œė²„ ź°œė°œģžź°€ ė°”ė¼ ė³ø Functional Reactive Programming with RxJava - SpringCamp2015
ģ„œė²„ ź°œė°œģžź°€ ė°”ė¼ ė³ø Functional Reactive Programming with RxJava - SpringCamp2015ģ„œė²„ ź°œė°œģžź°€ ė°”ė¼ ė³ø Functional Reactive Programming with RxJava - SpringCamp2015
ģ„œė²„ ź°œė°œģžź°€ ė°”ė¼ ė³ø Functional Reactive Programming with RxJava - SpringCamp2015
Ā 
Introduction to gdb
Introduction to gdbIntroduction to gdb
Introduction to gdb
Ā 
Modern Kernel Pool Exploitation: Attacks and Techniques
Modern Kernel Pool Exploitation: Attacks and TechniquesModern Kernel Pool Exploitation: Attacks and Techniques
Modern Kernel Pool Exploitation: Attacks and Techniques
Ā 
Play with FILE Structure - Yet Another Binary Exploit Technique
Play with FILE Structure - Yet Another Binary Exploit TechniquePlay with FILE Structure - Yet Another Binary Exploit Technique
Play with FILE Structure - Yet Another Binary Exploit Technique
Ā 
Dataplane programming with eBPF: architecture and tools
Dataplane programming with eBPF: architecture and toolsDataplane programming with eBPF: architecture and tools
Dataplane programming with eBPF: architecture and tools
Ā 
Performance analysis and randamized agoritham
Performance analysis and randamized agorithamPerformance analysis and randamized agoritham
Performance analysis and randamized agoritham
Ā 
NTUSTxTDOH - PwnåŸŗē¤Ž 2015/12/27
NTUSTxTDOH - PwnåŸŗē¤Ž 2015/12/27NTUSTxTDOH - PwnåŸŗē¤Ž 2015/12/27
NTUSTxTDOH - PwnåŸŗē¤Ž 2015/12/27
Ā 
Cilium - Container Networking with BPF & XDP
Cilium - Container Networking with BPF & XDPCilium - Container Networking with BPF & XDP
Cilium - Container Networking with BPF & XDP
Ā 
Example of iterative deepening search & bidirectional search
Example of iterative deepening search & bidirectional searchExample of iterative deepening search & bidirectional search
Example of iterative deepening search & bidirectional search
Ā 
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling Tools
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling ToolsTIP1 - Overview of C/C++ Debugging/Tracing/Profiling Tools
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling Tools
Ā 
svn ėŠ„ė „ģžė„¼ ģœ„ķ•œ git ź°œė… ź°€ģ“ė“œ
svn ėŠ„ė „ģžė„¼ ģœ„ķ•œ git ź°œė… ź°€ģ“ė“œsvn ėŠ„ė „ģžė„¼ ģœ„ķ•œ git ź°œė… ź°€ģ“ė“œ
svn ėŠ„ė „ģžė„¼ ģœ„ķ•œ git ź°œė… ź°€ģ“ė“œ
Ā 
Heap exploitation
Heap exploitationHeap exploitation
Heap exploitation
Ā 
Uninformed search
Uninformed searchUninformed search
Uninformed search
Ā 
Accelerating Envoy and Istio with Cilium and the Linux Kernel
Accelerating Envoy and Istio with Cilium and the Linux KernelAccelerating Envoy and Istio with Cilium and the Linux Kernel
Accelerating Envoy and Istio with Cilium and the Linux Kernel
Ā 
Linux Binary Exploitation - Stack buffer overflow
Linux Binary Exploitation - Stack buffer overflowLinux Binary Exploitation - Stack buffer overflow
Linux Binary Exploitation - Stack buffer overflow
Ā 
VerilatorćØSystemC
VerilatorćØSystemCVerilatorćØSystemC
VerilatorćØSystemC
Ā 

Similar to AFLGo: Directed Greybox Fuzzing

EuroMPI 2019: Multilevel Checkpointing for MPI Applications
EuroMPI 2019: Multilevel Checkpointing for MPI ApplicationsEuroMPI 2019: Multilevel Checkpointing for MPI Applications
EuroMPI 2019: Multilevel Checkpointing for MPI ApplicationsLEGATO project
Ā 
Open CV - 電腦ꀎéŗ¼ēœ‹äø–ē•Œ
Open CV - 電腦ꀎéŗ¼ēœ‹äø–ē•ŒOpen CV - 電腦ꀎéŗ¼ēœ‹äø–ē•Œ
Open CV - 電腦ꀎéŗ¼ēœ‹äø–ē•ŒTech Podcast Night
Ā 
Csw2016 d antoine_automatic_exploitgeneration
Csw2016 d antoine_automatic_exploitgenerationCsw2016 d antoine_automatic_exploitgeneration
Csw2016 d antoine_automatic_exploitgenerationCanSecWest
Ā 
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016Shuichi Tsutsumi
Ā 
Dynamic Binary Analysis and Obfuscated Codes
Dynamic Binary Analysis and Obfuscated Codes Dynamic Binary Analysis and Obfuscated Codes
Dynamic Binary Analysis and Obfuscated Codes Jonathan Salwan
Ā 
Tech Day 2015: A Gentle Introduction to GPS and GNATbench
Tech Day 2015: A Gentle Introduction to GPS and GNATbenchTech Day 2015: A Gentle Introduction to GPS and GNATbench
Tech Day 2015: A Gentle Introduction to GPS and GNATbenchAdaCore
Ā 
Pytorch kr devcon
Pytorch kr devconPytorch kr devcon
Pytorch kr devconjaewon lee
Ā 
Navigational BCI Using Acoustic Stimulation
Navigational BCI Using Acoustic StimulationNavigational BCI Using Acoustic Stimulation
Navigational BCI Using Acoustic Stimulationwacax
Ā 
EXTENT-2016: Industry Practices of Advanced Program Analysis
EXTENT-2016: Industry Practices of Advanced Program AnalysisEXTENT-2016: Industry Practices of Advanced Program Analysis
EXTENT-2016: Industry Practices of Advanced Program AnalysisIosif Itkin
Ā 
Avihu Efrat's Viola and Jones face detection slides
Avihu Efrat's Viola and Jones face detection slidesAvihu Efrat's Viola and Jones face detection slides
Avihu Efrat's Viola and Jones face detection slideswolf
Ā 
Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016
Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016
Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016Shuichi Tsutsumi
Ā 
How to Reverse Engineer Web Applications
How to Reverse Engineer Web ApplicationsHow to Reverse Engineer Web Applications
How to Reverse Engineer Web ApplicationsJarrod Overson
Ā 
White box testing-200709
White box testing-200709White box testing-200709
White box testing-200709pragati3009
Ā 
Machine Vision On Embedded Platform
Machine Vision On Embedded Platform Machine Vision On Embedded Platform
Machine Vision On Embedded Platform Omkar Rane
Ā 
Machine vision Application
Machine vision ApplicationMachine vision Application
Machine vision ApplicationAbhishek Sainkar
Ā 
Lesson 2 introduction to grasshopper3D
Lesson 2   introduction to grasshopper3DLesson 2   introduction to grasshopper3D
Lesson 2 introduction to grasshopper3DItai Cohen
Ā 
D1T3-Anto-Joseph-Droid-FF
D1T3-Anto-Joseph-Droid-FFD1T3-Anto-Joseph-Droid-FF
D1T3-Anto-Joseph-Droid-FFAnthony Jose
Ā 
Code quality par Simone Civetta
Code quality par Simone CivettaCode quality par Simone Civetta
Code quality par Simone CivettaCocoaHeads France
Ā 
BinProxy: New Paradigm of Binary Analysis With Your Favorite Web Proxy
BinProxy: New Paradigm of Binary Analysis With Your Favorite Web ProxyBinProxy: New Paradigm of Binary Analysis With Your Favorite Web Proxy
BinProxy: New Paradigm of Binary Analysis With Your Favorite Web ProxyDONGJOO HA
Ā 

Similar to AFLGo: Directed Greybox Fuzzing (20)

EuroMPI 2019: Multilevel Checkpointing for MPI Applications
EuroMPI 2019: Multilevel Checkpointing for MPI ApplicationsEuroMPI 2019: Multilevel Checkpointing for MPI Applications
EuroMPI 2019: Multilevel Checkpointing for MPI Applications
Ā 
Open CV - 電腦ꀎéŗ¼ēœ‹äø–ē•Œ
Open CV - 電腦ꀎéŗ¼ēœ‹äø–ē•ŒOpen CV - 電腦ꀎéŗ¼ēœ‹äø–ē•Œ
Open CV - 電腦ꀎéŗ¼ēœ‹äø–ē•Œ
Ā 
Csw2016 d antoine_automatic_exploitgeneration
Csw2016 d antoine_automatic_exploitgenerationCsw2016 d antoine_automatic_exploitgeneration
Csw2016 d antoine_automatic_exploitgeneration
Ā 
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
Ā 
Dynamic Binary Analysis and Obfuscated Codes
Dynamic Binary Analysis and Obfuscated Codes Dynamic Binary Analysis and Obfuscated Codes
Dynamic Binary Analysis and Obfuscated Codes
Ā 
Tech Day 2015: A Gentle Introduction to GPS and GNATbench
Tech Day 2015: A Gentle Introduction to GPS and GNATbenchTech Day 2015: A Gentle Introduction to GPS and GNATbench
Tech Day 2015: A Gentle Introduction to GPS and GNATbench
Ā 
Pytorch kr devcon
Pytorch kr devconPytorch kr devcon
Pytorch kr devcon
Ā 
Navigational BCI Using Acoustic Stimulation
Navigational BCI Using Acoustic StimulationNavigational BCI Using Acoustic Stimulation
Navigational BCI Using Acoustic Stimulation
Ā 
EXTENT-2016: Industry Practices of Advanced Program Analysis
EXTENT-2016: Industry Practices of Advanced Program AnalysisEXTENT-2016: Industry Practices of Advanced Program Analysis
EXTENT-2016: Industry Practices of Advanced Program Analysis
Ā 
Profile Guided Optimization
Profile Guided OptimizationProfile Guided Optimization
Profile Guided Optimization
Ā 
Avihu Efrat's Viola and Jones face detection slides
Avihu Efrat's Viola and Jones face detection slidesAvihu Efrat's Viola and Jones face detection slides
Avihu Efrat's Viola and Jones face detection slides
Ā 
Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016
Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016
Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016
Ā 
How to Reverse Engineer Web Applications
How to Reverse Engineer Web ApplicationsHow to Reverse Engineer Web Applications
How to Reverse Engineer Web Applications
Ā 
White box testing-200709
White box testing-200709White box testing-200709
White box testing-200709
Ā 
Machine Vision On Embedded Platform
Machine Vision On Embedded Platform Machine Vision On Embedded Platform
Machine Vision On Embedded Platform
Ā 
Machine vision Application
Machine vision ApplicationMachine vision Application
Machine vision Application
Ā 
Lesson 2 introduction to grasshopper3D
Lesson 2   introduction to grasshopper3DLesson 2   introduction to grasshopper3D
Lesson 2 introduction to grasshopper3D
Ā 
D1T3-Anto-Joseph-Droid-FF
D1T3-Anto-Joseph-Droid-FFD1T3-Anto-Joseph-Droid-FF
D1T3-Anto-Joseph-Droid-FF
Ā 
Code quality par Simone Civetta
Code quality par Simone CivettaCode quality par Simone Civetta
Code quality par Simone Civetta
Ā 
BinProxy: New Paradigm of Binary Analysis With Your Favorite Web Proxy
BinProxy: New Paradigm of Binary Analysis With Your Favorite Web ProxyBinProxy: New Paradigm of Binary Analysis With Your Favorite Web Proxy
BinProxy: New Paradigm of Binary Analysis With Your Favorite Web Proxy
Ā 

More from mboehme

An Implementation of Preregistration
An Implementation of PreregistrationAn Implementation of Preregistration
An Implementation of Preregistrationmboehme
Ā 
On the Reliability of Coverage-based Fuzzer Benchmarking
On the Reliability of Coverage-based Fuzzer BenchmarkingOn the Reliability of Coverage-based Fuzzer Benchmarking
On the Reliability of Coverage-based Fuzzer Benchmarkingmboehme
Ā 
Statistical Reasoning About Programs
Statistical Reasoning About ProgramsStatistical Reasoning About Programs
Statistical Reasoning About Programsmboehme
Ā 
The Curious Case of Fuzzing for Automated Software Testing
The Curious Case of Fuzzing for Automated Software TestingThe Curious Case of Fuzzing for Automated Software Testing
The Curious Case of Fuzzing for Automated Software Testingmboehme
Ā 
On the Surprising Efficiency and Exponential Cost of Fuzzing
On the Surprising Efficiency and Exponential Cost of FuzzingOn the Surprising Efficiency and Exponential Cost of Fuzzing
On the Surprising Efficiency and Exponential Cost of Fuzzingmboehme
Ā 
Foundations Of Software Testing
Foundations Of Software TestingFoundations Of Software Testing
Foundations Of Software Testingmboehme
Ā 
DS3 Fuzzing Panel (M. Boehme)
DS3 Fuzzing Panel (M. Boehme)DS3 Fuzzing Panel (M. Boehme)
DS3 Fuzzing Panel (M. Boehme)mboehme
Ā 
Fuzzing: On the Exponential Cost of Vulnerability Discovery
Fuzzing: On the Exponential Cost of Vulnerability DiscoveryFuzzing: On the Exponential Cost of Vulnerability Discovery
Fuzzing: On the Exponential Cost of Vulnerability Discoverymboehme
Ā 
Boosting Fuzzer Efficiency: An Information Theoretic Perspective
Boosting Fuzzer Efficiency: An Information Theoretic PerspectiveBoosting Fuzzer Efficiency: An Information Theoretic Perspective
Boosting Fuzzer Efficiency: An Information Theoretic Perspectivemboehme
Ā 
Fuzzing: Challenges and Reflections
Fuzzing: Challenges and ReflectionsFuzzing: Challenges and Reflections
Fuzzing: Challenges and Reflectionsmboehme
Ā 
NUS SoC Graduate Outreach @ TU Dresden
NUS SoC Graduate Outreach @ TU DresdenNUS SoC Graduate Outreach @ TU Dresden
NUS SoC Graduate Outreach @ TU Dresdenmboehme
Ā 

More from mboehme (11)

An Implementation of Preregistration
An Implementation of PreregistrationAn Implementation of Preregistration
An Implementation of Preregistration
Ā 
On the Reliability of Coverage-based Fuzzer Benchmarking
On the Reliability of Coverage-based Fuzzer BenchmarkingOn the Reliability of Coverage-based Fuzzer Benchmarking
On the Reliability of Coverage-based Fuzzer Benchmarking
Ā 
Statistical Reasoning About Programs
Statistical Reasoning About ProgramsStatistical Reasoning About Programs
Statistical Reasoning About Programs
Ā 
The Curious Case of Fuzzing for Automated Software Testing
The Curious Case of Fuzzing for Automated Software TestingThe Curious Case of Fuzzing for Automated Software Testing
The Curious Case of Fuzzing for Automated Software Testing
Ā 
On the Surprising Efficiency and Exponential Cost of Fuzzing
On the Surprising Efficiency and Exponential Cost of FuzzingOn the Surprising Efficiency and Exponential Cost of Fuzzing
On the Surprising Efficiency and Exponential Cost of Fuzzing
Ā 
Foundations Of Software Testing
Foundations Of Software TestingFoundations Of Software Testing
Foundations Of Software Testing
Ā 
DS3 Fuzzing Panel (M. Boehme)
DS3 Fuzzing Panel (M. Boehme)DS3 Fuzzing Panel (M. Boehme)
DS3 Fuzzing Panel (M. Boehme)
Ā 
Fuzzing: On the Exponential Cost of Vulnerability Discovery
Fuzzing: On the Exponential Cost of Vulnerability DiscoveryFuzzing: On the Exponential Cost of Vulnerability Discovery
Fuzzing: On the Exponential Cost of Vulnerability Discovery
Ā 
Boosting Fuzzer Efficiency: An Information Theoretic Perspective
Boosting Fuzzer Efficiency: An Information Theoretic PerspectiveBoosting Fuzzer Efficiency: An Information Theoretic Perspective
Boosting Fuzzer Efficiency: An Information Theoretic Perspective
Ā 
Fuzzing: Challenges and Reflections
Fuzzing: Challenges and ReflectionsFuzzing: Challenges and Reflections
Fuzzing: Challenges and Reflections
Ā 
NUS SoC Graduate Outreach @ TU Dresden
NUS SoC Graduate Outreach @ TU DresdenNUS SoC Graduate Outreach @ TU Dresden
NUS SoC Graduate Outreach @ TU Dresden
Ā 

Recently uploaded

Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...gurkirankumar98700
Ā 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
Ā 
Transcript: #StandardsGoals for 2024: Whatā€™s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: Whatā€™s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: Whatā€™s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: Whatā€™s new for BISAC - Tech Forum 2024BookNet Canada
Ā 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
Ā 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel AraĆŗjo
Ā 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
Ā 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
Ā 
FULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | DelhiFULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | Delhisoniya singh
Ā 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
Ā 
WhatsApp 9892124323 āœ“Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 āœ“Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 āœ“Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 āœ“Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
Ā 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
Ā 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
Ā 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
Ā 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
Ā 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
Ā 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
Ā 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
Ā 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
Ā 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
Ā 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
Ā 

Recently uploaded (20)

Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...
Ā 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
Ā 
Transcript: #StandardsGoals for 2024: Whatā€™s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: Whatā€™s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: Whatā€™s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: Whatā€™s new for BISAC - Tech Forum 2024
Ā 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
Ā 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Ā 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Ā 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Ā 
FULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | DelhiFULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | Delhi
Ā 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
Ā 
WhatsApp 9892124323 āœ“Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 āœ“Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 āœ“Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 āœ“Call Girls In Kalyan ( Mumbai ) secure service
Ā 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
Ā 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
Ā 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Ā 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
Ā 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
Ā 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
Ā 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
Ā 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
Ā 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
Ā 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
Ā 

AFLGo: Directed Greybox Fuzzing

  • 1. PhD Thesis Defense Presented by Marcel Boehme Directedā€Ø Greybox Fuzzing Marcel Bƶhme Thuan Pham Abhik RoychoudhuryM.-D. Nguyen
  • 2. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Motivation ā€¢ Automated vulnerability detection techniques 1. Blackbox Fuzzing (no program analysis, no feedback) 2. Whitebox Fuzzing (mostly program analysis) 3. Greybox Fuzzing (no program analysis, but coverage feedback)
  • 3. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Motivation ā€¢ Automated vulnerability detection techniques 1. Blackbox Fuzzing (no program analysis, no feedback) šŸ“„ Model-Based Blackbox Fuzzing Peach, Spike ā€¦ Seed Input
  • 4. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Motivation ā€¢ Automated vulnerability detection techniques 1. Blackbox Fuzzing (no program analysis, no feedback) šŸ“„ Model-Based Blackbox Fuzzing Peach, Spike ā€¦ Seed Input šŸ“„ šŸ“„ šŸ“„ Valid input Semi-valid input Semi-valid input Mutated Inputs
  • 5. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Motivation ā€¢ Automated vulnerability detection techniques 1. Blackbox Fuzzing (no program analysis, no feedback) šŸ“„ Model-Based Blackbox Fuzzing Input model Peach, Spike ā€¦ Seed Input šŸ“„ šŸ“„ šŸ“„ Valid input Semi-valid input Semi-valid input Mutated Inputs
  • 6. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Motivation ā€¢ Automated vulnerability detection techniques 1. Blackbox Fuzzing (no program analysis, no feedback) 2. Whitebox Fuzzing (mostly program analysis)
  • 7. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Motivation ā€¢ Automated vulnerability detection techniques 1. Blackbox Fuzzing (no program analysis, no feedback) 2. Whitebox Fuzzing (mostly program analysis) 3. Greybox Fuzzing (no program analysis, but coverage feedback) šŸ“„ šŸ“„šŸ“„ šŸ“„Greybox Fuzzing ā€¦ Seed Input
  • 8. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Motivation ā€¢ Automated vulnerability detection techniques 1. Blackbox Fuzzing (no program analysis, no feedback) 2. Whitebox Fuzzing (mostly program analysis) 3. Greybox Fuzzing (no program analysis, but coverage feedback) šŸ“„ šŸ“„šŸ“„ šŸ“„Greybox Fuzzing ā€¦ šŸ“„šŸ“„ Enqueue Seed Input Mutated Inputs Queue of ā€Ø ā€œinterestingā€ seeds Retain inputsā€Ø that increaseā€Ø coverage!
  • 9. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Motivation ā€¢ Automated vulnerability detection techniques 1. Blackbox Fuzzing (no program analysis, no feedback) 2. Whitebox Fuzzing (mostly program analysis) 3. Greybox Fuzzing (no program analysis, but coverage feedback) šŸ“„ šŸ“„šŸ“„ šŸ“„Greybox Fuzzing ā€¦ šŸ“„šŸ“„ EnqueueDequeue Seed Input Mutated Inputs Queue of ā€Ø ā€œinterestingā€ seeds Retain inputsā€Ø that increaseā€Ø coverage!
  • 10. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Motivation ā€¢ Greybox Fuzzing is frequently used ā€¢ State-of-the-art in automated vulnerability detection ā€¢ Extremely eļ¬ƒcient coverage-based input generation ā€¢ All program analysis before/at instrumentation time. ā€¢ Start with a seed corpus, choose a seed ļ¬le, fuzz it. ā€¢ Add to corpus only if new input increases coverage.
  • 11. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Motivation ā€¢ Greybox Fuzzing is frequently used ā€¢ State-of-the-art in automated vulnerability detection ā€¢ Extremely eļ¬ƒcient coverage-based input generation ā€¢ All program analysis before/at instrumentation time. ā€¢ Start with a seed corpus, choose a seed ļ¬le, fuzz it. ā€¢ Add to corpus only if new input increases coverage. ā€¢ Cannot be directed!
  • 12. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Motivation ā€¢ Directed Fuzzing has many applications ā€¢ Patch Testing: reach changed statements ā€¢ Crash Reproduction: exercise stack trace ā€¢ SA Report Veriļ¬cation: reach ā€œdangerousā€ location ā€¢ Information Flow Detection: exercise source-sink pairs
  • 13. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Motivation ā€¢ Directed Fuzzing: classical constraint satisfaction prob. ā€¢ Program analysis to identify program paths ā€Ø that reach given program locations. ā€¢ Symbolic Execution to derive path conditions ā€Ø for any of the identiļ¬ed paths. ā€¢ Constraint Solving to ļ¬nd an input that ā€¢ satisļ¬es the path condition and thus ā€¢ reaches a program location that was given. Ļ†1 = (x>y)āˆ§(x+y>10)ā€Ø Ļ†2 = Ā¬(x>y)āˆ§(x+y>10) x > y a = x a = y x+y>10 b = a return b
  • 14. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Motivation ā€¢ Directed Fuzzing: classical constraint satisfaction prob. ā€¢ Program analysis to identify program paths ā€Ø that reach given program locations. ā€¢ Symbolic Execution to derive path conditions ā€Ø for any of the identiļ¬ed paths. ā€¢ Constraint Solving to ļ¬nd an input that ā€¢ satisļ¬es the path condition and thus ā€¢ reaches a program location that was given. Ļ†1 = (x>y)āˆ§(x+y>10)ā€Ø Ļ†2 = Ā¬(x>y)āˆ§(x+y>10) x > y a = x a = y x+y>10 b = a return b Requiresā€Ø heavy-weightā€Ø machinery!
  • 15. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Overview ā€¢ Directed Fuzzing as optimisation problem! 1. Instrumentation Time: 1. Extract call graph (CG) and control-ļ¬‚ow graphs (CFGs). 2. For each BB, compute distance to target locations. 3. Instrument program to aggregate distance values.
  • 16. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Overview ā€¢ Directed Fuzzing as optimisation problem! 1. Instrumentation Time: 1. Extract call graph (CG) and control-ļ¬‚ow graphs (CFGs). 2. For each BB, compute distance to target locations. 3. Instrument program to aggregate distance values. 2. Runtime, for each input 1. collect coverage and distance information, and 2. decide how long to be fuzzed based on distance. ā€¢ If input is closer to the targets, it is fuzzed for longer. ā€¢ If input is further away from the targets, it is fuzzed for shorter.
  • 17. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Instrumentation ā€¢ Function-level target distance using call graph (CG) main a b cd e
  • 18. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Instrumentation ā€¢ Function-level target distance using call graph (CG) 1. Identify target functions in CG main a b cd e
  • 19. Presented by Abhik Roychoudhury Directed Greybox Fuzzing main a b cd e Instrumentation ā€¢ Function-level target distance using call graph (CG) 1. Identify target functions in CG 2. For each function, compute theā€Ø harmonic mean of the length ā€Ø of the shortest path to targets 1 2 0 2 3N/A
  • 20. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Instrumentation ā€¢ Function-level target distance using call graph (CG) ā€¢ BB-level target distance using CFG CFG for function b main a b cd e 1 2 0 2 3N/A
  • 21. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Instrumentation ā€¢ Function-level target distance using call graph (CG) ā€¢ BB-level target distance using control-ļ¬‚ow graph (CFG) 1. Identify target BBs andā€Ø assign distance 0ā€Ø (none in function b) CFG for function b main a b cd e 1 2 0 2 3N/A
  • 22. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Instrumentation ā€¢ Function-level target distance using call graph (CG) ā€¢ BB-level target distance using control-ļ¬‚ow graph (CFG) 1. Identify target BBs andā€Ø assign distance 0 2. Identify BBs thatā€Ø call functions CFG for function b main a b cd e 1 2 0 2 3N/A c a
  • 23. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Instrumentation ā€¢ Function-level target distance using call graph (CG) ā€¢ BB-level target distance using control-ļ¬‚ow graph (CFG) 1. Identify target BBs andā€Ø assign distance 0 2. Identify BBs thatā€Ø call functions andā€Ø assign 10*FLTD CFG for function b main a b cd e 1 2 0 2 3N/A c a 10 30
  • 24. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Instrumentation ā€¢ Function-level target distance using call graph (CG) ā€¢ BB-level target distance using control-ļ¬‚ow graph (CFG) 1. Identify target BBs andā€Ø assign distance 0 2. Identify BBs thatā€Ø call functions andā€Ø assign 10*FLTD 3. For each BB, compute harmonicā€Ø mean of (length of shortest path toā€Ø any function-calling BB + 10*FLTD). CFG for function b c a 10 30 [(1+30)-1+(2+10)-1]-1
  • 25. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Instrumentation ā€¢ Function-level target distance using call graph (CG) ā€¢ BB-level target distance using control-ļ¬‚ow graph (CFG) 1. Identify target BBs andā€Ø assign distance 0 2. Identify BBs thatā€Ø call functions andā€Ø assign 10*FLTD 3. For each BB, compute harmonicā€Ø mean of (length of shortest path toā€Ø any function-calling BB + 10*FLTD). CFG for function b 8.7 11 10 30 13 12 N/A
  • 26. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Runtime ā€¢ Function-level target distance using call graph (CG) ā€¢ BB-level target distance using control-ļ¬‚ow graph (CFG) ā€¢ Seed distance from instrumented binary CFG for function b 8.7 11 10 30 13 12 N/A
  • 27. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Runtime ā€¢ Function-level target distance using call graph (CG) ā€¢ BB-level target distance using control-ļ¬‚ow graph (CFG) ā€¢ Seed distance from instrumented binary ā€¢ Two 64-bit shared memory entries ā€¢ Aggregated BB-level distance values ā€¢ Number of executed BBs Seed Distance: 19.4 ā€Ø = (8.7+30)/2 8.7 11 10 30 13 12 N/A
  • 28. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Runtime ā€¢ Function-level target distance using call graph (CG) ā€¢ BB-level target distance using control-ļ¬‚ow graph (CFG) ā€¢ Seed distance from instrumented binary ā€¢ Two 64-bit shared memory entries ā€¢ Aggregated BB-level distance values ā€¢ Number of executed BBs 8.7 11 10 30 13 12 N/A Seed Distance: 10.4 ā€Ø = (8.7+11+10+12)/4
  • 29. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Runtime ā€¢ Function-level target distance using call graph (CG) ā€¢ BB-level target distance using control-ļ¬‚ow graph (CFG) ā€¢ Seed distance from instrumented binary ā€¢ Two 64-bit shared memory entries ā€¢ Aggregated BB-level distance values ā€¢ Number of executed BBs 8.7 11 10 30 13 12 N/A Seed Distance: 10.4 ā€Ø = (8.7+11+10+12)/4 Now that we know how toā€Ø compute seed distance, ā€” letā€™s minimise it! ā€”
  • 30. Presented by Abhik Roychoudhury Directed Greybox Fuzzing ā€¢ Background: Coverage-based Greybox Fuzzing Directed Fuzzing as ā€Ø Optimisation Problem Seed File šŸ“„
  • 31. Presented by Abhik Roychoudhury Directed Greybox Fuzzing ā€¢ Mutation Operators: ā€¢ Bitļ¬‚ips ā€¢ BoundaryValues ā€Ø (0,1,-1,INT_MAX,INT_MIN) ā€¢ Simple arithmeticsā€Ø (add/subtract 1) ā€¢ Block deletion ā€¢ Block insertion ā€¢ Background: Coverage-based Greybox Fuzzing Directed Fuzzing as ā€Ø Optimisation Problem Seed File šŸ“„
  • 32. Presented by Abhik Roychoudhury Directed Greybox Fuzzing ā€¢ Background: Coverage-based Greybox Fuzzing Directed Fuzzing as ā€Ø Optimisation Problem šŸ“„ šŸ“„šŸ“„ šŸ“„Greybox Fuzzing ā€¦ Seed Input
  • 33. Presented by Abhik Roychoudhury Directed Greybox Fuzzing ā€¢ Background: Coverage-based Greybox Fuzzing Directed Fuzzing as ā€Ø Optimisation Problem šŸ“„ šŸ“„šŸ“„ šŸ“„Greybox Fuzzing ā€¦ šŸ“„šŸ“„ Enqueue Seed Input Mutated Inputs Queue of ā€Ø ā€œinterestingā€ seeds Retain inputsā€Ø that increaseā€Ø coverage!
  • 34. Presented by Abhik Roychoudhury Directed Greybox Fuzzing ā€¢ Background: Coverage-based Greybox Fuzzing Directed Fuzzing as ā€Ø Optimisation Problem šŸ“„ šŸ“„šŸ“„ šŸ“„Greybox Fuzzing ā€¦ šŸ“„šŸ“„ EnqueueDequeue Seed Input Mutated Inputs Queue of ā€Ø ā€œinterestingā€ seeds Retain inputsā€Ø that increaseā€Ø coverage!
  • 35. Presented by Abhik Roychoudhury Directed Greybox Fuzzing ā€¢ Background: Coverage-based Greybox Fuzzing Directed Fuzzing as ā€Ø Optimisation Problem šŸ“„šŸ“„ Queue of ā€Ø ā€œinterestingā€ seeds šŸ“„šŸ“„ šŸ“„ energy low energyā€Ø - generated lessā€Ø test inputs!
  • 36. Presented by Abhik Roychoudhury Directed Greybox Fuzzing ā€¢ Background: Coverage-based Greybox Fuzzing Directed Fuzzing as ā€Ø Optimisation Problem šŸ“„šŸ“„ Queue of ā€Ø ā€œinterestingā€ seeds šŸ“„šŸ“„ šŸ“„ high energyā€Ø - generated moreā€Ø test inputs!šŸ“„ energy
  • 37. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Directed Fuzzing as ā€Ø Optimisation Problem ā€¢ Background: Coverage-based Greybox Fuzzing ā€¢ Seedā€™s energy: ā€¢ Number of inputs generated when chosen for fuzzing ā€¢ Local property: each seed has its own energy ā€¢ Power schedule: ā€¢ Assigns energy to seeds according to a pre-deļ¬ned formula ā˜… Boosted Greybox Fuzzing (AFLFast CCSā€™16) ā€¢ Assign more energy to seeds exercising low-frequency paths. ā˜… Directed Greybox Fuzzing (AFLGo CCSā€™17) ā€¢ Assign more energy to seeds that a closer to the given targets!
  • 38. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Directed Fuzzing as ā€Ø Optimisation Problem ā€¢ Background: Coverage-based Greybox Fuzzing ā€¢ Seedā€™s energy: ā€¢ Number of inputs generated when chosen for fuzzing ā€¢ Local property: each seed has its own energy ā€¢ Power schedule: ā€¢ Assigns energy to seeds according to a pre-deļ¬ned formula ā˜… Boosted Greybox Fuzzing (AFLFast CCSā€™16) ā€¢ Assign more energy to seeds exercising low-frequency paths. ā˜… Directed Greybox Fuzzing (AFLGo CCSā€™17) ā€¢ Assign more energy to seeds that a closer to the given targets!
  • 39. Presented by Abhik Roychoudhury Directed Greybox Fuzzing ā€¢ Directed Greybox Fuzzing ā€¢ Assign more energy to seeds that a closer to the given targets! ā€¢ Problem (Stochastic Gradient Descent) ā€¢ If we always assign more energy to closer seeds, ā€Ø we typically reach only a local minimum,ā€Ø but never a global minimum distance! ā€¢ Solution (Simulated Annealing) ā€¢ Sometimes assign more energy to further-away seeds! ā€¢ Approaches global minimum distance. Directed Fuzzing as ā€Ø Optimisation Problem
  • 40. Presented by Abhik Roychoudhury Directed Greybox Fuzzing ā€¢ Directed Greybox Fuzzing ā€¢ Assign more energy to seeds that a closer to the given targets! ā€¢ Problem (Stochastic Gradient Descent) ā€¢ If we always assign more energy to closer seeds, ā€Ø we typically reach only a local minimum,ā€Ø but never a global minimum distance! ā€¢ Solution (Simulated Annealing) ā€¢ Sometimes assign more energy to further-away seeds! ā€¢ Approaches global minimum distance. Directed Fuzzing as ā€Ø Optimisation Problem
  • 41. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Directed Fuzzing as ā€Ø Optimisation Problem ā€¢ Simulated Annealing (SA) ā€¢ Exploration phase: ā€¢ Energy of closer seeds similar to energyā€Ø of further-away seeds ā€¢ Exploitation phase: ā€¢ Energy of closer seeds is assigned ā€Ø to be higher and higher ā€¢ Energy of further-away seeds is ā€Ø assigned to be lower and lower ā€¢ We are increasing the ā€œimportanceā€ ā€Ø of seed distance over time.
  • 42. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Directed Fuzzing as ā€Ø Optimisation Problem ā€¢ Simulated Annealing (SA) ā€¢ Annealing from metallurgy: control the cooling of materialā€Ø to reduce defects (e.g., cracks or bubbles) in the material. ā€¢ Temperature T āˆˆ [0,1] speciļ¬es ā€œimportanceā€ of distance. ā€¢ At T=1, exploration (normal AFL) ā€¢ At T=0, exploitation (gradient descent) ā€¢ Cooling schedule controls (global) temperature ā€¢ Classically, exponential cooling.
  • 43. Presented by Abhik Roychoudhury Directed Greybox Fuzzing ā€¢ Integrating Simulated Annealing as power schedule ā€¢ In the beginning (t = 0min), ā€Ø assign the same energyā€Ø to all seeds. Directed Fuzzing as ā€Ø Optimisation Problem dene the normalized seed set of target locations Tb . s. This trace contains the ed distance d(s,Tb ) as (m,Tb ) | (3) set S of seeds to fuzz. We ,Tb ) as the dierence be- he minimum seed distance by the dierence between 0.00 0.25 0.50 0.75 1.00 0.00 0.25 0.50 0.75 1.00 Distance d(s,Tb) Energyp(s,Tb) t = 0min t =10min t = 80min
  • 44. Presented by Abhik Roychoudhury Directed Greybox Fuzzing ā€¢ Integrating Simulated Annealing as power schedule ā€¢ In the beginning (t = 0min), ā€Ø assign the same energyā€Ø to all seeds. ā€¢ Later (t=10min), assignā€Ø a bit more energy toā€Ø seeds that are closer.ā€Ø Directed Fuzzing as ā€Ø Optimisation Problem dene the normalized seed set of target locations Tb . s. This trace contains the ed distance d(s,Tb ) as (m,Tb ) | (3) set S of seeds to fuzz. We ,Tb ) as the dierence be- he minimum seed distance by the dierence between 0.00 0.25 0.50 0.75 1.00 0.00 0.25 0.50 0.75 1.00 Distance d(s,Tb) Energyp(s,Tb) t = 0min t =10min t = 80min
  • 45. Presented by Abhik Roychoudhury Directed Greybox Fuzzing ā€¢ Integrating Simulated Annealing as power schedule ā€¢ In the beginning (t = 0min), ā€Ø assign the same energyā€Ø to all seeds. ā€¢ Later (t=10min), assignā€Ø a bit more energy toā€Ø seeds that are closer. ā€¢ At exploitation (t=80min),ā€Ø assign maximal energy toā€Ø seeds that are closest. Directed Fuzzing as ā€Ø Optimisation Problem dene the normalized seed set of target locations Tb . s. This trace contains the ed distance d(s,Tb ) as (m,Tb ) | (3) set S of seeds to fuzz. We ,Tb ) as the dierence be- he minimum seed distance by the dierence between 0.00 0.25 0.50 0.75 1.00 0.00 0.25 0.50 0.75 1.00 Distance d(s,Tb) Energyp(s,Tb) t = 0min t =10min t = 80min
  • 46. Presented by Abhik Roychoudhury Directed Greybox Fuzzing ā€¢ Integrating Simulated Annealing as power schedule ā€¢ In the beginning (t = 0min), ā€Ø assign the same energyā€Ø to all seeds. ā€¢ Later (t=10min), assignā€Ø a bit more energy toā€Ø seeds that are closer. ā€¢ At exploitation (t=80min),ā€Ø assign maximal energy toā€Ø seeds that are closest. Directed Fuzzing as ā€Ø Optimisation Problem 0.00 0.25 0.50 0.75 1.00 0.00 0.25 0.50 0.75 1.00 Distance d(s,Tb) Energyp(s,Tb) t = 0min t =10min t = 80min 0.00 0.25 0.50 0.75 1.00 0 20 40 60 80 Current time t (in min) Energyp(s,Tb) d = 1 d = 0.5 d = 0
  • 47. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Results ā€¢ Patch Testing: Reach changed statements ā€¢ State-of-the-art in patch testing ā€¢ KATCH (based on Klee symbolic exec. tool) ā€¢ Experimental Setup ā€¢ Reuse original KATCH-benchmark ā€¢ Measure patch coverage (#changed BBs reached) ā€¢ Measure vuln. detection (#errors discovered) KATCH: High-Coverage Testing of Software Patches Paul Dan Marinescu Department of Computing Imperial College London, UK p.marinescu@imperial.ac.uk Cristian Cadar Department of Computing Imperial College London, UK c.cadar@imperial.ac.uk ABSTRACT One of the distinguishing characteristics of software systems is that they evolve: new patches are committed to software repositories and new versions are released to users on a continuous basis. Unfortunately, many of these changes bring unexpected bugs that break the stability of the system or aā†µect its security. In this paper, we address this problem using a technique for automatically testing code patches. Our technique combines symbolic execution with several novel heuristics based on static and dynamic program anal- !#$%'$!( Figure 1: KATCH is integrated in the software
  • 48. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Results ā€¢ Patch Testing: Reach changed statements ā€¢ State-of-the-art in patch testing ā€¢ KATCH (based on Klee symbolic exec. tool) ā€¢ Patch Coverage (#changed BBs reached) is unrelated to the concept [32]. We make a conscious eort to explain the observed phenomena and distinguish conceptual from technical origins. Moreover, we encourage the reader to consider the perspective of a security researcher who is actually handling these tools to establish whether there exists a vulnerability. 5.1 Patch Coverage We begin by analyzing the patch coverage achieved by both K and AFLG as measured by the number of previously uncovered basic blocks that were changed in the respective patch. Table 1: Patch coverage results showing the number of previ- ously uncovered targets that K and AFLG could cover in the stipulated time budget, respectively. #Changed #Uncovered Basic Blocks Changed BBs K AFLG Binutils 852 702 135 159 Diutils 166 108 63 64 Sum 1018 810 198 223 complex inp executed onl for certain a dened stru higher-quali approach [2 To unders we investiga we can see cannot cove cover. We at vidual streng dicult con be dicult t quickly exp stuck in a pa AFLG and 282 targets cover indi
  • 49. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Results ā€¢ Patch Testing: Reach changed statements ā€¢ State-of-the-art in patch testing ā€¢ KATCH (based on Klee symbolic exec. tool) ā€¢ Patch Coverage (#changed BBs reached) ā€¢ While we would expect Klee to take a substantial lead, ā€Ø AFLGo outperforms KATCH in terms of patch coverage. is unrelated to the concept [32]. We make a conscious eort to explain the observed phenomena and distinguish conceptual from technical origins. Moreover, we encourage the reader to consider the perspective of a security researcher who is actually handling these tools to establish whether there exists a vulnerability. 5.1 Patch Coverage We begin by analyzing the patch coverage achieved by both K and AFLG as measured by the number of previously uncovered basic blocks that were changed in the respective patch. Table 1: Patch coverage results showing the number of previ- ously uncovered targets that K and AFLG could cover in the stipulated time budget, respectively. #Changed #Uncovered Basic Blocks Changed BBs K AFLG Binutils 852 702 135 159 Diutils 166 108 63 64 Sum 1018 810 198 223 complex inp executed onl for certain a dened stru higher-quali approach [2 To unders we investiga we can see cannot cove cover. We at vidual streng dicult con be dicult t quickly exp stuck in a pa AFLG and 282 targets cover indi
  • 50. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Results ā€¢ Patch Testing: Reach changed statements ā€¢ State-of-the-art in patch testing ā€¢ KATCH (based on Klee symbolic exec. tool) ā€¢ Patch Coverage (#changed BBs reached) ā€¢ While we would expect Klee to take a substantial lead, ā€Ø AFLGo outperforms KATCH in terms of patch coverage. ā€¢ BUT: Together they cover 42% and 26% ā€Ø more than AFLGo and KATCH individually. ā€Ø They complement each other!ā€Ø oject Tools diff, sdiff, diff3, cmp ogram Size 42,930 LoC n Commits 175 commits from Novā€™09ā€“Mayā€™12 GNU Diutils oject Tools addr2line, ar, cxxfilt, elfedit, nm, objcopy, objdump, ranlib, readelf size, strings, strip ogram Size 68,830 LoC + 800kLoC from libraries n Commits 181 commits from Aprā€™11ā€“Augā€™12 GNU Binutils K ā€” 59 139 84 ā€” AFLG
  • 51. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Results ā€¢ Patch Testing: Reach changed statements ā€¢ State-of-the-art in patch testing ā€¢ KATCH (based on Klee symbolic exec. tool) ā€¢ Patch Coverage (#changed BBs reached) ā€¢ Vulnerability Detection (#errors discovered) As future work, we are planning to integrate symbolic-execution- based directed whitebox fuzzing and directed greybox fuzzing to achieve a directed fuzzing technique that is both very eective and very ecient in terms of reaching pre-specied target locations. We believe that such an integration would be superior to each technique individually. An integrated directed fuzzing technique that leverages both symbolic execution and search as optmization problem would be able to draw on their combined strengths to mitigate their indiviual weaknesses. Driller [38] is an example of an (undirected) fuzzer that integrates the AFL greybox fuzzer and the K whitebox fuzzer. 5.2 Vulnerability Detection Table 2: Showing the number of previously unreported bugs found by AFLG (reported Aprā€™2017) in addition to the num- ber of bug reports for K (reported Febā€™2013). K AFLG #Reports #Reports14 #New Reports #CVEs Binutils 7 4 12 7 Diutils 0 N/A 1 0 Sum 7 4 13 7 AFLG found 13 previously unreported bugs in addition to 4 of Table 3: Bug rep Report-ID Binutils 21408 21409 21412 21414 21415 21417 Diutils http://lists.g We attribute m to the eciency of program analysis a magnitute more in is the runtime che error detection mec the program when we instrumented o Sanitizer (ASAN). I e.g., by reading be writing memory th a SEGFAULT even fuzzer uses this sig for a generated in (i.e., interprets) th and uses constrain
  • 52. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Results ā€¢ Patch Testing: Reach changed statements ā€¢ State-of-the-art in patch testing ā€¢ KATCH (based on Klee symbolic exec. tool) ā€¢ Patch Coverage (#changed BBs reached) ā€¢ Vulnerability Detection (#errors discovered) ā€¢ AFLGo found 13 previously unreported bugs (7 CVEs) ā€Ø in addition to 4 of the 7 bugs that were found by KATCH. As future work, we are planning to integrate symbolic-execution- based directed whitebox fuzzing and directed greybox fuzzing to achieve a directed fuzzing technique that is both very eective and very ecient in terms of reaching pre-specied target locations. We believe that such an integration would be superior to each technique individually. An integrated directed fuzzing technique that leverages both symbolic execution and search as optmization problem would be able to draw on their combined strengths to mitigate their indiviual weaknesses. Driller [38] is an example of an (undirected) fuzzer that integrates the AFL greybox fuzzer and the K whitebox fuzzer. 5.2 Vulnerability Detection Table 2: Showing the number of previously unreported bugs found by AFLG (reported Aprā€™2017) in addition to the num- ber of bug reports for K (reported Febā€™2013). K AFLG #Reports #Reports14 #New Reports #CVEs Binutils 7 4 12 7 Diutils 0 N/A 1 0 Sum 7 4 13 7 AFLG found 13 previously unreported bugs in addition to 4 of Table 3: Bug rep Report-ID Binutils 21408 21409 21412 21414 21415 21417 Diutils http://lists.g We attribute m to the eciency of program analysis a magnitute more in is the runtime che error detection mec the program when we instrumented o Sanitizer (ASAN). I e.g., by reading be writing memory th a SEGFAULT even fuzzer uses this sig for a generated in (i.e., interprets) th and uses constrain
  • 53. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Results ā€¢ Crash Reproduction: Exercise stack trace ā€¢ State-of-the-art in crash reproduction ā€¢ BugRedux (based on Klee symbolic exec. tool) ā€¢ Experimental Setup ā€¢ Reuse original BugRedux-benchmark ā€¢ Determine whether or not crash can be reproduced Software developer Instrumenter Application Instrumented application Crash report (execution data) Analyzer BugRedux Test input Debugging tool Software tester Figure 4. Intuitive high-level view of BUGREDUX. Test input Oracle
  • 54. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Results ā€¢ Crash Reproduction: Exercise stack trace ā€¢ State-of-the-art in crash reproduction ā€¢ BugRedux (based on Klee symbolic exec. tool) ā€¢ Experimental Setup ā€¢ Reuse original BugRedux-benchmark ā€¢ Determine whether or not crash can be reproduced experimental setup, starting conguration, and timeouts. BugRedux [18] is a directed whitebox fuzzer based on K, takes as input a sequence of program statements, and generates as output a test case that exercises that sequence and crashes the program. It was shown that BugRedux works best of the complete method-call sequence is provided that lead to the crash. However, as discussed earlier often only the stack-trace is available, which does not contain methods that have already ā€œreturnedā€, i.e., nished execution. Hence, for our comparison, we set the method-calls in the stack trace as targets. Despite our request for all subjects from the original dataset, only a subset of nine subjects could be located for us. For two subjects (exim, xmail), we could not obtain the stack-trace that would specify the target locations. Specically, the crash in exim can only be reproduced on 32bit architectures while the crash in xmail overows the stack such that the stack-trace is overridden. The results for the remaining seven subjects are shown in Table 6. Table 6: Bugs reproduced for the original BugRedux subjects Subjects BugRedux AFLG Comments sed.fault1 7 7 Takes two les as input sed.fault2 7 3 grep 7 3 gzip.fault1 7 3 gzip.fault2 7 3 ncompress 3 3 polymorph 3 3 same benchmarks that th in the original papers [18 The second concern is a study minimizes system nal validity for fuzzer exp However, for our experi was readily available, suc Binutils and the K ex OSS-Fuzz experiments, a classically provides for th when comparing two fuzz seed corpus such that bot Second, like implementati faithfully implement the shown in the comparison The third concern is co a test measures what it c note that results of tool co grain of salt. An empirical implementations of two c selves. Improving the ec fuzzer may only be a que lated to the concept [32]. explain the observed phen technical origins. Moreov the perspective of a secur these tools to establish w AFLGo reproduces ā€Ø 3 times more crashes!
  • 55. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Result Summary ā€¢ Our directed greybox fuzzer (AFLGo) outperforms ā€Ø symbolic execution-based directed fuzzers (KATCH BugRedux) ā€¢ in terms of reaching more target locations and ā€¢ in terms of detecting more vulnerabilities, ā€¢ on their own, original benchmark sets.
  • 56. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Conclusion Presented by Abhik Roychoudhury Directed Greybox Fuzzing Motivation ā€¢ Directed Fuzzing: classical constraint satisfaction prob. ā€¢ Program analysis to identify program paths that reach given program locations. ā€¢ Symbolic Execution to derive path conditions for any of the identiļ¬ed paths. ā€¢ Constraint Solving to ļ¬nd an input that ā€¢ satisļ¬es the path condition and thus ā€¢ reaches a program location that was given. Requiresā€Ø heavy-weightā€Ø machinery! Presented by Abhik Roychoudhury Directed Greybox Fuzzing Overview ā€¢ Directed Fuzzing as optimisation problem! 1. Instrumentation Time: 1. Extract call graph (CG) and control-ļ¬‚ow graphs (CFGs). 2. For each BB, compute distance to target locations. 3. Instrument program to aggregate distance values. 2. Runtime, for each input 1. collect coverage and distance information, and 2. decide how long to be fuzzed based on distance. ā€¢ If input is closer to the targets, it is fuzzed for longer. ā€¢ If input is further away from the targets, it is fuzzed for shorter. Presented by Abhik Roychoudhury Directed Greybox Fuzzing ā€¢ Integrating Simulated Annealing as power schedule ā€¢ In the beginning (t = 0min), ā€Ø assign the same energyā€Ø to all seeds. ā€¢ Later (t=10min), assignā€Ø a bit more energy toā€Ø seeds that are closer. ā€¢ At exploitation (t=80min),ā€Ø assign maximal energy toā€Ø seeds that are closest. Directed Fuzzing as ā€Ø Optimisation Problem 0.00 0.25 0.50 0.75 1.00 0.00 0.25 0.50 0.75 1.00 Distance d(s,Tb) Energyp(s,Tb) t = 0min t =10min t = 80min 0.00 0.25 0.50 0.75 1.00 0 20 40 60 80 Current time t (in min) Energyp(s,Tb) d = 1 d = 0.5 d = 0 Presented by Abhik Roychoudhury Directed Greybox Fuzzing Result Summary ā€¢ Our directed greybox fuzzer (AFLGo) outperforms ā€Ø symbolic execution-based directed fuzzers (KATCH BugRedux) ā€¢ in terms of reaching more target locations and ā€¢ in terms of detecting more vulnerabilities, ā€¢ on their own, original benchmark sets. *Tool comparisons should always be taken with a grain of salt. *
  • 57. Presented by Abhik Roychoudhury Directed Greybox Fuzzing Conclusion Presented by Abhik Roychoudhury Directed Greybox Fuzzing Motivation ā€¢ Directed Fuzzing: classical constraint satisfaction prob. ā€¢ Program analysis to identify program paths that reach given program locations. ā€¢ Symbolic Execution to derive path conditions for any of the identiļ¬ed paths. ā€¢ Constraint Solving to ļ¬nd an input that ā€¢ satisļ¬es the path condition and thus ā€¢ reaches a program location that was given. Requiresā€Ø heavy-weightā€Ø machinery! Presented by Abhik Roychoudhury Directed Greybox Fuzzing Overview ā€¢ Directed Fuzzing as optimisation problem! 1. Instrumentation Time: 1. Extract call graph (CG) and control-ļ¬‚ow graphs (CFGs). 2. For each BB, compute distance to target locations. 3. Instrument program to aggregate distance values. 2. Runtime, for each input 1. collect coverage and distance information, and 2. decide how long to be fuzzed based on distance. ā€¢ If input is closer to the targets, it is fuzzed for longer. ā€¢ If input is further away from the targets, it is fuzzed for shorter. Presented by Abhik Roychoudhury Directed Greybox Fuzzing ā€¢ Integrating Simulated Annealing as power schedule ā€¢ In the beginning (t = 0min), ā€Ø assign the same energyā€Ø to all seeds. ā€¢ Later (t=10min), assignā€Ø a bit more energy toā€Ø seeds that are closer. ā€¢ At exploitation (t=80min),ā€Ø assign maximal energy toā€Ø seeds that are closest. Directed Fuzzing as ā€Ø Optimisation Problem 0.00 0.25 0.50 0.75 1.00 0.00 0.25 0.50 0.75 1.00 Distance d(s,Tb) Energyp(s,Tb) t = 0min t =10min t = 80min 0.00 0.25 0.50 0.75 1.00 0 20 40 60 80 Current time t (in min) Energyp(s,Tb) d = 1 d = 0.5 d = 0 Presented by Abhik Roychoudhury Directed Greybox Fuzzing Result Summary ā€¢ Our directed greybox fuzzer (AFLGo) outperforms ā€Ø symbolic execution-based directed fuzzers (KATCH BugRedux) ā€¢ in terms of reaching more target locations and ā€¢ in terms of detecting more vulnerabilities, ā€¢ on their own, original benchmark sets. *Tool comparisons should always be taken with a grain of salt. * Questions?