Skip to content

Fuzzers synchronization #331

Open
Open
@GrosQuildu

Description

@GrosQuildu

DeepState implements ensembled fuzzing, where each fuzzer share interesting test cases with other. But synchronizing fuzzers is a bit tricky and needs some research, as it's badly documented.

Current state is:

  • AFL and libFuzzer synchronize as for now.
  • Eclipser and Honggfuzz need to be restared to pull new seeds
  • Angora should synchronize (like AFL), but require correctly named files

See PP #326 for some initial information about the synchronization abilities.

Check out tests/test_fuzzers_sync.py for basic synchronization test. It pushes crashing seed into AFL queue directory and waits until all fuzzers share the seed and find the crash.

Fix would require:

  • Implement do_restart in each fuzzer that doesn't automatically synchronize. It should use some heuristic to decide when to do restart (in simplest case, after some constant time).
  • Implement ensembler script (deepstate-ensemble) that fix sync_dir from time to time: removes redundant files (using afl-cmin approach) and renames them appropriately (id:000001...), so AFL and Angora are happy. Maybe it should also decide when to do restart (not each fuzzer in do_restart method).
  • Research if libFuzzer require some filename convention to pull new test cases

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions