fuzzinator - in bug we trust

19
Fuzzinator In bug we trust. Renata Hodovan Akos Kiss

Upload: renata-hodovan

Post on 08-Jan-2017

312 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Fuzzinator - In bug we trust

FuzzinatorIn bug we trust.

Renata HodovanAkos Kiss

Page 2: Fuzzinator - In bug we trust

HACKTIVITY 2

outlineWhy do you want to have a fuzzer?For a fuzzer framework, what is

… must have? … nice to have?

What does Fuzzinator have?How can you have more?

10/21/16

Page 3: Fuzzinator - In bug we trust

HACKTIVITY 3

Why do you want to fuzz?

10/21/16

Page 4: Fuzzinator - In bug we trust

HACKTIVITY 4

Why do you want to fuzz?Real issues

CrashesMemory corruptionsHangsAssertion failuresUnhandled exceptions

Reproducible issuesLarge amount of test cases with little effort

10/21/16

Page 5: Fuzzinator - In bug we trust

HACKTIVITY 5

Mandatory componentsSoftware Under TestingTest generatorTransfer mechanismMonitoring system

10/21/16

Page 6: Fuzzinator - In bug we trust

HACKTIVITY 6

Convenience functionalitiesRecognize unique issuesReduce test casesCustomize issue descriptionsReport issuesUpdate SUTs regularlySchedule multiple generators / SUTsUser friendly UI

10/21/16

Page 7: Fuzzinator - In bug we trust

HACKTIVITY 7

fuzzinatorGeneral fuzzer framework

Extra support for browsersBased on building blocksBuilding blocks are arbitrarily …

customizablereplaceable

Setup from config files

10/21/16

Page 8: Fuzzinator - In bug we trust

HACKTIVITY 8

Fuzzinator’s architecture

10/21/16

Controller

Update Job Reduce Job

SUT call

Fuzz Job

ReducerFuzzer

ISSUE

Updater

TEST

DB

Page 9: Fuzzinator - In bug we trust

HACKTIVITY 9

Building blocks – sut callsSubprocess callStream-monitored subprocess callStdin subprocess callTestRunner subprocess callPython callable

10/21/16

Page 10: Fuzzinator - In bug we trust

HACKTIVITY 10

Building blocks – SUT decoratorsExit code filterStream regex filterGDB backtrace decoratorPlatform info decoratorUnique ID decoratorAnonymize decoratorFile writer decorator

10/21/16

Page 11: Fuzzinator - In bug we trust

HACKTIVITY 11

Building blocks - fuzzersFuzzers

Random contentList directorySubprocess runnerAFL runnerPython callable

DecoratorTornado decorator

10/21/16

Page 12: Fuzzinator - In bug we trust

HACKTIVITY 12

Building blocks - reducersPicire (https://github.com/renatahodovan/picire)

ParallelLine or character based

Picireny (https://github.com/renatahodovan/picireny)ParallelGrammar based

10/21/16

Page 13: Fuzzinator - In bug we trust

HACKTIVITY 13

How to configure your fuzzer?Regular .ini syntaxSection types

SUT sectionsFuzz sectionsBuilding block parameter sectionsFuzzinator section

10/21/16

Page 14: Fuzzinator - In bug we trust

HACKTIVITY 14

Example test generatorsRandom content

fuzzinator.fuzzer.RandomContentGenerinator:RATS

Random Attributes, Tags & StyleGeneration based fuzzerhttps://github.com/renatahodovan/generinator-rats

10/21/16

Page 15: Fuzzinator - In bug we trust

15

Sut section

10/21/16 HACKTIVITY

[sut.webkit]call=fuzzinator.call.SubprocessCallcall.decorate(0)=fuzzinator.call.StreamRegexFiltercall.decorate(1)=fuzzinator.call.SubprocessPropertyDecoratorcall.decorate(2)=fuzzinator.call.PlatformInfoDecoratorreduce=fuzzinator.reduce.Picire

[sut.webkit.call]cwd=${webkit:path}command=./WebKitBuild/Debug/bin/MiniBrowser {test}

[sut.webkit.call.decorate(0)]stderr_patterns=["(?P<msg>ASSERTION FAILED: [^\n]+)\n(?P<file>[^()\n]+)", ...]

[sut.webkit.call.decorate(1)]property=versioncommand=git rev-parse --short HEADcwd=${webkit:path}

Page 16: Fuzzinator - In bug we trust

16

Fuzz section

10/21/16 HACKTIVITY

[fuzz.generinator_rats_webkit]sut=sut.webkitfuzzer=fuzzinator.fuzzer.SubprocessRunnerfuzzer.decorate(0)=fuzzinator.fuzzer.TornadoDecoratorbatch=100

[fuzz.generinator_rats_webkit.fuzzer.init]outdir=${fuzzinator:work_dir}/generinator_rats/{uid}command=generinator-rats -o ${outdir} -n ${fuzz.generinator_rats_webkit:batch}

[fuzz.generinator_rats_webkit.fuzzer.decorate(0)]port=8000

Page 17: Fuzzinator - In bug we trust

HACKTIVITY 17

Screenshot– main window

10/21/16

Page 18: Fuzzinator - In bug we trust

HACKTIVITY 18

Screenshot – report window

10/21/16

Page 19: Fuzzinator - In bug we trust

HACKTIVITY 19

contacts

10/21/16