Skip to content

Unified fuzz-harness interface #5027

@graydon

Description

@graydon

Over the years we've created or contracted the creation of several different fuzz harnesses (the tx fuzzer, an overlay fuzzer, a half dozen soroban fuzzers).

These have all to varying extent suffered from neglect:

  • Some don't even get committed/merged into any main repos (eg. they're just part of audit contracts)
  • Some don't all get built or checked for correct function regularly
  • Some (most? all?) don't get run continuously
  • We're not in oss-fuzz in particular
  • They're not integrated into (pseudo-)randomized unit testing very well (we use an ancient version of autocheck; it might be nice to try to expose such tests as miniature fuzz harnesses (eg. in github.com/google/fuzztest)

It would be nice to have a bit more unified infrastructure for fuzzing to address these shortcomings. Ideally we'd have:

  • a single top-level entrypoint dispatching to all existing fuzz harnesses in core and soroban
  • that is merged into master and built-and-run-a-bit as part of CI so it never breaks
  • that is driven by the best option for fuzzer engines (probably honggfuzz)
  • that is registered with oss-fuzz for continuous fuzzing on google infra
  • that is easy and obvious to extend with new harnesses when we contract for them
  • bonus: that is connected in some way to unit tests so they can naturally get registered as more harnesses

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