Ability to provide URLs as input for fuzzer

Open
#5 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
42/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Stale
Tech stack
python
Domain
testing-qa

Research direction

Start by reading the YAML restrictions file and the generator and mutator flow in monkey.py around line 88, mutators.py around line 12, and generators.py. Trace how property generators are monkey-patched and how _mutate is used. Done means the fuzzer can select supplied invalid or valid URL values with the defined probability and continue mutation from them.

Written by the indexing model from the issue text.

Description

enhancement

URLs that triggered an internal server error will be passed as input file, and used for another process of generation / mutation.

This is not intended as validation/regression testing, since the URL could be simply used in any test framework directly; but to reuse the end-state(s) of previous fuzzer run(s) that mutated to actual valid URL with error for its further mutations (which could just not happen in previous run).

Alternatively, correct, valid (but perhaps long) URLs could be provided by this way to fuzzer; therefore mutation would start from known input space (and not just randomized generation from $metadata)

What is required to do:

It is possible to manually create a list of invalid values for each entity set's property in the restrictions file (YAML).

  • The fuzzer will again monkey patch the generators with an additional probability of selecting an invalid value from the list.
  • Patch property generator and mutator (in the module monkey.py#L88)
  • Decorate an exiting _mutate function (mutators.py#L12) to enable random select (if - else statement) based on probability defined as a constant. Decorated function will be used in the module generators.py
Dominant language
Python
Stars
23
Forks
12
PR merge metrics
No merged PRs in 30d

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from SAP/odfuzz

All issues in SAP/odfuzz

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.