Differential Fuzzing between multiple languages #374
-
I have two implementations of the same logic, one in Go and one in Rust, and would like to use differential fuzzing to compare them. Is there a better way to compare against a binary you cannot easily call in-process from Rust, other than spawning it in a separate process in every single fuzzing run? Another option I can think of is writing a Fuzzer in Go and calling the Rust code from there (using CGo). As far as I can tell both options are only aware and only use instrumentation/coverage on one of the two languages. Any input on this would be welcome. P.S. I've seen POLYFUZZ, but it unfortunately does not support Go. |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 1 reply
-
libfuzzer is really designed for fuzz targets where you can directly link and call all the code inside the fuzz target. FWIW, we do differential fuzzing quite extensively in Wasmtime and Cranelift, but we link everything into the same binary. If you really can't link your oracle into your binary, then I'd suggest writing a little python harness or something. |
Beta Was this translation helpful? Give feedback.
libfuzzer is really designed for fuzz targets where you can directly link and call all the code inside the fuzz target. FWIW, we do differential fuzzing quite extensively in Wasmtime and Cranelift, but we link everything into the same binary.
If you really can't link your oracle into your binary, then I'd suggest writing a little python harness or something.