SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

50 سؤال في الهندسة المدنية - الجزء الرابع
50 سؤال في الهندسة المدنية - الجزء الرابع50 سؤال في الهندسة المدنية - الجزء الرابع
50 سؤال في الهندسة المدنية - الجزء الرابعKarim Gaber
 
كل ما تريد معرفتة عن الاساسات السطحية
كل ما تريد معرفتة عن الاساسات السطحيةكل ما تريد معرفتة عن الاساسات السطحية
كل ما تريد معرفتة عن الاساسات السطحيةOsama Tarek
 
الأعمدة Columns.docx
الأعمدة Columns.docxالأعمدة Columns.docx
الأعمدة Columns.docxEHABBENISSA
 
History of architecture 3 - LECTURE 16 - قصر الحمراء - needs modifications.ppt
History of architecture 3 - LECTURE 16 - قصر الحمراء - needs modifications.pptHistory of architecture 3 - LECTURE 16 - قصر الحمراء - needs modifications.ppt
History of architecture 3 - LECTURE 16 - قصر الحمراء - needs modifications.pptDania Abdel-aziz
 
The Cross Site Scripting Guide
The Cross Site Scripting GuideThe Cross Site Scripting Guide
The Cross Site Scripting GuideDaisuke_Dan
 
Traffic intersections (in Arabic) التقاطعات المرورية
Traffic intersections (in Arabic) التقاطعات المروريةTraffic intersections (in Arabic) التقاطعات المرورية
Traffic intersections (in Arabic) التقاطعات المروريةFatma Abdalla
 
Steel 1 - Layout , Design of Sections - تصميم المنشآت المعدنية
Steel 1 - Layout , Design of Sections - تصميم المنشآت المعدنيةSteel 1 - Layout , Design of Sections - تصميم المنشآت المعدنية
Steel 1 - Layout , Design of Sections - تصميم المنشآت المعدنيةKarim Gaber
 
العصر الاموي.pdf
 العصر الاموي.pdf العصر الاموي.pdf
العصر الاموي.pdfMM TTS
 
المنشأت_الكابلية[1].pdf
المنشأت_الكابلية[1].pdfالمنشأت_الكابلية[1].pdf
المنشأت_الكابلية[1].pdf3la2Nasser
 
Analyse d habitats semi collectif
Analyse d habitats semi collectifAnalyse d habitats semi collectif
Analyse d habitats semi collectifArchi UHBBC
 
اشهر 30 سؤال في الهندسة المدنية للأنترفيو - الجزء الثاني 2018
اشهر 30 سؤال في الهندسة المدنية للأنترفيو - الجزء الثاني 2018اشهر 30 سؤال في الهندسة المدنية للأنترفيو - الجزء الثاني 2018
اشهر 30 سؤال في الهندسة المدنية للأنترفيو - الجزء الثاني 2018Karim Gaber
 
العصور الاسلامية .pdf
العصور الاسلامية .pdfالعصور الاسلامية .pdf
العصور الاسلامية .pdfMM TTS
 
Maison traditionelle à mzab 6
Maison traditionelle à mzab 6Maison traditionelle à mzab 6
Maison traditionelle à mzab 6hafouu
 
Arp protokolu ve guvenlik zafiyeti
Arp  protokolu ve guvenlik zafiyetiArp  protokolu ve guvenlik zafiyeti
Arp protokolu ve guvenlik zafiyetiBGA Cyber Security
 
Le m'zab. une leçon d'architecture
Le m'zab. une leçon d'architectureLe m'zab. une leçon d'architecture
Le m'zab. une leçon d'architecturehafouu
 
Derinlemesine Paket İnceleme (Deep Packet Inspection)
Derinlemesine Paket İnceleme (Deep Packet Inspection)Derinlemesine Paket İnceleme (Deep Packet Inspection)
Derinlemesine Paket İnceleme (Deep Packet Inspection)BGA Cyber Security
 

La actualidad más candente (20)

50 سؤال في الهندسة المدنية - الجزء الرابع
50 سؤال في الهندسة المدنية - الجزء الرابع50 سؤال في الهندسة المدنية - الجزء الرابع
50 سؤال في الهندسة المدنية - الجزء الرابع
 
Introduction IDS
Introduction IDSIntroduction IDS
Introduction IDS
 
Alhambra 01
Alhambra 01Alhambra 01
Alhambra 01
 
