-
Notifications
You must be signed in to change notification settings - Fork 142
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Targeted Fuzzing #482
Comments
Sounds interesting and promising! There seems to be no work on distance-based scheduling for stateful ops. It would be relatively easy to implement in ItyFuzz as you can directly implement a new power schedule like: https://github.com/fuzzland/ityfuzz/blob/master/src/evm/scheduler.rs#L378-L411 |
At the moment I've been testing through modifying the PowerScheduler's I chose to do it this way as you can "prune" the corpus even as it grows. Since corpus is added every time coverage gets better, its gets to be pretty large (like BIGFI_exp.txt hits 300+ in a few mins Since next() always iterates from index 0 to last and loops back to 0, it wastes a lot of time on early indexes that are no longer best. Do you think keeping Lines 299 to 313 in abc46e3
|
Since the EVM is stateful, and all interesting things onchain occur during a stateful operation, what if we targeted those during the fuzz run?
There is some research around targeting specific operations. In web2 this is around santizers placed by LLVM. A paper like FishFuzz demonstrates how effective this can be.
Since the EVM has very specific operations that can change state, I think tracking those and scheduling testcases to go after those operations (rather than coverage) would be useful.
(CFG_block_1, CFG_block_2, score)
Concerns
Ityfuzz can be used as a test-suite, where it attempts to find lines of code with
assert
orAssertionFailed("Bug")
. By switching scheduling to prioritize state changing events, neither of these assert targets would be prioritized by the scheduler and they would take longer to findThe text was updated successfully, but these errors were encountered: