Automated Whitebox Fuzz Testing Network and Distributed System Security (NDSS) 2008 by Patrice Godefroid, ‏Michael Y. Levin, and ‏David Molnar Present.

Slides:



Advertisements
Similar presentations
.NET Technology. Introduction Overview of.NET What.NET means for Developers, Users and Businesses Two.NET Research Projects:.NET Generics AsmL.
Advertisements

Cristian Cadar, Peter Boonstoppel, Dawson Engler RWset: Attacking Path Explosion in Constraint-Based Test Generation TACAS 2008, Budapest, Hungary ETAPS.
Leonardo de Moura Microsoft Research. Z3 is a new solver developed at Microsoft Research. Development/Research driven by internal customers. Free for.
Automated Whitebox Fuzz Testing
1 Symbolic Execution Kevin Wallace, CSE
Delta Debugging and Model Checkers for fault localization
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.
Inpainting Assigment – Tips and Hints Outline how to design a good test plan selection of dimensions to test along selection of values for each dimension.
Annoucements  Next labs 9 and 10 are paired for everyone. So don’t miss the lab.  There is a review session for the quiz on Monday, November 4, at 8:00.
Effectively Prioritizing Tests in Development Environment
David Brumley, Pongsin Poosankam, Dawn Song and Jiang Zheng Presented by Nimrod Partush.
Bouncer securing software by blocking bad input Miguel Castro Manuel Costa, Lidong Zhou, Lintao Zhang, and Marcus Peinado Microsoft Research.
CHESS: A Systematic Testing Tool for Concurrent Software CSCI6900 George.
Testing and Analysis of Device Drivers Supervisor: Abhik Roychoudhury Author: Pham Van Thuan 1.
(Quickly) Testing the Tester via Path Coverage Alex Groce Oregon State University (formerly NASA/JPL Laboratory for Reliable Software)
Fuzzing Dan Fleck CS 469: Security Engineering Sources:
Software Testing and Quality Assurance
Leveraging User Interactions for In-Depth Testing of Web Applications Sean McAllister, Engin Kirda, and Christopher Kruegel RAID ’08 1 Seoyeon Kang November.
1 Today More on random testing + symbolic constraint solving (“concolic” testing) Using summaries to explore fewer paths (SMART) While preserving level.
EE694v-Verification-Lect5-1- Lecture 5 - Verification Tools Automation improves the efficiency and reliability of the verification process Some tools,
1 ES 314 Advanced Programming Lec 2 Sept 3 Goals: Complete the discussion of problem Review of C++ Object-oriented design Arrays and pointers.
1 Loop-Extended Symbolic Execution on Binary Programs Pongsin Poosankam ‡* Prateek Saxena * Stephen McCamant * Dawn Song * ‡ Carnegie Mellon University.
Starting Out with C++: Early Objects 5/e © 2006 Pearson Education. All Rights Reserved Starting Out with C++: Early Objects 5 th Edition Chapter 1 Introduction.
1.3 Executing Programs. How is Computer Code Transformed into an Executable? Interpreters Compilers Hybrid systems.
Leveraging User Interactions for In-Depth Testing of Web Application Sean McAllister Secure System Lab, Technical University Vienna, Austria Engin Kirda.
Analysis of Complex Data Structures with PEX Vadim Mutilin Evgeniy Gerlits Vladimir Fedotov Mentor: Patrice Godefroid.
Leveraging State Information for Automated Attack Discovery In Transport Protocol Implementations Samuel Jero, Hyojeong Lee, and Cristina Nita-Rotaru Purdue.
MSDN Webcast - SDL Process. Agenda  Fuzzing & The SDL  Integration of fuzzing  Importance of fuzzing Michael Eddington Déjà vu Security
Stack Management Each process/thread has two stacks  Kernel stack  User stack Stack pointer changes when exiting/entering the kernel Q: Why is this necessary?
Automating Software Testing Using Program Analysis -Patrice Godefroid, Peli de Halleux, Aditya V. Nori, Sriram K. Rajamani,Wolfram Schulte, and Nikolai.
Chapter Introduction to Computers and Programming 1.
CSC 125 Introduction to C++ Programming Chapter 1 Introduction to Computers and Programming.
Chocolate Bar! luqili. Milestone 3 Speed 11% of final mark 7%: path quality and speed –Some cleverness required for full marks –Implement some A* techniques.
Dynamic Test Generation To Find Integer Bugs in x86 Binary Linux Programs David Molnar Xue Cong Li David Wagner.
Vulnerability-Specific Execution Filtering (VSEF) for Exploit Prevention on Commodity Software Authors: James Newsome, James Newsome, David Brumley, David.
Reverse Engineering State Machines by Interactive Grammar Inference Neil Walkinshaw, Kirill Bogdanov, Mike Holcombe, Sarah Salahuddin.
CUTE: A Concolic Unit Testing Engine for C Technical Report Koushik SenDarko MarinovGul Agha University of Illinois Urbana-Champaign.
Revolutionizing the Field of Grey-box Attack Surface Testing with Evolutionary Fuzzing Department of Computer Science & Engineering College of Engineering.
Implementation Yaodong Bi. Introduction to Implementation Purposes of Implementation – Plan the system integrations required in each iteration – Distribute.
Identifying Reversible Functions From an ROBDD Adam MacDonald.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 1: Introduction to Computers and Programming.
Comparison of Blackbox and Whitebox Fuzzers in Finding Software Bugs
What is Software Testing? And Why is it So Hard J. Whittaker paper (IEEE Software – Jan/Feb 2000) Summarized by F. Tsui.
PROJECT MULTICASTER Kenneth Brian Gilliam Computer Electronic Networking Dept. of Technology Eastern Kentucky University.
1 A Simple but Realistic Assembly Language for a Course in Computer Organization Eric Larson Moon Ok Kim Seattle University October 25, 2008.
CS533 Concepts of Operating Systems Jonathan Walpole.
Automated Whitebox Fuzz Testing (NDSS 2008) Presented by: Edmund Warner University of Central Florida April 7, 2011 David Molnar UC Berkeley
Fundamental Programming: Fundamental Programming K.Chinnasarn, Ph.D.
Christopher Kruegel University of California Engin Kirda Institute Eurecom Clemens Kolbitsch Thorsten Holz Secure Systems Lab Vienna University of Technology.
TaintScope Presented by: Hector M Lugo-Cordero, MS CAP 6135 April 12, 2011.
© Janice Regan, CMPT 300, May CMPT 300 Introduction to Operating Systems Memory: Relocation.
jFuzz – Java based Whitebox Fuzzing
Securing Passwords Against Dictionary Attacks Presented By Chad Frommeyer.
Chapter 1 Computers, Compilers, & Unix. Overview u Computer hardware u Unix u Computer Languages u Compilers.
Copyright 2003 Scott/Jones Publishing Standard Version of Starting Out with C++, 4th Edition Chapter 1 Introduction to Computers and Programming.
Software Quality Assurance and Testing Fazal Rehman Shamil.
Chapter 1 Basic Concepts of Operating Systems Introduction Software A program is a sequence of instructions that enables the computer to carry.
Automating Configuration Troubleshooting with Dynamic Information Flow Analysis Mona Attariyan Jason Flinn University of Michigan.
CUTE: A Concolic Unit Testing Engine for C Koushik SenDarko MarinovGul Agha University of Illinois Urbana-Champaign.
Chapter 9: Web Services and Databases Title: NiagaraCQ: A Scalable Continuous Query System for Internet Databases Authors: Jianjun Chen, David J. DeWitt,
MOPS: an Infrastructure for Examining Security Properties of Software Authors Hao Chen and David Wagner Appears in ACM Conference on Computer and Communications.
Week 6 MondayTuesdayWednesdayThursdayFriday Testing III Reading due Group meetings Testing IVSection ZFR due ZFR demos Progress report due Readings out.
Michael J. Voss and Rudolf Eigenmann PPoPP, ‘01 (Presented by Kanad Sinha)
Chapter 2 Build Your First Project A Step-by-Step Approach 2 Exploring Microsoft Visual Basic 6.0 Copyright © 1999 Prentice-Hall, Inc. By Carlotta Eaton.
Memory Protection through Dynamic Access Control Kun Zhang, Tao Zhang and Santosh Pande College of Computing Georgia Institute of Technology.
Automated Pattern Based Mobile Testing
Presented by Mahadevan Vasudevan + Microsoft , *UC-Berkeley
CSE 303 Concepts and Tools for Software Development
CUTE: A Concolic Unit Testing Engine for C
Presentation transcript:

