A public mirror for the whole atmosphere hubble.microcosm.blue
readme.md

fuzzing hubble-commit #

commit blocks come from PDSes we do not trust, and a panic in the firehose intake task takes the connection down with it. these targets exist to make sure malformed input produces an error rather than an abort.

cargo +nightly fuzz run car    fuzz/corpus/car    fuzz/seeds/car
cargo +nightly fuzz run invert fuzz/corpus/invert fuzz/seeds/invert
  • car — CARv1 framing against arbitrary bytes.
  • invert — one byte of operation count, three bytes per operation, then the CAR. operation CIDs are drawn from the CAR's own blocks, so inputs get past trivial mismatches and reach the tree itself rather than only the decoder.

seeds/ is derived from the vendored mst-test-suite CARs: car seeds are those files verbatim, invert seeds are each prefixed with four different operation specs. they are committed because they are small, deterministic, and give the fuzzer real trees to mutate from. corpus/ and artifacts/ are not.

found so far #

  • Cid::from_bytes_raw indexed bytes[3] with a minimum length of 3, so a three-byte CID body panicked. reachable from any DAG-CBOR a peer sends. the bug is upstream in dasl 0.2.0 and is fixed in our vendored copy, marked DIVERGES FROM UPSTREAM; it wants reporting before we un-vendor.