vendredi 19 décembre 2014

Fuzzing and consequences on testing environement

I am implementing a fuzzer that generates specially crafted nasty payloads based on a method's API spec.


The idea would be to pass these payloads as arguments to a method and test if it is rejected as expected or not.


The issue I am encountering is the case of methods where arguments have a real impact like:



  • specifying Buffer length


e.g: What happens if 2^64 is specified by the fuzzer ?



  • filenames to delete


e.g: What happens if '*' is specified by the fuzzer ?


The targeted language is JavaScript (Node.js) but how do kernel fuzzers safely fuzz commands without corrupting the environment every few seconds ?


The goal of this testing is really only to check if a method's argument checking follows the API correctly, throws errors as expected and doesn't hang or fail silently. The processing and result themselves don't matter.


I thought about various solutions like Docker and Vagrant VMs that would make it easy to setup in case of a crash. But I feel like both are a little too high level and not enough portable to be added to a software's testing suite.


Maybe there's a way to intercept the relevant syscalls ?


What are your thoughts ?


Thanks in advance !


Aucun commentaire:

Enregistrer un commentaire