MichaelEddington Agenda Introduction Whyarewefuzzing? - - PowerPoint PPT Presentation

michael eddington agenda
SMART_READER_LITE
LIVE PREVIEW

MichaelEddington Agenda Introduction Whyarewefuzzing? - - PowerPoint PPT Presentation

MichaelEddington Agenda Introduction Whyarewefuzzing? Typesofexistingfuzzers Fuzzing,process AdoptionRisks Fuzzingcosts Pullingitalltogether


slide-1
SLIDE 1

Michael
Eddington


slide-2
SLIDE 2

Agenda


  • Introduction

  • Why
are
we
fuzzing?

  • Types
of
existing
fuzzers

  • Fuzzing,
process

  • Adoption
Risks

  • Fuzzing
costs

  • Pulling
it
all
together

slide-3
SLIDE 3

ROI^2!


Why
are
we
fuzzing?


slide-4
SLIDE 4

All
about
the
bugs!


  • …Or
really
Bug
Cost…

  • Fuzzing
is
about
finding
bugs

  • Fuzzing
is
repeatable

  • Fuzzing
*should*
be
easy
on
the
wallet


 Cost
per
Bug


slide-5
SLIDE 5

Types
of
existing
fuzzers


slide-6
SLIDE 6

Types
of
Fuzzers


  • Only
creates
files
on
disk

  • FileH/FileP


File


  • Generates
network
packets

  • TAOF,
Sully


Network


  • Pluggable
I/O
interfaces

  • Peach


General


  • Single
target
fuzzer

  • “Fuzzer
for
LDAP”


Custom


slide-7
SLIDE 7

Open
Source
Fuzzers


  • Lots
to
choose
from

  • More
every
year

  • Bob’s
Taco
Fuzzer!

slide-8
SLIDE 8

Open
Source
Fuzzers


Concept
 Creation
 Present
 Discard


slide-9
SLIDE 9

..So
what’s
left?


  • Small
grab
bag
of
fuzzers

  • Which
should
we
use?

  • Do
they
finds
the
bugs?

slide-10
SLIDE 10

…introducing…


File
 Network
 General
 Custom/One‐off
 FileH/FileP
 Sulley
 Peach
 AxMan
 FileFuzz
 GPF
 SPIKE
 DOM‐Hanoi
 EFS
 Fuzzled
 Hamachi
 TAOF
 Fuzzware
 Mangleme
 Querub


…open
source
fuzzers…


slide-11
SLIDE 11

…introducing…


File
 Network
 General
 Custom/One‐off
 FileH/FileP
 Sulley
 Peach
 AxMan
 FileFuzz
 GPF
 SPIKE
 DOM‐Hanoi
 EFS
 Fuzzled
 Hamachi
 TAOF
 Fuzzware
 Mangleme
 Querub


…open
source
fuzzers…


Actively
Maintained
 Bug
Fixes
Only
 Unknown
 Un‐Maintained,
but
used


slide-12
SLIDE 12

Commercial
Fuzzers


  • Mu
Dynamics
(aka
Mu
Security)


 Network
only!


  • beSTORM


 General


  • Codenomicon


 The
general
fuzzer
that
isn’t
a
fuzzer


slide-13
SLIDE 13

One‐off
fuzzers


  • Dom‐Hanoi

  • Hamachi

  • Mangleme

  • AxMan

  • Sometimes
needed
but…

  • Where
are
the
mutations!?

slide-14
SLIDE 14

Fuzzing,
the
process


slide-15
SLIDE 15

The
Process


  • Investigate

  • Modeling

  • Validate

  • Monitor

  • Run

  • Results

slide-16
SLIDE 16

Investigate


  • Determine
what
needs
fuzzing

  • Mapping
fuzzer
capability
to
need

slide-17
SLIDE 17

Modeling


  • Model
data
of
our
system


 Data
Types
  Relationships
(size,
count,
offset)
  Etc.


  • Model
state
of
our
system


 Send,
Receive,
Call,
etc.


  • Most
of
your
time
is
spent
here


 Unless
a
model
already
exists!


slide-18
SLIDE 18

Modeling


  • Large
