Tuesday, November 21, 2006

Python Fuzz Testing Tools

Ian Bicking suggested I create a new category in the Python Testing Tools Taxonomy: Fuzz Testing or Fuzzing. Done. If you're not familiar with the term, see the Wikipedia article which talks about this type of testing. Here's an excerpt: "The basic idea is to attach the inputs of a program to a source of random data ("fuzz"). If the program fails (for example, by crashing, or by failing built-in code assertions), then there are defects to correct. The great advantage of fuzz testing is that the test design is extremely simple, and free of preconceptions about system behavior."

Ian told me about the Peach Fuzzer Framework. I was familiar with Pester (the home page talks about a Java tool called Jester, and it has links to the Python version called Pester); I also googled some more and found other Python fuzzing tools such as antiparser and Taof, which are both geared towards fuzzing network protocols. In fact, many fuzzing tools are used in security testing because they can aid in attacking software via random inputs. See this Hacksafe article on "Fuzz testing tools and techniques" and this PacketStorm list of fuzzing tools. Another good overview is Elliotte Harold's developerWorks article on fuzz testing. Very interesting stuff. If the "Python Testing Tools" tutorial Titus and I proposed for PyCon gets accepted, expect to see some fuzz testing included in our arsenal :-)

I also added Ian's minimock tool to the PTTT page. Very cool minimal approach to mock testing, achieved by embedding mocking constructs in doctests.

In other testing-related blog posts, Titus talks about the difficulty of retrofitting testing to an existing application (even when you wrote the testing tools!), and Max Ischenko presents some uber-cool plugins which integrate nose into vim.

1 comment:

Indu said...

Hi,

I know these tools only.
WSFuzzer
Subject : Penetration testing, HTTP, SOAP, Web, Framework
Description : WSFuzzer is a fuzzing penetration testing tool used against HTTP SOAP based web services. It tests numerous aspects (input validation, XML Parser, etc) of the SOAP target. It is only to be used against targets that have granted permission to be tested.


Hybrid Fuzzer (fuzz)
Subject : Hybrid Fuzzer (fuzz) , Fuzz testing , bug fixing
Description :
Hybrid Fuzzer (fuzz) : fuzz is a small fuzz testing utility, used to test the resilience of an application to invalid input. fuzz takes a small valid file, then corrupts it in subtle ways, storing any file that causes an error, allowing a developer to reproduce the error and locate the bug.


QueFuzz 0.7.2
Subject : QueFuzz , fuzzer, fuzzing, security, testing, libnetfilter, linux , Fuzz testing
Description :

QueFuzz : libnetfilterqueue based network fuzzer . QueFuzz is a small fuzzer that uses libnetfilter_queue to take in packets from iptables. It's fuzzing engine reads a small template file and fuzzes the packets as you requested. QueFuzz has a very short learning curve, unlike many other fuzzing frameworks. It may not be as powerful but you can have it up and fuzzing in under a minute. Unlike other fuzzers, QueFuzz is not focused on data generation. It relies on a valid application to generate the data and instead just mutates the network traffic inline and passes it on.

You can get this tool freely and easily .....