Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs

Slides:



Advertisements
Similar presentations
1 Symbolic Execution Kevin Wallace, CSE
Advertisements

TaintScope: A Checksum-Aware Directed Fuzzing Tool for Automatic Software Vulnerability Detection Tielei Wang 1, Tao Wei 1, Guofei Gu 2, Wei Zou 1 1 Peking.
By Skyler Onken.  Who am I?  What is Fuzzing?  Usual Targets  Techniques  Results  Limitations  Why Fuzz?  “Fuzzing the Web”?  Desired Solution.
This work was supported by the TRUST Center (NSF award number CCF ) Introduction With recent advances in technology comes an increase in the quantity.
Prioritizing User-session-based Test Cases for Web Applications Testing Sreedevi Sampath, Renne C. Bryce, Gokulanand Viswanath, Vani Kandimalla, A.Gunes.
Copyright © Microsoft Corp 2006 Introduction to Security Testing Shawn Hernan Security Program Manager Security Engineering and Communication.
Abirami Poonkundran 2/22/10.  Goal  Introduction  Testing Methods  Testing Scope  My Focus  Current Progress  Explanation of Tools  Things to.
Software Testing. Overview Definition of Software Testing Problems with Testing Benefits of Testing Effective Methods for Testing.
70-290: MCSE Guide to Managing a Microsoft Windows Server 2003 Environment Chapter 11: Monitoring Server Performance.
Chapter 17 Code Review, Test Data, and Code Comparison.
SE 450 Software Processes & Product Metrics 1 Defect Removal.
Leveraging User Interactions for In-Depth Testing of Web Applications Sean McAllister, Engin Kirda, and Christopher Kruegel RAID ’08 1 Seoyeon Kang November.
Software Fault Injection Kalynnda Berens Science Applications International Corporation NASA Glenn Research Center.
MCTS Guide to Microsoft Windows Server 2008 Network Infrastructure Configuration Chapter 11 Managing and Monitoring a Windows Server 2008 Network.
Loupe /loop/ noun a magnifying glass used by jewelers to reveal flaws in gems. a logging and error management tool used by.NET teams to reveal flaws in.
Types and Techniques of Software Testing
Leveraging User Interactions for In-Depth Testing of Web Application Sean McAllister Secure System Lab, Technical University Vienna, Austria Engin Kirda.
1CMSC 345, Version 4/04 Verification and Validation Reference: Software Engineering, Ian Sommerville, 6th edition, Chapter 19.
MSF Testing Introduction Functional Testing Performance Testing.
Introduction to Computers and Programming
BY: SACHIN SHRIVASTAVA Operating System By : Sachin Shrivastava 1.
TESTING STRATEGY Requires a focus because there are many possible test areas and different types of testing available for each one of those areas. Because.
Dynamic Test Generation To Find Integer Bugs in x86 Binary Linux Programs David Molnar Xue Cong Li David Wagner.
Trend Quality Assurance Edward Tsai 蔡木本 趨勢科技全球軟體研發部協理 April 22, 2003.
1 Software Testing (Part-II) Lecture Software Testing Software Testing is the process of finding the bugs in a software. It helps in Verifying and.
Revolutionizing the Field of Grey-box Attack Surface Testing with Evolutionary Fuzzing Department of Computer Science & Engineering College of Engineering.
CPIS 357 Software Quality & Testing
Reduced Cost Reliability via Statistical Model Detection Jon-Paul Anderson- PhD Student Dr. Brent Nelson- Faculty Dr. Mike Wirthlin- Faculty Brigham Young.
Chapter 3: Operating-System Structures System Components Operating System Services System Calls System Programs System Structure Virtual Machines System.
Software Software essential is coded programs that perform a serious of algorithms. Instructions loaded into primary memory (RAM) from secondary storage.
Software Reliability SEG3202 N. El Kadri.
Analyzing and Detecting Network Security Vulnerability Weekly report 1Fan-Cheng Wu.
Computer Security and Penetration Testing
1 A Static Analysis Approach for Automatically Generating Test Cases for Web Applications Presented by: Beverly Leung Fahim Rahman.
70-290: MCSE Guide to Managing a Microsoft Windows Server 2003 Environment, Enhanced Chapter 11: Monitoring Server Performance.
Software Quality See accompanying Word file “Software quality 1”
Automated Whitebox Fuzz Testing (NDSS 2008) Presented by: Edmund Warner University of Central Florida April 7, 2011 David Molnar UC Berkeley
Automated Whitebox Fuzz Testing Network and Distributed System Security (NDSS) 2008 by Patrice Godefroid, ‏Michael Y. Levin, and ‏David Molnar Present.
From Quality Control to Quality Assurance…and Beyond Alan Page Microsoft.
European Test Symposium, May 28, 2008 Nuno Alves, Jennifer Dworak, and R. Iris Bahar Division of Engineering Brown University Providence, RI Kundan.
TaintScope Presented by: Hector M Lugo-Cordero, MS CAP 6135 April 12, 2011.
70-290: MCSE Guide to Managing a Microsoft Windows Server 2003 Environment, Enhanced Chapter 11: Monitoring Server Performance.
® IBM Software Group © 2006 IBM Corporation PurifyPlus on Linux / Unix Vinay Kumar H S.
Operating Systems (CS 340 D) Princess Nora University Faculty of Computer & Information Systems Computer science Department.
Finding Errors in.NET with Feedback-Directed Random Testing Carlos Pacheco (MIT) Shuvendu Lahiri (Microsoft) Thomas Ball (Microsoft) July 22, 2008.
CISC Machine Learning for Solving Systems Problems Presented by: Suman Chander B Dept of Computer & Information Sciences University of Delaware Automatic.
Software Quality Assurance and Testing Fazal Rehman Shamil.
ECHO A System Monitoring and Management Tool Yitao Duan and Dawey Huang.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Software Test Plan Why do you need a test plan? –Provides a road map –Provides a feasibility check of: Resources/Cost Schedule Goal What is a test plan?
Software engineering - 2 Section 8. QUIZ Show how it is possible to determine the height of a tall building with the aid of a barometer.
By Brandon Barton & Eric Van Horn. What is Backtrack 4? Operating system Collection of many security tools world’s leading penetration testing and information.
INTRODUCTION TO XSEDE. INTRODUCTION  Extreme Science and Engineering Discovery Environment (XSEDE)  “most advanced, powerful, and robust collection.
How does a computer works Hyoungshick Kim Department of Computer Science and Engineering College of Information and Communication Engineering Sungkyunkwan.
Fuzzing Machine By Nikolaj Tolkačiov.
Bishnu Priya Nanda , Tata Consultancy Services Ltd.
2. OPERATING SYSTEM 2.1 Operating System Function
Software Quality Assurance
Testing and Debugging PPT By :Dr. R. Mall.
Deriving Test Data for Web Applications from User Session Logs
Software Architecture in Practice
IEEE Std 1074: Standard for Software Lifecycle
Introduction to Information Security
Verification and Validation
Presented by Mahadevan Vasudevan + Microsoft , *UC-Berkeley
Migration Strategies – Business Desktop Deployment (BDD) Overview
Software Verification and Validation
Software Verification and Validation
The role of the test organization in a Security Sensitive project
Software Verification and Validation
Presentation transcript:

Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs Marjan Aslani, Nga Chung, Jason Doherty, Nichole Stockman, and William Quach Summer Undergraduate Program in Engineering Research at Berkeley (SUPERB) 2008 Team for Research in Ubiquitous Secure Technology TRUST Autumn 2008 Conference: November 11-12, 2008

