SlideShare a Scribd company logo
1 of 20
Download to read offline
Fuzz-testing: A hacker's approach to making
your code more secure
Pascal Zenker @parzel2 <pascal.zenker@posteo.de>
Vincent Ulitzsch @vinulium <vincent@srlabs.de>
Berlin | November 12 - 13, 2019
Who are we?
2
▪ Researcher at Security Research Labs (srlabs.de)
▪ Found multiplevulnerabilitiesin OSS with fuzzing
▪ Presented about fuzz-testing at BlackhatUSA
▪ Degree in Computer Science from TU Berlin
Vincent Ulitzsch / @vinulium / vincent@srlabs.de
▪ IndependentSecurity Researcher
▪ Member of Synack Red Team
▪ Offensive Security Certified Professional
▪ Degree in Computer Science from RWTH Aachen
Pascal Zenker / @parzel2 / pascal.zenker@postoe.de
You should fuzz-test your programs to tame complexityand identify vulnerabilities and bugs
early in the development process
3
▪ Software is too complex to manuallyensure your
software is bug-free
▪ As a defender/programmer, you need to fix every
mistake. Attackers only need one bug.
▪ Developerscan easily find bugs that affect the building
process and functionalityof the software, but corner
cases remain undetected.
▪ Code size increases but manualwork does not scale
Without fuzzing
▪ Fuzz testing fights complexity with computational brute
force.
▪ Attackers use fuzzers.We, as defenders, should as well.
▪ Fuzzing’s randomnessdetects corner cases.
▪ By integratingfuzz-testing in your software
developmentlifecycle and continuouslyfuzzing your
software, you can detect bugs early in the development
process.
With fuzzing
Fuzz-testingcan be used to identify high severity vulnerabilities
4
Researchers from Google leveraged fuzz-testing to find
security vulnerabilitiesin iMessage
Fuzzing was used to identify vulnerabilities
in libstagefright
Fuzz testing can be used to identify vulnerabilities in applications
5
We show you how fuzz testing can be used to identify vulnerabilities in
▪ Vulnerabilities: XSS, SQLi, Command Injection, …
▪ Tools: ffuf, Burp Suite, custom fuzzers
Web applicationsBinary applications
▪ Vulnerabilities: Memory corruptions, Denial of Service
▪ Often found through coverage guided fuzzing
▪ Tools: AFL, libfuzzer, go-fuzz, honggfuzz
Fuzzing engine
Seed the fuzzing engine with
valid program input
Fuzzing engine observes
behavior and saves
interesting testcases, e.g.,
crashing inputs
Fuzzing engine takes some
program input, mutates it,
runs it against the target
Fuzz-testingis a technique to identify vulnerabilities via mutating valid program input
6
Seeds Mutate + run input Target
Interesting
cases
c
a cb
Observe behaviour
ba
Fuzzing engine
Seed the fuzzing engine with
valid program input
Fuzzing engine observes
behavior and saves
interesting testcases, e.g.,
crashing inputs
Fuzzing engine takes some
program input, mutates it,
runs it against the target
Add inputs that yield new
coverage to input queue
Coverage guided fuzzing mutates seeds and adds them to a corpus if they yield new code
coverage
7
Seeds Mutate + run input Target
Interesting
cases
c
a cb d
Observe behaviour
ba
New
coverage
d
By adding inputs that yield new coverage to the seed collection, coverage guided fuzzing can
detect bugs not detected by usual fuzzers
8
Fuzzing engine
Seeds Mutate + run input Target
Interesting
cases
Observe behaviour
New
coverage
if (input[0]==‘F’){
void parse_input(char *input){
if(input[1]==‘U’){
if(input[2]==‘Z’){
if(input[3]==‘Z’){
//CRASH here
Seed queue
Input: F
By adding inputs that yield new coverage to the seed collection, coverage guided fuzzing can
detect bugs not detected by usual fuzzers
9
Fuzzing engine
Seeds Mutate + run input Target
Interesting
cases
Observe behaviour
New
coverage
if (input[0]==‘F’){
void parse_input(char *input){
if(input[1]==‘U’){
if(input[2]==‘Z’){
if(input[3]==‘Z’){
//CRASH here
Seed queue
Input: F
Input: FU
By adding inputs that yield new coverage to the seed collection, coverage guided fuzzing can
detect bugs not detected by usual fuzzers
10
Fuzzing engine
Seeds Mutate + run input Target
Interesting
cases
Observe behaviour
New
coverage
if (input[0]==‘F’){
void parse_input(char *input){
if(input[1]==‘U’){
if(input[2]==‘Z’){
if(input[3]==‘Z’){
//CRASH here
Seed queue
Input: F
Input: FU
Input: FUZ
By adding inputs that yield new coverage to the seed collection, coverage guided fuzzing can
detect bugs not detected by usual fuzzers
11
if (input[0]==‘F’){
void parse_input(char *input){
if(input[1]==‘U’){
if(input[2]==‘Z’){
if(input[3]==‘Z’){
//CRASH here
Seed queue
Input: F
Input: FU
Input: FUZ
Input: FUZZ
Fuzzing engine
Seeds Mutate + run input Target
Interesting
cases
Observe behaviour
New
coverage
A typical binary fuzzing run can be divided into five steps:Target selection, building, seed
selection, fuzzing, triaging
12
▪ Select functions
that parse complex
input
▪ Write functions
that takes fuzzer
data and passes it
to the function
under test
▪ Fuzzing needs a set
of seeds to start:
Seeds should be
validinput to
program
▪ Seeds should be
small and diverse
▪ C/C++: afl-fuzz,
libfuzzer, honggfuzz
▪ Go: go-fuzz
▪ Rust: honggfuzz-rs
▪ [...]
▪ Prepare target so
that we can easily
measure coverage.
▪ Usually done at
compile time:
Compiler options
often come with
the fuzzer
Triage crashes!Fuzz/Stress test!Select seeds
Build with
instrumentation
Select target functions
Write harness
1 42 3 5
Fuzzingconsists of five steps
Demo: Using libfuzzer to identify a memory corruption bug in a C-program
13
Demo
Fuzz-testingcan be used to stress-testweb applications and identify various vulnerabilities, e.g.
SQL injections, XSS, SSRF, SSTI
14
Seeds
Fuzzing
engine Target
Interesting
cases
Observe response: Identify anomalies
XSS
SQLi
SSTI
Different location
Response time
Evaluated expression
Run input
Web application fuzzing consists of four steps:Selecting a target endpoints, select an
appropriate input structure, fuzzing and triaging
15
▪ Select parameters that
interact with the website
e.g. reflected valueor
databaseinteraction
▪ ffuf
▪ Burp Suite
▪ Custom fuzzer with
Selenium using Firefox /
Chrome headless
▪ [...]
▪ Identify if anomaliesare
vulnerabilities,e.g., XSS
▪ Identify and fix root
cause of those
vulnerabilities
▪ Fuzzing needs input that
can produce anomalies
▪ A simple approachis to
use a wordlist with a lot
of inputs to stress our
filters
▪ More complex services
or parsers can be fuzzed
with e.g. grammar-based
approaches
Triage anomaliesFuzz/Stress test!
Select appropriateinput
structure
Select target endpoint
1 42 3
Fuzzingconsists of four steps
XSS is the reflected insertion of malicious Javascript
16
?search=test
Input
Result
</h1>Displaying results for
test</html>
Source
?search=<script>alert("XSS")
</script>
</h1>Displaying results for
<script>alert("XSS")</script>
</html>
<?php
$search_term = $_GET["search"];
echo "<html>";
echo "<h1>Search Results</h1>";
echo "Displaying results for".
$search_term;
echo "</html>";
?>
Demo: Identifying a XSS vulnerability with a simple custombuild API fuzzer
17
Demo
The fully automated nature of fuzz-testingcan be leveraged to integrate fuzz-testing into
continuous integration as addition to classical software testing
18
Run software tests & fuzzing after
each code change
Fuzzing and software testing
complement each other: Add unit
tests for bugs found by fuzzing
Fix bugs found by software testing
and fuzzing. Reiterate the process
a
b
c
BuildCode Release
Software
testing
Fuzz
testing
b
a
c
A dedicated fuzzing server can easily be integrated into your continuous integration setup
19
Code should be pulled and fuzzed
from code repository on a regular
basis
a
Fuzzing setup stores seed corpus
and old crashes found
c
Run seed corpus and old crashes
against current version to prevent
regressions
b
Dedicated fuzzing server
Old fuzzer outputs
Software repository
Seeds Crashes
a
c
b
Key Takeaways
20
1
Integrate fuzz-testinginto your software development lifecycle to detect bugs
early in the development process
2 Fuzz-testingcan fight software complexity with computationalpower
3 Fuzzing is easy: Start small and improve!
Thank you for your attention!
@vinulium/ vincent@srlabs.de
@parzel2 / pascal.zenker@posteo.de
https://github.com/parzel/codemotion-fuzzing-demo

More Related Content

What's hot

Access Control List 1
Access Control List 1Access Control List 1
Access Control List 1Kishore Kumar
 
CNIT 123: 6: Enumeration
CNIT 123: 6: EnumerationCNIT 123: 6: Enumeration
CNIT 123: 6: EnumerationSam Bowne
 
Adli Bilişim İnceleme Süreçleri
Adli Bilişim İnceleme SüreçleriAdli Bilişim İnceleme Süreçleri
Adli Bilişim İnceleme Süreçleriİsmail ŞEN
 
How to configure SSH on Cisco switch
How to configure SSH on Cisco switchHow to configure SSH on Cisco switch
How to configure SSH on Cisco switchtcpipguru
 
dynamic host configuration protocol
dynamic host configuration protocoldynamic host configuration protocol
dynamic host configuration protocolkinish kumar
 
Introduction to Ostinato , network packet crafting and generator.
Introduction to Ostinato, network packet crafting and generator.Introduction to Ostinato, network packet crafting and generator.
Introduction to Ostinato , network packet crafting and generator.Kentaro Ebisawa
 
pfSense presentation
pfSense presentationpfSense presentation
pfSense presentationSimon Vass
 
Backup & Restore TFTP Cisco Packet Tracert
Backup & Restore TFTP Cisco Packet TracertBackup & Restore TFTP Cisco Packet Tracert
Backup & Restore TFTP Cisco Packet TracertIrmanda Dwi Prakoso
 
Grub2 Booting Process
Grub2 Booting ProcessGrub2 Booting Process
Grub2 Booting ProcessMike Wang
 
U-boot and Android Verified Boot 2.0
U-boot and Android Verified Boot 2.0U-boot and Android Verified Boot 2.0
U-boot and Android Verified Boot 2.0GlobalLogic Ukraine
 
FileMaker プラットフォームにSalesforceやkintoneなどクラウドデータ連携機能を拡張
FileMaker プラットフォームにSalesforceやkintoneなどクラウドデータ連携機能を拡張FileMaker プラットフォームにSalesforceやkintoneなどクラウドデータ連携機能を拡張
FileMaker プラットフォームにSalesforceやkintoneなどクラウドデータ連携機能を拡張CData Software Japan
 
MikroTik MTCNA
MikroTik MTCNAMikroTik MTCNA
MikroTik MTCNAAli Layth
 
Introducing NGINX App Protect (Japanese Webinar)
Introducing NGINX App Protect (Japanese Webinar)Introducing NGINX App Protect (Japanese Webinar)
Introducing NGINX App Protect (Japanese Webinar)NGINX, Inc.
 
Chapter 10 Mobile and Embedded Device Security
Chapter 10 Mobile and Embedded Device Security Chapter 10 Mobile and Embedded Device Security
Chapter 10 Mobile and Embedded Device Security Dr. Ahmed Al Zaidy
 
Access Control List & its Types
Access Control List & its TypesAccess Control List & its Types
Access Control List & its TypesNetwax Lab
 

What's hot (20)

Access Control List 1
Access Control List 1Access Control List 1
Access Control List 1
 
CNIT 123: 6: Enumeration
CNIT 123: 6: EnumerationCNIT 123: 6: Enumeration
CNIT 123: 6: Enumeration
 
Adli Bilişim İnceleme Süreçleri
Adli Bilişim İnceleme SüreçleriAdli Bilişim İnceleme Süreçleri
Adli Bilişim İnceleme Süreçleri
 
NMAP - The Network Scanner
NMAP - The Network ScannerNMAP - The Network Scanner
NMAP - The Network Scanner
 
DNSのRFCの歩き方
DNSのRFCの歩き方DNSのRFCの歩き方
DNSのRFCの歩き方
 
How to configure SSH on Cisco switch
How to configure SSH on Cisco switchHow to configure SSH on Cisco switch
How to configure SSH on Cisco switch
 
dynamic host configuration protocol
dynamic host configuration protocoldynamic host configuration protocol
dynamic host configuration protocol
 
Introduction to Ostinato , network packet crafting and generator.
Introduction to Ostinato, network packet crafting and generator.Introduction to Ostinato, network packet crafting and generator.
Introduction to Ostinato , network packet crafting and generator.
 
pfSense presentation
pfSense presentationpfSense presentation
pfSense presentation
 
Backup & Restore TFTP Cisco Packet Tracert
Backup & Restore TFTP Cisco Packet TracertBackup & Restore TFTP Cisco Packet Tracert
Backup & Restore TFTP Cisco Packet Tracert
 
Grub2 Booting Process
Grub2 Booting ProcessGrub2 Booting Process
Grub2 Booting Process
 
U-boot and Android Verified Boot 2.0
U-boot and Android Verified Boot 2.0U-boot and Android Verified Boot 2.0
U-boot and Android Verified Boot 2.0
 
DHCP
DHCPDHCP
DHCP
 
FileMaker プラットフォームにSalesforceやkintoneなどクラウドデータ連携機能を拡張
FileMaker プラットフォームにSalesforceやkintoneなどクラウドデータ連携機能を拡張FileMaker プラットフォームにSalesforceやkintoneなどクラウドデータ連携機能を拡張
FileMaker プラットフォームにSalesforceやkintoneなどクラウドデータ連携機能を拡張
 
MikroTik MTCNA
MikroTik MTCNAMikroTik MTCNA
MikroTik MTCNA
 
Ospf.ppt
Ospf.pptOspf.ppt
Ospf.ppt
 
Introducing NGINX App Protect (Japanese Webinar)
Introducing NGINX App Protect (Japanese Webinar)Introducing NGINX App Protect (Japanese Webinar)
Introducing NGINX App Protect (Japanese Webinar)
 
Chapter 10 Mobile and Embedded Device Security
Chapter 10 Mobile and Embedded Device Security Chapter 10 Mobile and Embedded Device Security
Chapter 10 Mobile and Embedded Device Security
 
Access Control List & its Types
Access Control List & its TypesAccess Control List & its Types
Access Control List & its Types
 
Cisco CCNA- DHCP Server
Cisco CCNA-  DHCP ServerCisco CCNA-  DHCP Server
Cisco CCNA- DHCP Server
 

Similar to Fuzz-testing: A hacker's approach to making your code more secure | Pascal Zenker, Vincent Ulitzsch | Codemotion Berlin 2019

[Php Camp]Owasp Php Top5+Csrf
[Php Camp]Owasp Php Top5+Csrf[Php Camp]Owasp Php Top5+Csrf
[Php Camp]Owasp Php Top5+CsrfBipin Upadhyay
 
Crash Analysis with Reverse Taint
Crash Analysis with Reverse TaintCrash Analysis with Reverse Taint
Crash Analysis with Reverse Taintmarekzmyslowski
 
Finding 0days at Arab Security Conference
Finding 0days at Arab Security ConferenceFinding 0days at Arab Security Conference
Finding 0days at Arab Security ConferenceRodolpho Concurde
 
Fuzzing Linux Kernel
Fuzzing Linux KernelFuzzing Linux Kernel
Fuzzing Linux KernelPiyush Mishra
 
The bash vulnerability practical tips to secure your environment
The bash vulnerability  practical tips to secure your environmentThe bash vulnerability  practical tips to secure your environment
The bash vulnerability practical tips to secure your environmentAlienVault
 
stackconf 2021 | Fuzzing: Finding Your Own Bugs and 0days!
stackconf 2021 | Fuzzing: Finding Your Own Bugs and 0days!stackconf 2021 | Fuzzing: Finding Your Own Bugs and 0days!
stackconf 2021 | Fuzzing: Finding Your Own Bugs and 0days!NETWAYS
 
Fuzzing: The New Unit Testing
Fuzzing: The New Unit TestingFuzzing: The New Unit Testing
Fuzzing: The New Unit TestingDmitry Vyukov
 
Fuzzing: Finding Your Own Bugs and 0days! 2.0
Fuzzing: Finding Your Own Bugs and 0days! 2.0Fuzzing: Finding Your Own Bugs and 0days! 2.0
Fuzzing: Finding Your Own Bugs and 0days! 2.0Rodolpho Concurde
 
Pentesting Using Burp Suite
Pentesting Using Burp SuitePentesting Using Burp Suite
Pentesting Using Burp Suitejasonhaddix
 
Nguyen Huu Trung - Building a web vulnerability scanner - From a hacker’s view
Nguyen Huu Trung - Building a web vulnerability scanner - From a hacker’s viewNguyen Huu Trung - Building a web vulnerability scanner - From a hacker’s view
Nguyen Huu Trung - Building a web vulnerability scanner - From a hacker’s viewSecurity Bootcamp
 
Sql Injections With Real Life Scenarious
Sql Injections With Real Life ScenariousSql Injections With Real Life Scenarious
Sql Injections With Real Life ScenariousFrancis Alexander
 
[Wroclaw #4] Fuzzing - underestimated method of finding hidden bugs
[Wroclaw #4] Fuzzing - underestimated method of finding hidden bugs[Wroclaw #4] Fuzzing - underestimated method of finding hidden bugs
[Wroclaw #4] Fuzzing - underestimated method of finding hidden bugsOWASP
 
Bug bounty null_owasp_2k17
Bug bounty null_owasp_2k17Bug bounty null_owasp_2k17
Bug bounty null_owasp_2k17Sagar M Parmar
 
Perform fuzz on appplications web interface
Perform fuzz on appplications web interfacePerform fuzz on appplications web interface
Perform fuzz on appplications web interfaceIndicThreads
 
Modern Web Security, Lazy but Mindful Like a Fox
Modern Web Security, Lazy but Mindful Like a FoxModern Web Security, Lazy but Mindful Like a Fox
Modern Web Security, Lazy but Mindful Like a FoxC4Media
 
Web application penetration testing lab setup guide
Web application penetration testing lab setup guideWeb application penetration testing lab setup guide
Web application penetration testing lab setup guideSudhanshu Chauhan
 
Pentest-Bukalapak-Marzuki Hasibuan.pdf
Pentest-Bukalapak-Marzuki Hasibuan.pdfPentest-Bukalapak-Marzuki Hasibuan.pdf
Pentest-Bukalapak-Marzuki Hasibuan.pdfMarzuki Hasibuan
 
Reverse engineering – debugging fundamentals
Reverse engineering – debugging fundamentalsReverse engineering – debugging fundamentals
Reverse engineering – debugging fundamentalsEran Goldstein
 
Breaking av software
Breaking av softwareBreaking av software
Breaking av softwareJoxean Koret
 

Similar to Fuzz-testing: A hacker's approach to making your code more secure | Pascal Zenker, Vincent Ulitzsch | Codemotion Berlin 2019 (20)

[Php Camp]Owasp Php Top5+Csrf
[Php Camp]Owasp Php Top5+Csrf[Php Camp]Owasp Php Top5+Csrf
[Php Camp]Owasp Php Top5+Csrf
 
Crash Analysis with Reverse Taint
Crash Analysis with Reverse TaintCrash Analysis with Reverse Taint
Crash Analysis with Reverse Taint
 
Finding 0days at Arab Security Conference
Finding 0days at Arab Security ConferenceFinding 0days at Arab Security Conference
Finding 0days at Arab Security Conference
 
Fuzzing Linux Kernel
Fuzzing Linux KernelFuzzing Linux Kernel
Fuzzing Linux Kernel
 
The bash vulnerability practical tips to secure your environment
The bash vulnerability  practical tips to secure your environmentThe bash vulnerability  practical tips to secure your environment
The bash vulnerability practical tips to secure your environment
 
stackconf 2021 | Fuzzing: Finding Your Own Bugs and 0days!
stackconf 2021 | Fuzzing: Finding Your Own Bugs and 0days!stackconf 2021 | Fuzzing: Finding Your Own Bugs and 0days!
stackconf 2021 | Fuzzing: Finding Your Own Bugs and 0days!
 
Fuzzing: The New Unit Testing
Fuzzing: The New Unit TestingFuzzing: The New Unit Testing
Fuzzing: The New Unit Testing
 
Fuzzing: Finding Your Own Bugs and 0days! 2.0
Fuzzing: Finding Your Own Bugs and 0days! 2.0Fuzzing: Finding Your Own Bugs and 0days! 2.0
Fuzzing: Finding Your Own Bugs and 0days! 2.0
 
Pentesting Using Burp Suite
Pentesting Using Burp SuitePentesting Using Burp Suite
Pentesting Using Burp Suite
 
Nguyen Huu Trung - Building a web vulnerability scanner - From a hacker’s view
Nguyen Huu Trung - Building a web vulnerability scanner - From a hacker’s viewNguyen Huu Trung - Building a web vulnerability scanner - From a hacker’s view
Nguyen Huu Trung - Building a web vulnerability scanner - From a hacker’s view
 
Sql Injections With Real Life Scenarious
Sql Injections With Real Life ScenariousSql Injections With Real Life Scenarious
Sql Injections With Real Life Scenarious
 
[Wroclaw #4] Fuzzing - underestimated method of finding hidden bugs
[Wroclaw #4] Fuzzing - underestimated method of finding hidden bugs[Wroclaw #4] Fuzzing - underestimated method of finding hidden bugs
[Wroclaw #4] Fuzzing - underestimated method of finding hidden bugs
 
OWASP Top10 2010
OWASP Top10 2010OWASP Top10 2010
OWASP Top10 2010
 
Bug bounty null_owasp_2k17
Bug bounty null_owasp_2k17Bug bounty null_owasp_2k17
Bug bounty null_owasp_2k17
 
Perform fuzz on appplications web interface
Perform fuzz on appplications web interfacePerform fuzz on appplications web interface
Perform fuzz on appplications web interface
 
Modern Web Security, Lazy but Mindful Like a Fox
Modern Web Security, Lazy but Mindful Like a FoxModern Web Security, Lazy but Mindful Like a Fox
Modern Web Security, Lazy but Mindful Like a Fox
 
Web application penetration testing lab setup guide
Web application penetration testing lab setup guideWeb application penetration testing lab setup guide
Web application penetration testing lab setup guide
 
Pentest-Bukalapak-Marzuki Hasibuan.pdf
Pentest-Bukalapak-Marzuki Hasibuan.pdfPentest-Bukalapak-Marzuki Hasibuan.pdf
Pentest-Bukalapak-Marzuki Hasibuan.pdf
 
Reverse engineering – debugging fundamentals
Reverse engineering – debugging fundamentalsReverse engineering – debugging fundamentals
Reverse engineering – debugging fundamentals
 
Breaking av software
Breaking av softwareBreaking av software
Breaking av software
 

More from Codemotion

Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyCodemotion
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaCodemotion
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserCodemotion
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Codemotion
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Codemotion
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Codemotion
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 - Codemotion
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Codemotion
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Codemotion
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Codemotion
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Codemotion
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Codemotion
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Codemotion
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Codemotion
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...Codemotion
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Codemotion
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Codemotion
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Codemotion
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Codemotion
 
Mike Kotsur - What can philosophy teach us about programming - Codemotion Ams...
Mike Kotsur - What can philosophy teach us about programming - Codemotion Ams...Mike Kotsur - What can philosophy teach us about programming - Codemotion Ams...
Mike Kotsur - What can philosophy teach us about programming - Codemotion Ams...Codemotion
 

More from Codemotion (20)

Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending story
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storia
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard Altwasser
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
 
Mike Kotsur - What can philosophy teach us about programming - Codemotion Ams...
Mike Kotsur - What can philosophy teach us about programming - Codemotion Ams...Mike Kotsur - What can philosophy teach us about programming - Codemotion Ams...
Mike Kotsur - What can philosophy teach us about programming - Codemotion Ams...
 

Recently uploaded

The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 

Recently uploaded (20)

The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Zenker, Vincent Ulitzsch | Codemotion Berlin 2019

  • 1. Fuzz-testing: A hacker's approach to making your code more secure Pascal Zenker @parzel2 <pascal.zenker@posteo.de> Vincent Ulitzsch @vinulium <vincent@srlabs.de> Berlin | November 12 - 13, 2019
  • 2. Who are we? 2 ▪ Researcher at Security Research Labs (srlabs.de) ▪ Found multiplevulnerabilitiesin OSS with fuzzing ▪ Presented about fuzz-testing at BlackhatUSA ▪ Degree in Computer Science from TU Berlin Vincent Ulitzsch / @vinulium / vincent@srlabs.de ▪ IndependentSecurity Researcher ▪ Member of Synack Red Team ▪ Offensive Security Certified Professional ▪ Degree in Computer Science from RWTH Aachen Pascal Zenker / @parzel2 / pascal.zenker@postoe.de
  • 3. You should fuzz-test your programs to tame complexityand identify vulnerabilities and bugs early in the development process 3 ▪ Software is too complex to manuallyensure your software is bug-free ▪ As a defender/programmer, you need to fix every mistake. Attackers only need one bug. ▪ Developerscan easily find bugs that affect the building process and functionalityof the software, but corner cases remain undetected. ▪ Code size increases but manualwork does not scale Without fuzzing ▪ Fuzz testing fights complexity with computational brute force. ▪ Attackers use fuzzers.We, as defenders, should as well. ▪ Fuzzing’s randomnessdetects corner cases. ▪ By integratingfuzz-testing in your software developmentlifecycle and continuouslyfuzzing your software, you can detect bugs early in the development process. With fuzzing
  • 4. Fuzz-testingcan be used to identify high severity vulnerabilities 4 Researchers from Google leveraged fuzz-testing to find security vulnerabilitiesin iMessage Fuzzing was used to identify vulnerabilities in libstagefright
  • 5. Fuzz testing can be used to identify vulnerabilities in applications 5 We show you how fuzz testing can be used to identify vulnerabilities in ▪ Vulnerabilities: XSS, SQLi, Command Injection, … ▪ Tools: ffuf, Burp Suite, custom fuzzers Web applicationsBinary applications ▪ Vulnerabilities: Memory corruptions, Denial of Service ▪ Often found through coverage guided fuzzing ▪ Tools: AFL, libfuzzer, go-fuzz, honggfuzz
  • 6. Fuzzing engine Seed the fuzzing engine with valid program input Fuzzing engine observes behavior and saves interesting testcases, e.g., crashing inputs Fuzzing engine takes some program input, mutates it, runs it against the target Fuzz-testingis a technique to identify vulnerabilities via mutating valid program input 6 Seeds Mutate + run input Target Interesting cases c a cb Observe behaviour ba
  • 7. Fuzzing engine Seed the fuzzing engine with valid program input Fuzzing engine observes behavior and saves interesting testcases, e.g., crashing inputs Fuzzing engine takes some program input, mutates it, runs it against the target Add inputs that yield new coverage to input queue Coverage guided fuzzing mutates seeds and adds them to a corpus if they yield new code coverage 7 Seeds Mutate + run input Target Interesting cases c a cb d Observe behaviour ba New coverage d
  • 8. By adding inputs that yield new coverage to the seed collection, coverage guided fuzzing can detect bugs not detected by usual fuzzers 8 Fuzzing engine Seeds Mutate + run input Target Interesting cases Observe behaviour New coverage if (input[0]==‘F’){ void parse_input(char *input){ if(input[1]==‘U’){ if(input[2]==‘Z’){ if(input[3]==‘Z’){ //CRASH here Seed queue Input: F
  • 9. By adding inputs that yield new coverage to the seed collection, coverage guided fuzzing can detect bugs not detected by usual fuzzers 9 Fuzzing engine Seeds Mutate + run input Target Interesting cases Observe behaviour New coverage if (input[0]==‘F’){ void parse_input(char *input){ if(input[1]==‘U’){ if(input[2]==‘Z’){ if(input[3]==‘Z’){ //CRASH here Seed queue Input: F Input: FU
  • 10. By adding inputs that yield new coverage to the seed collection, coverage guided fuzzing can detect bugs not detected by usual fuzzers 10 Fuzzing engine Seeds Mutate + run input Target Interesting cases Observe behaviour New coverage if (input[0]==‘F’){ void parse_input(char *input){ if(input[1]==‘U’){ if(input[2]==‘Z’){ if(input[3]==‘Z’){ //CRASH here Seed queue Input: F Input: FU Input: FUZ
  • 11. By adding inputs that yield new coverage to the seed collection, coverage guided fuzzing can detect bugs not detected by usual fuzzers 11 if (input[0]==‘F’){ void parse_input(char *input){ if(input[1]==‘U’){ if(input[2]==‘Z’){ if(input[3]==‘Z’){ //CRASH here Seed queue Input: F Input: FU Input: FUZ Input: FUZZ Fuzzing engine Seeds Mutate + run input Target Interesting cases Observe behaviour New coverage
  • 12. A typical binary fuzzing run can be divided into five steps:Target selection, building, seed selection, fuzzing, triaging 12 ▪ Select functions that parse complex input ▪ Write functions that takes fuzzer data and passes it to the function under test ▪ Fuzzing needs a set of seeds to start: Seeds should be validinput to program ▪ Seeds should be small and diverse ▪ C/C++: afl-fuzz, libfuzzer, honggfuzz ▪ Go: go-fuzz ▪ Rust: honggfuzz-rs ▪ [...] ▪ Prepare target so that we can easily measure coverage. ▪ Usually done at compile time: Compiler options often come with the fuzzer Triage crashes!Fuzz/Stress test!Select seeds Build with instrumentation Select target functions Write harness 1 42 3 5 Fuzzingconsists of five steps
  • 13. Demo: Using libfuzzer to identify a memory corruption bug in a C-program 13 Demo
  • 14. Fuzz-testingcan be used to stress-testweb applications and identify various vulnerabilities, e.g. SQL injections, XSS, SSRF, SSTI 14 Seeds Fuzzing engine Target Interesting cases Observe response: Identify anomalies XSS SQLi SSTI Different location Response time Evaluated expression Run input
  • 15. Web application fuzzing consists of four steps:Selecting a target endpoints, select an appropriate input structure, fuzzing and triaging 15 ▪ Select parameters that interact with the website e.g. reflected valueor databaseinteraction ▪ ffuf ▪ Burp Suite ▪ Custom fuzzer with Selenium using Firefox / Chrome headless ▪ [...] ▪ Identify if anomaliesare vulnerabilities,e.g., XSS ▪ Identify and fix root cause of those vulnerabilities ▪ Fuzzing needs input that can produce anomalies ▪ A simple approachis to use a wordlist with a lot of inputs to stress our filters ▪ More complex services or parsers can be fuzzed with e.g. grammar-based approaches Triage anomaliesFuzz/Stress test! Select appropriateinput structure Select target endpoint 1 42 3 Fuzzingconsists of four steps
  • 16. XSS is the reflected insertion of malicious Javascript 16 ?search=test Input Result </h1>Displaying results for test</html> Source ?search=<script>alert("XSS") </script> </h1>Displaying results for <script>alert("XSS")</script> </html> <?php $search_term = $_GET["search"]; echo "<html>"; echo "<h1>Search Results</h1>"; echo "Displaying results for". $search_term; echo "</html>"; ?>
  • 17. Demo: Identifying a XSS vulnerability with a simple custombuild API fuzzer 17 Demo
  • 18. The fully automated nature of fuzz-testingcan be leveraged to integrate fuzz-testing into continuous integration as addition to classical software testing 18 Run software tests & fuzzing after each code change Fuzzing and software testing complement each other: Add unit tests for bugs found by fuzzing Fix bugs found by software testing and fuzzing. Reiterate the process a b c BuildCode Release Software testing Fuzz testing b a c
  • 19. A dedicated fuzzing server can easily be integrated into your continuous integration setup 19 Code should be pulled and fuzzed from code repository on a regular basis a Fuzzing setup stores seed corpus and old crashes found c Run seed corpus and old crashes against current version to prevent regressions b Dedicated fuzzing server Old fuzzer outputs Software repository Seeds Crashes a c b
  • 20. Key Takeaways 20 1 Integrate fuzz-testinginto your software development lifecycle to detect bugs early in the development process 2 Fuzz-testingcan fight software complexity with computationalpower 3 Fuzzing is easy: Start small and improve! Thank you for your attention! @vinulium/ vincent@srlabs.de @parzel2 / pascal.zenker@posteo.de https://github.com/parzel/codemotion-fuzzing-demo