130 likes | 239 Views
Fuzzing And Oracles. By: Thomas Sidoti. Overview. Introduction Motivation Fuzzable Exploits Oracles Implementation Fuzzing Results. Introduction. Find relationships between Oracles and Exploits/Errors. What class of errors could a particular oracles hope to find?. Motivation. Fuzzers:
E N D
Fuzzing And Oracles By: Thomas Sidoti
Overview • Introduction • Motivation • Fuzzable Exploits • Oracles • Implementation • Fuzzing Results
Introduction • Find relationships between Oracles and Exploits/Errors. • What class of errors could a particular oracles hope to find?
Motivation • Fuzzers: • Generate Input • Watch for errors • Without good oracles, some errors will never be found.
Fuzzable Exploits • Buffer Overflow • Improper Validation of Array Index • Integer Overflow • Incorrect Calc of Buffer Size • From the CWE Top 25
Available Oracles • Process Crash • Output Monitoring • Memory Monitoring • Monitoring Services • Program Flow Monitoring (PaiMei)
Fuzzable • Created a program with optional exploits available. • Flags • b : Heap Buffer Overflow • m : Calculated Memory Size Not Checked • s : Stack Buffer Overflow (and small version) • i : Integer Overflow (Multiplication) • a : Calculated Array Index Not Checked (and small version)
File Format 10 - Number of Lines 30 - Chars per Line 1st Line 2nd Line ……………… Nth Line 9 - Get the xth Line 5 - The yth character from
Analysis of Open Source Fuzzers • Open Source Fuzzing Software is difficult to use. • Evolution Fuzzing System did not appear to do anything. • FileFuzz crashes when program under test crashes. • Modified FileP to make it usable. • Most don’t include robust oracles. • Peach Fuzzer is the exception.
Results: Oracle-less Fuzzers • FileP, FileFuzz • Random fuzzer based on a Sample File. • Fuzzled • Set of factories which makes it easy for a programmer to generate input. • Detects Program Crashes • All large errors
Results: Peach Fuzzer • Oracles: Windows Debugger, Memory Monitor, Page Heap Debugging, etc. • Page Heap debugging found small heap space address miscalculation. • Memory Monitor found small excess in memory usage. (This flaw could also crash the program in Windows)
Conclusion • A good portion of errors can be found even if only depending on program crash. • Output monitoring may work well if tailored to your program • Using more advanced debugging techniques while debugging will reveal more subtle errors.