Skip to content

Dash Core Fuzzing Initiative — comprehensive fuzzing for all Dash-specific code #108

@thepastaclaw

Description

@thepastaclaw

Dash Core Fuzzing Initiative — Epic Tracker

Goal: Comprehensive fuzzing coverage for all Dash-specific code. Currently 106 fuzz targets exist — all inherited from Bitcoin Core. Zero Dash-specific coverage across ~24,000 lines of consensus-critical code.

Full plan: ~/Projects/dash/FUZZING_PLAN.md


Sub-Issues

Phase 0: Prerequisites

Phase 1: Deserialization Fuzz Targets ✅

Phase 2: Roundtrip (Serialize↔Deserialize) Fuzzing ✅

Phase 3: Functional Fuzz Targets ✅

Phase 4: P2P Message Fuzzing ✅

  • Dash-specific process_message targets (mnauth, qfcommit, qsigshare, clsig, islock, govobj, dsq, etc.) → dashpay/dash#7171

Phase 5-7: Infrastructure

  • CI fuzz regression testing → dashpay/dash#7173 (tracker Fuzz: continuous fuzzing daemon + corpus + CI regression #169)
  • Refactoring for fuzzability (extract pure functions where needed) → branch fuzz/tracker-108-refactor-fuzzability (commit 31f727568b)
  • Corpus development (deterministic generator + manifest + docs) → branch tracker-108-oss-fuzz (commits 7dd416824f, 18a4209f92)
  • OSS-Fuzz integration consideration (templates + build wrapper + docs) → branch tracker-108-oss-fuzz (commit 120e579af3)

Status

  • Phase 0: ✅ Complete
  • Phase 1: ✅ Complete — 43 deserialization targets, all pass clean (62.7M executions, 0 crashes)
  • Phase 2: ✅ Complete — roundtrip targets, found + fixed CQuorumSnapshot serialization bug
  • Phase 3: ✅ Complete — 7 functional target PRs covering BLS, governance, special TX, MN list, LLMQ, CoinJoin, credit pool
  • Phase 4: ✅ Complete — Dash-specific process_message target covering 41 message types
  • Phase 5-7: ✅ Complete — CI regression, corpus tooling, OSS-Fuzz scaffolding, and refactoring-for-fuzzability delivered
  • Bugs found: 2 (CQuorumSnapshot serialization, CoinJoin IsTimeOutOfBounds signed overflow UB)
  • Total new fuzz targets: ~60+ across all PRs
  • PRs: #7161, #7162, #7166, #7167, #7168, #7169, #7170, #7171, #7172, #7173, #7174

Metadata

Metadata

Assignees

No one assigned

    Labels

    blockedWaiting on external dependencyp1-highDo next

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions