I'm deeply involved in smart contract security, and I'm currently exploring the world of fuzz testing for Solidity smart contracts. Fuzz testing seems to hold significant promise for identifying vulnerabilities, but I'm interested in learning from those with experience in this area. What are the best tools and frameworks available for fuzz testing Solidity contracts? Are there any recent developments or updates in this space that auditors should be aware of? Are there any specific contract types or functions that are more susceptible to fuzzing?
1 Answer
Foundry and Echidna are the two main fuzz testing tools I know of. There's also been research and development with Symbolic Execution, essentially a way to mathematically determine branches in your code when fuzzing rather than using totally random input. Echidna uses symbolic execution. Technically, I think you would classify Symbolic Execution and fuzz testing as different things, but they definitely are used for the same purpose.
https://book.getfoundry.sh/forge/fuzz-testing
https://github.com/crytic/echidna
Some more tools: https://www.alchemy.com/best/fuzzing-tools