Overview Introduction to Fuzz testing Our research Result Fuzz testing "Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs", Marjan Aslani TRUST Autumn 2008 Conference: November 11-12, 2008

What Is Fuzzing? A method of finding software holes by feeding purposely invalid data as input to a program. – B. Miller et al.; inspired by line noise Apps: image processors, media players, OS Fuzz testing is generally automated Finds many problems related to reliability; many of which are potential security holes. "Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs", Marjan Aslani

Types of Fuzz Testing BlackBox : Randomly generated data is fed to a program as input to see if it crashes. Does not require knowledge of the program source code/ deep code inspection. A quick way of finding defects without knowing details of the application. WhiteBox: Creates test cases considering the target program's logical constraints and data structure. Requires knowledge of the system and how it uses the data. Deeper penetration into the program. "Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs", Marjan Aslani

Zzuf - Blackbox Fuzzer Finds bugs in applications by corrupting random bits in user-contributed data. To make new test cases, Zzuf uses a range of seeds and fuzzing ratios (corruption ratio). "Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs", Marjan Aslani

Catchconv - WhiteBox Fuzzer To create test cases, CC starts with a valid input, observes the program execution on this input, collects the path condition followed by the program on that sample, and attempts to infer related path conditions that lead to an error, then uses this as the starting point for bug-finding. CC has has some downtime when it only traces a program and is not generating new fuzzed files. "Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs", Marjan Aslani

Valgrind A tool for detecting memory management errors. Reports the line number in the code where the program error occurred. Helped us find and report more errors than we would if we focused solely on segmentation faults. "Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs", Marjan Aslani

Types of errors reported by Valgrind By tracking a program’s execution of a file, Valgrind determines the types of errors that occur which may include: Invalid writes Double free - Result 256 Invalid reads Double free Uninitialized values Syscal Pram Memory leak "Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs", Marjan Aslani

Program run under Valgrind "Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs", Marjan Aslani

