130 likes | 246 Vues
This document explores fuzzing techniques and the role of oracles in identifying exploits and errors in software. It emphasizes the necessity of good oracles for effective fuzzing, which can generate input and monitor for errors. The study covers common fuzzable exploits such as buffer overflows and improper validations, along with various oracle types used in monitoring. Results from testing different fuzzers, including the significance of advanced debugging methods, highlight how oracles improve error detection. Overall, it underscores the potential for enhanced error discovery through oracle-guided fuzzing.
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.