DDoS Engelleme Ürünleri
DDoS Engelleme ÜrünleriDDoS Engelleme Ürünleri
DDoS Engelleme Ürünleri
 
كل ما تريد معرفتة عن الاساسات السطحية
كل ما تريد معرفتة عن الاساسات السطحيةكل ما تريد معرفتة عن الاساسات السطحية
كل ما تريد معرفتة عن الاساسات السطحية
 
الأعمدة Columns.docx
الأعمدة Columns.docxالأعمدة Columns.docx
الأعمدة Columns.docx
 
History of architecture 3 - LECTURE 16 - قصر الحمراء - needs modifications.ppt
History of architecture 3 - LECTURE 16 - قصر الحمراء - needs modifications.pptHistory of architecture 3 - LECTURE 16 - قصر الحمراء - needs modifications.ppt
History of architecture 3 - LECTURE 16 - قصر الحمراء - needs modifications.ppt
 
The Cross Site Scripting Guide
The Cross Site Scripting GuideThe Cross Site Scripting Guide
The Cross Site Scripting Guide
 
Traffic intersections (in Arabic) التقاطعات المرورية
Traffic intersections (in Arabic) التقاطعات المروريةTraffic intersections (in Arabic) التقاطعات المرورية
Traffic intersections (in Arabic) التقاطعات المرورية
 
Steel 1 - Layout , Design of Sections - تصميم المنشآت المعدنية
Steel 1 - Layout , Design of Sections - تصميم المنشآت المعدنيةSteel 1 - Layout , Design of Sections - تصميم المنشآت المعدنية
Steel 1 - Layout , Design of Sections - تصميم المنشآت المعدنية
 
BASTION 23.pptx
BASTION 23.pptxBASTION 23.pptx
BASTION 23.pptx
 
العصر الاموي.pdf
 العصر الاموي.pdf العصر الاموي.pdf
العصر الاموي.pdf
 
المنشأت_الكابلية[1].pdf
المنشأت_الكابلية[1].pdfالمنشأت_الكابلية[1].pdf
المنشأت_الكابلية[1].pdf
 
Analyse d habitats semi collectif
Analyse d habitats semi collectifAnalyse d habitats semi collectif
Analyse d habitats semi collectif
 
اشهر 30 سؤال في الهندسة المدنية للأنترفيو - الجزء الثاني 2018
اشهر 30 سؤال في الهندسة المدنية للأنترفيو - الجزء الثاني 2018اشهر 30 سؤال في الهندسة المدنية للأنترفيو - الجزء الثاني 2018
اشهر 30 سؤال في الهندسة المدنية للأنترفيو - الجزء الثاني 2018
 
العصور الاسلامية .pdf
العصور الاسلامية .pdfالعصور الاسلامية .pdf
العصور الاسلامية .pdf
 
Maison traditionelle à mzab 6
Maison traditionelle à mzab 6Maison traditionelle à mzab 6
Maison traditionelle à mzab 6
 
Arp protokolu ve guvenlik zafiyeti
Arp  protokolu ve guvenlik zafiyetiArp  protokolu ve guvenlik zafiyeti
Arp protokolu ve guvenlik zafiyeti
 
Le m'zab. une leçon d'architecture
Le m'zab. une leçon d'architectureLe m'zab. une leçon d'architecture
Le m'zab. une leçon d'architecture
 
Derinlemesine Paket İnceleme (Deep Packet Inspection)
Derinlemesine Paket İnceleme (Deep Packet Inspection)Derinlemesine Paket İnceleme (Deep Packet Inspection)
Derinlemesine Paket İnceleme (Deep Packet Inspection)
 

Similar a 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 Antivirus Software - Joxean Koret (SYSCAN 2014)
Breaking Antivirus Software - Joxean Koret (SYSCAN 2014)Breaking Antivirus Software - Joxean Koret (SYSCAN 2014)
Breaking Antivirus Software - Joxean Koret (SYSCAN 2014)Akmal Hisyam
 

Similar a 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 Antivirus Software - Joxean Koret (SYSCAN 2014)
Breaking Antivirus Software - Joxean Koret (SYSCAN 2014)Breaking Antivirus Software - Joxean Koret (SYSCAN 2014)
Breaking Antivirus Software - Joxean Koret (SYSCAN 2014)
 

Más de 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
 

Más de 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...
 

Último

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
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
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
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
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
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
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 

Último (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
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
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
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
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
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
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 

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