Methodology "Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs", Marjan Aslani

Metafuzz All of the test files that triggered bugs were uploaded on Metafuzz.com. The webpage contained: Link to the test file Bug type Program that the bug was found in Stack hash number where the bug was located "Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs", Marjan Aslani

Metafuzz webpage "Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs", Marjan Aslani

Target applications Mplayer, Antiword, ImageMagick Convert and Adobe Flash Player MPlayer the promary target: OS software Preinstalled on many Linux distributions Updates available via subversion Convenient to file a bug report Developer would get back to us! Adobe bug reporting protocol requires a certain bug to receive a number of votes form users before it will be looked at by Flash developers. VLC requires building subversions from nightly shots. "Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs", Marjan Aslani

Research Highlights In 6 weeks, generated more than 1.2 million test cases. We used UC Berkeley PSI-cluster of computers, which consists of 81 machines (270 processors). Zzuf, MPlayer, and CC were installed on them. Created a de-duplication script to find the unique bugs. Reported 89 unique bugs; developers have already eliminated 15 of them. "Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs", Marjan Aslani

Result To provide assessments for the two fuzzers, we gathered several metrics: Number of test cases generated Number of unique test cases generated Total bugs and total unique bugs found by each fuzzer. "Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs", Marjan Aslani

Result con’t Generated 1.2 million test cases From the test cases: 962,402 by Zzuf. 279,953 by Catchconv. From the test cases: Zzuf found 1,066,000 errors. Catchconv reported 304,936. Unique (nonduplicate) errors found: 456 by Zzuf 157 by Cachconv "Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs", Marjan Aslani

Result con’t Zzuf reports a disproportionately larger amount of errors than CC. Is Zzuf better than CC? No! The two fuzzers generated different numbers of test cases. How could we have a fair comparison of the fuzzers’ efficiency? Need to gauge the amount of duplicate work performed by each fuzzer. Find how many of these test cases were unique. "Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs", Marjan Aslani

Average Unique Errors per 100 Unique Test Cases First, we compared performance of the fuzzers by the average number of unique bugs found per 100 test cases. Zzuf: 2.69 CC : 2.63 Zzuf’s apparent superiority diminishes. "Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs", Marjan Aslani

Unique Errors as % of Total Errors Next, we analyzed fuzzers’ performance based on the percentage of unique errors found out of the total errors. Zzuf: .05% CC: .22% Less than a quarter percent difference between the fuzzers. "Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs", Marjan Aslani

Types of Errors (as % of Total Errors) Also considered analyzing the fuzzer based on bug types found by the fuzzers. Zzuf performed better in finding “invalid write”, which is a more important security bug type. Not an accurate comparison, since we couldn’t tell which bug specifically caused a crash. "Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs", Marjan Aslani

Conclusion We were not able to make a solid conclusion about the superiority of either fuzzer based on the metric we gathered. Knowing which fuzzer is able to find serious errors more quickly would allow us to make a more informed conclusion about their comparative efficiencies. "Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs", Marjan Aslani

Conclusion con’t Need to record the amount of CPU clock cycles required to execute test cases and find errors. Unfortunately we did not record this data during our research, we are unable to make such a comparison between the fuzzers. "Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs", Marjan Aslani

Guides for Future Research To perform a precise comparison of Zzuf and CC: The difference between the number of test cases generated by Zzuf and CC for a given seed file and specific time frame should be recorded. Measure CPU time to compare the number of unique test cases generated by each fuzzer for a given time. Need a new method to identify unique errors avoid reporting duplicate bugs: Need to use automatically generate a unique hash for each reported error that can then be used to identify duplicate errors. "Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs", Marjan Aslani

Guides for Future Research con’t 4. Use a more robust data collection infrastructure that could accommodate the massive amount of data colected. Our ISP shut Metafuzz down due to excess server load. Berkeley storage full. 5. Include an internal issue tracker that keeps track of whether or not a bug has been reported, to avoid reporting duplicate bugs. "Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs", Marjan Aslani

WhiteBox or BlackBox?? With lower budget/ less time: use Blackbox Once low-hanging bugs are gone, fuzzing must become smarter: use whitebox In practice, use both. "Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs", Marjan Aslani

Acknowledgment National Science Foundation (NSF) for funding this project through the SUPERB-TRUST (Summer Undergraduate Program in Engineering Research at Berkeley - Team for Research in Ubiquitous Secure Technology) program Kristen Gates (Executive Director for Education for the TRUST Program) Faculty advisor David Wagner Graduate mentors Li-Wen Hsu, David Molner, Edwardo Segura, Alex Fabrikant, and Alvaro Cardenas. "Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs", Marjan Aslani

Questions? Questions? Thank you Thank you! Thank you! Questions? "Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs", Marjan Aslani Thank you! Thank you! Questions? Questions?