Automated Whitebox Fuzz Testing Network and Distributed System Security (NDSS) 2008 by Patrice Godefroid, ‏Michael Y. Levin, and ‏David Molnar Present by Diego Velasquez

2 Acknowledgments  Figures are copy from the paper.  Some slides were taken from the original presentation presented by the authors

3 Outline  Summary  Goals  Motivations  Methods  Experiments  Results  Conclusions  Review  Strengths  Weakness  Extensions  Reference

Goals  Propose a novel methodology that performs efficiently fuzz testing.  Introduce a new search algorithm for systematic test generation.  Outcast their system SAGE (Scalable, Automated, Guided Execution) 4

Methods  Fuzz testing inserts random data to input of applications in order to find defects of a software system. Heavily used in Security testing.  Pros: Cost effective and can find most of known bugs  Cons: It has some limitations depending on some types of branches, for example on project 2 in order to find bug # 10 we need to execute the if statement below. if(address ==613 && value >= 128 && value<255)//Bug #7 printf("BUG 10 TRIGGERED);  Has (1 in 5000) * (128 in 2^32) in order to be executed if we know that is only 5000 addresses and value is a random 32-bit input 5

Methods Cont.  Whitebox Fuzz Testing  Combine fuzz testing with dynamic test generation [2]  Run the code with some initial input  Collect constraints on inputs with symbolic execution  Generate new constraints  Solve constraints with constraint solver  Synthesize new inputs 6

