go-fuzz VS trophy-case

Compare go-fuzz vs trophy-case and see what are their differences.

trophy-case

🏆 Collection of bugs uncovered by fuzzing Rust code (by rust-fuzz)
Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
go-fuzz trophy-case
10 14
4,704 392
- 1.3%
5.2 2.8
3 months ago 16 days ago
Go
Apache License 2.0 Creative Commons Zero v1.0 Universal
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

go-fuzz

Posts with mentions or reviews of go-fuzz. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-06-10.
  • Fuzzing in Go
    2 projects | /r/golang | 10 Jun 2023
    I used this method successfully for my qjson package . It accepts as input a human readable json. It detected a condition I forgot to check in a few minutes. I used the go fuzzer go-fuzz from Dmitry Vyukov. Check the impressive list of trophies at the end of the README. These are bugs found by the fuzzer.
  • Go Fuzz Testing – The Basics
    2 projects | news.ycombinator.com | 29 Mar 2022
    It does instrumented fuzzing. The older https://github.com/dvyukov/go-fuzz would rewrite your sources to inject the instrumentation and pass the rewritten sources to the compiler, but it didn't really work with Go modules. This is something that probably makes sense to integrate with the compiler toolchain, same as `go test`'s coverage testing.
  • naive question regarding Fuzz testing de/serialisation
    2 projects | /r/golang | 21 Mar 2022
    And another Go-Fuzz
  • Go Fuzzing
    7 projects | news.ycombinator.com | 1 Jan 2022
    Anyone seen good articles on converting go-fuzz tests to native fuzzing? Specifics on the new corpus format and a converter from go-fuzz would be really useful.

    It’s great to hear that the fuzzer is built on go-fuzz so hopefully the conversion process won’t be too bad: https://github.com/dvyukov/go-fuzz/issues/329

  • Go: Fuzzing Is Beta Ready
    4 projects | news.ycombinator.com | 4 Jun 2021
    > it shows the limitations of the language that you can't just build this inside the language.

    Not sure why you'd make that assumption. https://github.com/dvyukov/go-fuzz

  • goccy/go-json: A super fast JSON library fully compatible with encoding/json
    4 projects | /r/golang | 2 Apr 2021
    Rather than explore the specific issues my tests found, I started playing with running https://github.com/dvyukov/go-fuzz against go-json which seems to have fairly quickly found some issues. I've opened https://github.com/goccy/go-json/issues/174 to start the conversation about how you want to proceed here.
  • Fuzz Test Proposal just accepted
    2 projects | /r/golang | 1 Apr 2021
    You can check the go-fuzz's trophies here.
  • SQLFuzz made easy to load huge amount of test data into SQL databases
    2 projects | /r/golang | 25 Feb 2021
    Maybe you can add support for using a fuzzer like https://github.com/dvyukov/go-fuzz or https://github.com/google/gofuzz
  • proposal: testing: add fuzz test support
    2 projects | /r/golang | 23 Feb 2021
    I recently stumbled upon go-fuzz (that is also linked in the proposal). I'm amazed how fuzzing has made the go toolchain stronger and integrated this technique into some of our CI/CD pipelines for continuous testing. Having native fuzzy testing support (not just in go) would be great.
  • Add experimental fuzz test support for Go 1.17
    6 projects | news.ycombinator.com | 23 Feb 2021
    Go tests and benchmarks are so easy to write and run: just add TestFoo and BenchmarkFoo functions to a bar_test.go file, and "go test" does the rest. It's currently doable, but it requires a 3rd party library (go-fuzz) and a bit of fluffing around. This will make fuzz testing an equally first-class citizen with standard Go tooling (just add FuzzFoo), and as such we'll probably see a lot more people testing with fuzzing.

    I used go-fuzz in GoAWK and it found several bugs (see https://benhoyt.com/writings/goawk/#fuzz-testing), and almost everyone who's done fuzz testing has similar reports. Certainly go-fuzz has found many, many bugs in Go itself: https://github.com/dvyukov/go-fuzz#trophies

    For what it's worth, I wrote an article for LWN about the upcoming support for built-in fuzzing in Go: https://lwn.net/Articles/829242/ (of course, if you want full details, read the full proposal).

trophy-case

Posts with mentions or reviews of trophy-case. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-01-16.
  • Rust from a security perspective, where is it vulnerable?
    6 projects | /r/rust | 16 Jan 2023
    You could check cargo-fuzz trophy case, which is a list of issues that have been found via fuzzing.
  • capnproto-rust: out-of-bound memory access bug
    4 projects | /r/rust | 30 Nov 2022
    I've added it to the trophy case.
  • [LWN] A pair of Rust kernel modules
    1 project | /r/linux | 14 Sep 2022
    That said, what's present in what quantities under what circumstances in the Rust fuzzing trophy case does a pretty good job of illustrating how effective the Rust compiler is at ruling out entire classes of bugs.
  • Looking for simple rust programs to crash
    9 projects | /r/rust | 25 Jul 2022
    The same fuzzing techniques applied to Rust yielded a lot of bugs as well. But in Rust's case only 7 out of 340 fuzzer-discovered bugs, or 2%, were memory corruption issues. Naturally, all of the memory corruption bugs were in unsafe code.
  • Everything Is Broken: Shipping rust-minidump at Mozilla, Part 1
    1 project | /r/rust | 15 Jun 2022
    https://github.com/rust-fuzz/trophy-case has like 70 of my issues in it, including the nine minidump bugs
  • Fuzzcheck (a structure-aware Rust fuzzer)
    4 projects | /r/rust | 26 Feb 2022
    If you have found any bugs with this tool, perhaps add them to the Rust fuzz trophy case?
  • Rust is more portable than C for pngquant/libimagequant
    7 projects | /r/rust | 4 Jan 2022
    Source: https://github.com/rust-fuzz/trophy-case (over 40 of those are just from me).
  • Rust takes a major step forward as Linux's second official language
    17 projects | /r/programming | 7 Dec 2021
    But to bring some data, check out the fuzz trophy case. It shows that failures in Rust are most often assertions/panics (equivalent to C++ exception) with memory corruption being relatively rare (it's not never—Rust isn't promising magic—but it's a significant change).
  • Shouldn't have happened: A vulnerability postmortem
    11 projects | news.ycombinator.com | 1 Dec 2021
    You need to read the list more carefully.

    • The list is not for Rust itself, but every program every written in Rust. By itself it doesn't mean much, unless you compare prevalence of issues among Rust programs to prevalence of issues among C programs. For some context, see how memory unsafety is rare compared to assertions and uncaught exceptions: https://github.com/rust-fuzz/trophy-case

    • Many of the memory-unsafety issues are on the C FFI boundary, which is unsafe due to C lacking expressiveness about memory ownership of its APIs (i.e. it shows how dangerous is to program where you don't have the Rust borrow checker checking your code).

    • Many bugs about missing Send/Sync or evil trait implementations are about type-system loopholes that prevented compiler from catching code that was already buggy. C doesn't have these guarantees in the first place, so lack of them is not a CVE for C, but just how C is designed.

  • Safer usage of C++ in Chrome
    1 project | /r/rust | 9 Sep 2021

What are some alternatives?

When comparing go-fuzz and trophy-case you can also consider the following projects:

gofuzz - Fuzz testing for go.

diem - Diem’s mission is to build a trusted and innovative financial network that empowers people and businesses around the world.

gotests - Automatically generate Go test boilerplate from your source code.

gccrs - GCC Front-End for Rust

realize - Realize is the #1 Golang Task Runner which enhance your workflow by automating the most common tasks and using the best performing Golang live reloading.

BLAKE3 - the official Rust and C implementations of the BLAKE3 cryptographic hash function

Tavor - A generic fuzzing and delta-debugging framework

bitwarden_rs - Unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs [Moved to: https://github.com/dani-garcia/vaultwarden]

gomate.io - Behavior-driven development tool for GoLang

go - The Go programming language

go-json - Fast JSON encoder/decoder compatible with encoding/json for Go

rustc_codegen_gcc - libgccjit AOT codegen for rustc