difference
between
fuzzers


 Language
(Code
vs.
XML
vs.
Custom)
  Extent
of
modeling
allowed
  Tools


 GUI
Tools
  Format
‐>
Model
converters


slide-19
SLIDE 19

Modeling
Examples


  • Peach
–
XML


<DataModel
name="Example">
 

<Number
size="8"
signed="true">
 



<Relation
type="size"
of="Name"/>
 

</Number>
 

<String
name="Name"
value="John
Doe"
/>
 </DataModel>


slide-20
SLIDE 20

Modeling
Examples


  • Sulley
–
Python/SPIKE


s_size("Name",
length=1,
fuzzable=True)
 if
s_block_start("Name"):
 



s_string("John
Doe")
 s_block_end()


slide-21
SLIDE 21

Validate


  • Verify
model
matches
reality

  • Are
tools
provided?

  • This
is
critical!!

slide-22
SLIDE 22

Validate


Validation
Tools
 Peach
 GUI
Tool
&
Debug
Ouput
 Sulley
 Coverage
analysis
 SPIKE
 Fuzzled
 Fuzzware
 GPF
 EFS
 N/A
 TAOF
 Mu
Security
 Codenomicon
 beSTORM


slide-23
SLIDE 23

Monitor


  • Sending
data
is
just
the
beginning

  • Fault
detection

  • Data
collection

  • Complex
setup
support

slide-24
SLIDE 24

BlackBerry
Example


Fuzz
Data
 Monitoring
 Target


slide-25
SLIDE 25

Monitor


  • Basic
monitoring:


 Debugger
  Network
capture


  • Advanced
monitoring


 Easily
pluggable
  VM
Control


slide-26
SLIDE 26

Monitor


Debug
 Network
 VM
 Extensible
 Peach
 Sulley
 SPIKE
 Fuzzled
 Fuzzware
 GPF
 EFS
 TAOF
 Mu
Security
 Codenomicon
 beSTORM


slide-27
SLIDE 27

Run


  • Joined
at
the
hip
with
Monitoring

  • Can
fuzzer
continue
past
fault?

  • Can
we
run
in
“parallel”
mode?

slide-28
SLIDE 28

Parallel
Runs


  • Single
iteration
from
5
to
60
seconds
or
more

  • Target
iterations:
250,000
‐>
500,000


 500,000
tests
*
30
seconds/test
=
174
days!
  Parallel
by
10
=
17
days
  Parallel
by
20
=
9
days


  • Run
across
multiple
machines


 Entry:
10
to
100
  Advanced:
100
to
10,000+


slide-29
SLIDE 29

Run


Windows
 Unix/ OSX
 Kernel
 Symbols
 Parallel
 Process
 Restart
 Peach
 WinDbg
 VDB
 Win
 Win
 Sulley
 System
 SPIKE
 Fuzzled
 Fuzzware
 WinDbg
 Win
 GPF
 EFS
 System
 TAOF
 System
 Mu
Security
 Codenomicon
 beSTORM


slide-30
SLIDE 30

Results


  • Time
intensive
to
sort
hundreds
of
crashes

  • Many
crashes
not
interesting

  • Many
crashes
are
duplicates

  • Crash
Analysis!!

slide-31
SLIDE 31

Crash
Analysis


  • Bucketing
of
duplicate
crashes


 Hundreds
to
thousands
of
duplicates


  • Analysis
of
exploitability

  • Microsoft’s
!exploitable
for
WinDbg


 Peach
  ???


slide-32
SLIDE 32

Results


Group
Duplicates
 Crash
Analysis
 Peach
 Sulley
 SPIKE
 Fuzzled
 Fuzzware
 GPF
 EFS
 TAOF
 Mu
Security
 Codenomicon
 beSTORM


slide-33
SLIDE 33

Adoption
Risks


slide-34
SLIDE 34

Adoption
Risks


  • Sustainability

  • Usability
or
maturity

  • Training
&
Support

  • License
Restrictions

slide-35
SLIDE 35

Sustainability


  • How
many
years
has
tool
existed?

  • When
was
last
release?

  • Does
project
have
commercial
backing?

  • How
many
active
leaders?

  • Active
community?


 Forums,
mailing
lists,
etc.


slide-36
SLIDE 36

Sustainability


Current
 Version
 Last
Release
 Date
 Years
 Available
 Commercial
 Active
 Community
 Peach
 2.3
 2009
 5
 Yes
 Sulley
 ?
 2009*
 2
 SPIKE
 2.9
 2004
 7
 Fuzzled
 1.1
 2007
 2
 Fuzzware
 1.5
 2009
 1
 GPF
 4.6
 2007
 2
 EFS
 ?
 2007
 2
 TAOF
 0.3.2
 2007
 2
 Mu
Security
 ?
 2009
 4
 Yes
 Codenomicon
 3.0
 2009
 8
 Yes
 beSTORM
 3.7
 2008
 5
 Yes


slide-37
SLIDE 37

Usability


  • …possibly
Maturity?

  • Documented?

  • Online
support
forums?

Do
people
answer


questions?


  • Publications?
(e.g.
books)

  • Are
external
users
a
priority?


 Vs.
Internal
tool
released
publicly


slide-38
SLIDE 38

Support
&
Training


  • Training


 Get
staff
going
fast
  Taking
it
to
next
level


  • Support


 Bugs,
etc.
  Assistance


slide-39
SLIDE 39

License
Restrictions


  • Code
changes

  • Integrate
into
development
cycle

  • Taint
issues?

slide-40
SLIDE 40

License
Restrictions


  • GPL


 Must
release
changes
  Taint
issues?


  • MIT


 No
restrictions


  • BSD


 No
restrictions


  • Commercial


 Should
be
okay
for
use


slide-41
SLIDE 41

Adoption
Risks


Sustainability
 Usability
 Training
 Support
 License
 Peach
 4
 4
 Yes
 Yes
 MIT
 Sulley
 3
 4
 GPL
 SPIKE
 1
 1
 GPL
 Fuzzled
 2
 2
 GPL
 Fuzzware
 3
 4
 ~BSD
 GPF
 1
 3
 GPL
 EFS
 1
 2
 GPL
 TAOF
 2
 3
 GPL
 Mu
Security
 4
 5
 Yes
 Yes
 Yes
 Codenomicon
 5
 5
 Yes
 Yes
 Yes
 beSTORM
 4
 5
 Yes
 Yes
 Yes


slide-42
SLIDE 42

Fuzzing
$$$
Costs


slide-43
SLIDE 43

Time
Spent
in
Order


  • 1. Modeling


Data
&
State,
aka
Creating
a
Definition


  • 2. Monitoring


Debugger
Collection


Network
capture
(or
other)


Restarting
fuzzer


  • 3. Crash
Analysis


Is
it
exploitable?


Is
it
a
duplicate?


slide-44
SLIDE 44

Upfront
Costs


Price
 Restrictions/Time
Limits
 Open
Source
 $0
 Codenomicon
 $5,000
for
5
 protocols
for
5
days
 5
days,
other
models
 available
 Mu
Security
 $50,000
for
10
 protocols;
$250,000
 for
all
protocols
 12
month
license
 beSTORM
 $15,000
per
module
 None?


slide-45
SLIDE 45

Hidden
Costs


  • Ramp‐up
Time

  • Modeling

  • Crash
Analysis

  • Paying
to
avoid
these


 But…custom
formats/protocols…


slide-46
SLIDE 46

Wrapping
Up


slide-47
SLIDE 47

SDL


  • Fuzzing
as
part
of
SDL
widely
different
from


Research
fuzzing.

Companies
have
limited
 budget,
resources,
and
time
frame.


 Need
crash
analysis
  Need
integrated
monitoring
of
target
  Need
parallel
run
ability
(for
Smart)


slide-48
SLIDE 48

Open
vs.
Commercial


  • Fuzzing
definitions
(grammars)

  • Training

  • Support

  • Consulting
Services

  • “Easy
to
use”

slide-49
SLIDE 49

And
the
winner
is…


slide-50
SLIDE 50

Q
&
A


Michael
Eddington
 mike@phed.org
 http://phed.org
 http://peachfuzzer.com
 http://leviathansecurity.com