Biswajit Mazumder Rohit Hooda Arpan Chowdhary.  What is Fuzzing?  Fuzzing techniques  Types of Fuzzing  Fuzzing explained  Case study and changes:

Slides:



Advertisements
Similar presentations
Fuzzing for logic and state issues
Advertisements

Lecture 101 Lecture 10: Kernel Modules and Device Drivers ECE 412: Microcomputer Laboratory.
Device Drivers. Linux Device Drivers Linux supports three types of hardware device: character, block and network –character devices: R/W without buffering.
USERSPACE I/O Reporter: R 張凱富.
Topics: –DNS system –Gathering machine information How to find out the machines ip address, name, OS, version, etc.
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.
Lecture 16 Buffer Overflow modified from slides of Lawrie Brown.
By Skyler Onken.  Who am I?  What is Fuzzing?  Usual Targets  Techniques  Results  Limitations  Why Fuzz?  “Fuzzing the Web”?  Desired Solution.
Breno de MedeirosFlorida State University Fall 2005 Buffer overflow and stack smashing attacks Principles of application software security.
Software Testing. Overview Definition of Software Testing Problems with Testing Benefits of Testing Effective Methods for Testing.
Achieving Trusted Systems by Providing Security and Reliability Ravishankar K. Iyer, Zbigniew Kalbarczyk, Jun Xu, Shuo Chen, Nithin Nakka and Karthik Pattabiraman.
Leveraging User Interactions for In-Depth Testing of Web Application Sean McAllister Secure System Lab, Technical University Vienna, Austria Engin Kirda.
Buffer Overflow Attacks. Memory plays a key part in many computer system functions. It’s a critical component to many internal operations. From mother.
Efficient Protection of Kernel Data Structures via Object Partitioning Abhinav Srivastava, Jonathon Giffin AT&T Labs-Research, HP Fortify ACSAC 2012.
DEEDS Meeting Oct., 26th 2006 Dependable, Embedded Systems and Software Group Department of Computer Science Darmstadt University of Technology Summary.
Static Analysis for Security Amir Bazine Per Rehnberg.
University of Washington CSE 351 : The Hardware/Software Interface Section 5 Structs as parameters, buffer overflows, and lab 3.
1 CS503: Operating Systems Part 1: OS Interface Dongyan Xu Department of Computer Science Purdue University.
Software Quality Assurance Lecture #8 By: Faraz Ahmed.
Revolutionizing the Field of Grey-box Attack Surface Testing with Evolutionary Fuzzing Department of Computer Science & Engineering College of Engineering.
CMSC 414 Computer (and Network) Security Lecture 14 Jonathan Katz.
Socket Swapping for efficient distributed communication between migrating processes MS Final Defense Praveen Ramanan 12 th Dec 2002.
03/27/2003CHEP20031 Remote Operation of a Monte Carlo Production Farm Using Globus Dirk Hufnagel, Teela Pulliam, Thomas Allmendinger, Klaus Honscheid (Ohio.
ECE556 Project Part 1 Azadeh Davoodi Spring 2015.
Sylnovie Merchant, Ph.D. MIS 161 Spring 2005 MIS 161 Systems Development Life Cycle II Lecture 5: Testing User Documentation.
Implementing System Calls CS552 Kartik Gopalan. CS552/BU/Spring2008 Steps in writing a system call 1.Create an entry for the system call in the kernel’s.
Advanced Sockets API-II Vinayak Jagtap
System Calls. The Linux we use is: Linux-Mandrake 7.0. In this project, you are going to change some kernel files and recompile the kernel. After you.
The Software Development Process
CSNB334 Advanced Operating Systems 4. Concurrency : Mutual Exclusion and Synchronization.
Improving Xen Security through Disaggregation Derek MurrayGrzegorz MilosSteven Hand.
A Tool for Pro-active Defense Against the Buffer Overrun Attack D. Bruschi, E. Rosti, R. Banfi Presented By: Warshavsky Alex.
GLOBAL EDGE SOFTWERE LTD1 R EMOTE F ILE S HARING - Ardhanareesh Aradhyamath.
Unix Security Assessing vulnerabilities. Classifying vulnerability types Several models have been proposed to classify vulnerabilities in UNIX-type Oses.
MANUAL TESTING KS SESSION PRESENTED BY 26/11/015 VISHAL KUMAR.
Chapter 13 – I/O Systems (Pgs ). Devices  Two conflicting properties A. Growing uniformity in interfaces (both h/w and s/w): e.g., USB, TWAIN.
Buffer overflow and stack smashing attacks Principles of application software security.
CSCC69: Operating Systems Tutorial 10. Hints on testing Assignment 3 How to test tlb replacement algorithms? – Write a program that creates an array larger.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Kenfe-Mickaël Laventure Laurent Malvert Macquarie University LEMONA Linux Enhanced Monitoring Architecture Linux zest for security.
Security Attacks Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved.
Class Presentation Pete Bohman, Adam Kunk, Erik Shaw (ONL)
VMM Based Rootkit Detection on Android
Race conditions and synchronization issues Exploiting UNIX.
Lecture 5 Rootkits Hoglund/Butler (Chapters 1-3).
CS426Fall 2010/Lecture 141 Computer Security CS 426 Lecture 14 Software Vulnerabilities: Format String and Integer Overflow Vulnerabilities.
Fuzzing And Oracles By: Thomas Sidoti. Overview Introduction Motivation Fuzzable Exploits Oracles Implementation Fuzzing Results.
By Brandon Barton & Eric Van Horn. What is Backtrack 4? Operating system Collection of many security tools world’s leading penetration testing and information.
1 COMP 3500 Introduction to Operating Systems Project 4 – Processes and System Calls Part 4: Managing File System State Dr. Xiao Qin Auburn University.
Fuzzing Machine By Nikolaj Tolkačiov.
Protecting Memory What is there to protect in memory?
Linux Details: Device Drivers
Configuration Fuzzing for Software Vulnerability Detection
copy_from_user copy_to_user
Protection and OS Structure
Crash Dump Analysis - Santosh Kumar Singh.
Pinpointing Vulnerabilities
Jump Over ASLR: Attacking Branch Predictors to Bypass ASLR
Testing the Software with Blinders on
Virtual Memory CSCI 380: Operating Systems Lecture #7 -- Review and Lab Suggestions William Killian.
CSC 495/583 Topics of Software Security Format String Bug (2) & Heap
Linux Details: Device Drivers
System Calls David Ferry CSCI 3500 – Operating Systems
Virtual Memory: Systems CSCI 380: Operating Systems
CSCI 380: Operating Systems William Killian
CS5123 Software Validation and Quality Assurance
CULLEN ACHESON Samuel Garcia Zachary Blum
Malware and Software Vulnerability Analysis Fuzzing Test Example Cliff Zou University of Central Florida.
Performing Security Auditing In Hardware
Return-to-libc Attacks
Presentation transcript:

Biswajit Mazumder Rohit Hooda Arpan Chowdhary

 What is Fuzzing?  Fuzzing techniques  Types of Fuzzing  Fuzzing explained  Case study and changes: SCRASHME  sys_getdomainname()  vmsplice() : Local Root Exploit  Conclusion

 Short for FUZZ-TESTING.  Technique of Black-box testing Black Box Fuzzer Inputs: Malformed / SemiMalformed Random / Adaptive Crashes / Information leaks / Delays

 Event-Driven Fuzz  Character-Driven Fuzz  Database Fuzz

Based on type of Fuzzer:  Tool oriented Fuzzing  Manual Fuzzing Based on Attack Targets:  Application fuzzing.  Protocol fuzzing.  File-format fuzzing.  Operating System fuzzing.

 Simple fuzz approach using a pseudo random number generator as input.  Validation of fuzz attempts to assure that the random input is reasonable.  A combined approach using valid test data and invalid random input interjection.

 Open source system call fuzzer for Linux.  Stress tests system calls for robustness and security flaws.  -i: use sanitize methods before calling syscalls.  -c#: do syscall # with random inputs.  -C: check syscalls that call capable() return - EPERM.  -r: call random syscalls with random inputs.  -Sr: pass struct filled with random junk.  -Sxx: pass struct filled with hex value xx.  -x#: use value as register arguments.  -z: use all zeros as register parameters.

 Support for new syscall #333 in Linux Kernel i.e. sys_getdomainname().  Sanitize method for Local root exploit for vmsplice() syscall.

/* Structure describing the system and machine. */ struct utsname { /* Name of the implementation of the operating system. */ char sysname[_UTSNAME_SYSNAME_LENGTH]; /* Name of this node on the network. */ char nodename[_UTSNAME_NODENAME_LENGTH]; /* Current release level of this implementation. */ char release[_UTSNAME_RELEASE_LENGTH]; /* Current version level of this release. */ char version[_UTSNAME_VERSION_LENGTH]; /* Name of the hardware type the system is running on. */ char machine[_UTSNAME_MACHINE_LENGTH]; /* Name of the domain of this node on the network. */ char domainname[_UTSNAME_DOMAIN_LENGTH]; };

 getdomainname () is used to access the domain name of the current processor/node.  getdomainname() currently calls uname() in the current versions of Linux Kernel.  setdomainname() is used to change the domain name of the current processor/node.  In a FQDN e.g. temp.mynetwork.org “mynetwork” is the domainname.

asmlinkage long sys_getdomainname(char __user *name, int len) { int nlen; int err = -EINVAL; + if (len __NEW_UTS_LEN) + goto done; down_read(&uts_sem); nlen = strlen(utsname()->domainname) + 1; if (nlen < len) len = nlen; if ( copy_to_user(name, utsname()->domainname, len) ){ err = -EFAULT; goto done; } err = 0; done: up_read(&uts_sem); return err; }

 Splices a user pages into a pipe.  Provides userspace programs with full control over an arbitrary kernel buffer  “Copies" data from user space into the kernel buffer. long vmsplice(int fd, const struct iovec *iov, unsigned long nr_segs, unsigned int flags); Description: The vmsplice() system call maps nr_segs ranges of user memory described by iov into a pipe. The file descriptor fd must refer to a pipe.

 Doesn't check whether that application had the right to write to a specific memory location. So it acts as a quick-and-easy rootkit installation mechanism.  Doesn’t check whether the iovec structures (memory region) passed were in readable memory.  The third problem is in the memory-to-pipe implementation. This is an information disclosure vulnerability.

 Enables non-root user to become root  Doesn’t need specific hardware Available at: 

 Allows detection of critical security vulnerabilities in short time periods for various applications.  Simple, efficient and can be automated.  Considerable speed up of the whole process of security vulnerabilities detection.  Downside: Not the final solution for detection of all security vulnerabilities that exist in an application.