본문 바로가기

카테고리 없음

Boris Bezier Software Testing Techniques Firefox

“Operating system facilities, such as the kernel and utility programs, are typically assumed to be reliable. In our recent experiments, we have been able to crash 25-33% of the utility programs on any version of UNIX that was tested.” 1Those were the original words in one of the first fuzzing studies where Prof. Barton Miller was first to use the term ‘fuzzing’One can see the importance of fuzzing as one of the techniques used to test software security against malformed input leading to crashes and in some cases exploitable bugs.Prof. Miller, in the above quote, was using a random generator to generate malformed input. Another approach that was considered at the time was syntax testing by Dr. Boris Beizer 2. Beizer was able to generate semi-valid test cases based on the syntax “Grammar” of expected input.

The general fuzzing methodology:Fuzzing in itself, no matter what type, follows a relatively simple methodology: Identify Target = Identify Inputs = Generate Data = Fuzz Target = Monitor for Memory Corruption ErrorsTo be able to perform this process at the highest efficiency there are some tools that can help us. Memory Error Detectors:Memory error detectors are tools used to rapidly identify memory corruption errors by poisoning memory around allocations and quarantining and poisoning memory areas after they are free-ed and report any attempt to access these memory regions by the target application. And usually they will provide a deeper level of detail in regards to a specific error.For windows there is PageHeap which is part of the Windows Debugging toolkit and can be enabled on certain processes using “Gflags.exe” 3For Linux and Max OSX there is Google’s AddressSanitizer (ASan) which is a clang compiler plug-in that can be enabled on applications at complie time using the “-fsanitize=address” parameter 4. Fuzzer Harnesses:A fuzzer harness is a tool the loads the target application, feeds it generated test cases and monitors the target. If a crash occurs, it will save the test case that caused the crash and subsequent crash log containing the details.

As is often the case, it will restart the application after a certain period of time or when a crash occurs.For Windows there is Grinder by Stephen Fewer 5.For Linux and Mac OSX there is NodeFuzz By Atte Kettunen from OUSPG 6. Introducing Wadi.At Defcon 23, and I a new fuzzer, which we’ve called Wadi. What is Wadi?Wadi is web browser grammar-based fuzzer. Grammars are used to describe how browsers should process web content, Wadi turns that around and uses grammars to break browsers.Wadi is a Fuzzing module to use with NodeFuzz fuzzing Harness and utilizes AddressSanitizer(ASan) for instrumentation on Linux and Mac OSX.The World Wide Web Consortium (W3C) is an international community that develops open standards to ensure the long-term growth of the Web 7.

Boris Bezier Software Testing Techniques Firefox 2017

It is the W3C that allows us to search for grammar to use in our test cases.The standards that are relevant to this research are:– The DOM standards 8.– The Web API standards 9.– The Web IDL standards 10. The Document Object Module (DOM):The Document Object Model provides a standard set of objects for representing HTML and XML documents, a standard model of how these objects can be combined, and a standard interface for accessing and manipulating them. The Web API:When developing for the web, using JavaScript, there are many APIs available, for example speech, webaudio, gamepad, canvas, webgl, animation etc.

Black-Box Testing: Techniques For Functional Testing Of Software And Systems

The Web IDL:Web IDL is an interface definition language (IDL) used to describe interfaces that are intended to be implemented in web browsers. The IDL is defined by an LL(1) grammar that is also provided by W3C 11.This enables a systematic way of parsing the IDL and generating the fuzzer grammar based on it. Grammar:In human languages, grammar is used to explain how sentences are constructed. In compilers, grammar is used to explain the programming language syntax and code construction. In fuzzing grammar is used to explain to the fuzzer how test cases are constructed.Or as saying goes “Grammar is the difference between knowing your shit and knowing you’re shit”.

Testing Techniques

IDL interface:According to IDL definitions, an interface is an object with a set of interface members. These can be constants, attributes, or functions.