Security fuzzing targets for VelesDB using cargo-fuzz.
# Install cargo-fuzz (requires nightly)
cargo install cargo-fuzz
# Or use rustup
rustup install nightlyTests the VelesQL SQL parser with arbitrary input strings to find:
- Panics on malformed queries
- Memory safety issues in pest parsing
- Stack overflows from deeply nested expressions
cd fuzz
cargo +nightly fuzz run fuzz_velesql_parserTests SIMD distance calculations with arbitrary vectors to find:
- Panics on edge cases (NaN, Inf, denormals)
- Numerical stability issues
- SIMD alignment problems
cd fuzz
cargo +nightly fuzz run fuzz_distance_metricsTests the snapshot loader against malformed binary snapshots to find:
- OOM from attacker-controlled
entry_count/length fields sizing allocations - Panics or UB on truncated or corrupted snapshot files
cd fuzz
cargo +nightly fuzz run fuzz_snapshot_parsercd fuzz
cargo +nightly fuzz run fuzz_velesql_parser -- -max_total_time=60cd fuzz
cargo +nightly fuzz run fuzz_velesql_parser -- -max_total_time=3600cargo +nightly fuzz coverage fuzz_velesql_parserIf a crash is found, it will be saved in fuzz/artifacts/. Reproduce with:
cargo +nightly fuzz run fuzz_velesql_parser fuzz/artifacts/fuzz_velesql_parser/<crash_file>Add to GitHub Actions:
- name: Fuzz Test (Quick)
run: |
cargo install cargo-fuzz
cd fuzz
cargo +nightly fuzz run fuzz_velesql_parser -- -max_total_time=60- Create
fuzz/fuzz_targets/fuzz_<name>.rs - Add
[[bin]]entry tofuzz/Cargo.toml - Document in this README