Methods Cont.  The Search Algorithm figure 1 from [1]  Black box will do poorly in this case  Dynamic test could do better 7

Methods Cont.  Dynamic Approach  Input ‘good’ as example  Collect constrain from trace  Create a new path constraint Figure 2 from [1] 8

Methods Cont.  Limitations of Dynamic Testing  Path Explosion  Path doesn’t scale to large in realistic programs.  Can be corrected by modifying the search algorithm.  Imperfect Symbolic Execution  Could be imprecise due to Complex program statements (arithmetic, pointer manipulation)  Calls to OS have to be expensive in order to be precise 9

Methods Cont.  New Generation Search Algorithm Figure 3 and figure 4 from [1]  A type of Bread First Search with heuristic to get more input test cases.  Scores return the number of new test cases covered. 10

Methods Cont.  Summary of Generation Search Algorithm  Push input to the list  Run&Check(input) check bugs in that input  Traverse the list by selecting from the list base in score  Expanded child paths and adding to the childlist  Traverse childlist Run&Check, assigned score and add to list  Expand Execution  Generates Path constrain  Attempt to expand path constraints and save them  Input.bound is bound is used to limit the backtracking of each sub-search above the branch. 11

Experiments  Can test any file-reading program running on Windows by treating bytes read from files as symbolic input.  Another key novelty of SAGE is that it performs symbolic execution of program traces at the x86 binary level 12 FIGURE FROM [2]

Experiments Cont.  Sage advantages  Not source-based, SAGE is a machine-code-based, so it can run different languages.  Expensive to build at the beginning, but less expensive over time  Test after shipping,  Since is based in symbolic execution on binary code, SAGE can detects bugs after the production phase  Not source is needed like in another systems  SAGE doesn’t even need specific data types or structures not easy visible in machine code 13

Experiments Cont.  MS07-017: Vulnerabilities in Graphics Device Interface (GDI) Could Allow Remote Code Execution.  Test in different Apps such as image processors, media players, file decoders.[2]  Many bugs found rated as “security critical, severity 1, priority 1”[2]  Now used by several teams regularly as part of QA process.[2] 14

Experiments Cont.  More in MS07-017, figure below is from [2] left is input right is crashing test case 15 RIFF...ACONLIST B...INFOINAM.... 3D Blue Alternat e v1.1..IART anih$...$ rate seq LIST....framic on RIFF...ACONB B...INFOINAM.... 3D Blue Alternat e v1.1..IART anih$...$ rate seq anih....framic on Only 1 in 2 32 chance at random!

Results  Statistics from 10hour searches on seven test applications, each seeded with a well formed input file. 16

Results  Focused on the Media 1 and Media 2 parsers.  Ran a SAGE search for the Media 1 parser with five “well-formed” media files, and five bogus files. Figure 7 from [1] 17

Results  Compared with Depth-First Search Method  DFS runs for 10 hours for Media 2 with wff-2 and wff-3, didn’t find anything GS found 15 crashes  Symbolic Execution is slow  Well formed input are better than Bogus files  Non-determinism in Coverage Results.  The heuristic method didn’t have too much impact  Divergences are common 18

Results  Most bugs found are “shallow” Figure from [2] 19

Conclusions  Blackbox vs. Whitebox Fuzzing  Cost/precision tradeoffs  Blackbox is lightweight, easy and fast, but poor coverage  Whitebox is smarter, but complex and slower  Recent “semi-whitebox” approaches  Less smart but more lightweight: Flayer (taint-flow analysis, may generate false alarms), Bunny-the-fuzzer (taint-flow, source-based, heuristics to fuzz based on input usage), autodafe, etc.  Which is more effective at finding bugs? It depends…  Many apps are so buggy, any form of fuzzing finds bugs!  Once low-hanging bugs are gone, fuzzing must become smarter: use whitebox and/or user-provided guidance (grammars, etc.)‏  Bottom-line: in practice, use both! *Slide From [2] 20

21 Strengths  Novel approach to do fuzz testing  Introduced new search algorithm that use code- coverage maximizing heuristic  Applied as a black box  Not source code was needed  symbolic execution of program at the x86 binary level  Shows results comparing previous results  Test large applications previously tested found more bugs.  Introduced a full system and applied the novel ideas in this paper

22 Weakness  The results were non-determinism  Same input, program and idea different results.  Only focus in specific areas  X86 windows applications  File manipulation applications  Well formed input still some type of regular fuzzing testing  SAGE needs help from different tools  In my opinion the paper extends too much in the implementation of SAGE, and the system could of be too specific to Microsoft

23 Extensions  Make SAGE more general  Easy to implement to another architectures  Use for another types of applications  Linux based applications  Better way to create input files  May be used of grammar  Make the system deterministic  Having different results make me think that it could not be reliable.

Reference  [1] P Godefroid, MY Levin, D Molnar, Automated Whitebox Fuzz Testing, NDSS,  [2] Original presentation slides %20Molnar.ppt %20Molnar.ppt  [3] Wikipedia Fuzz testing

25  Questions, Comments or Suggestions?