Inspiration
Many developers are unaware of the potential vulnerabilities that exist in their programs. Others struggle to find an efficient, reliable way to identify the locations of their vulnerabilities. We aim to improve the safety and integrity of software by enabling developers to efficiently test the security of their programs in order to mitigate the risk of data breaches, financial losses and reputational damage.
What it does
The Miraculous Bits and Bytes Fuzzer provides a way for software developers from all levels to safely test and identify potential vulnerabilities that exist in their programs. It works by mutating the bytes of a file and sending it to a program that takes and processes the file. If the mutated file causes unexpected crashes in the program, then our fuzzer will record what byte the program crashes at and what error it outputs in a separate file.
How we built it
We utilized the Go programming language to implement our fuzzer. We used various libraries in Go to open, read, and write files. We also used public projects from GitHub to test our fuzzer with to ensure that it is working the way we intended.
Challenges we ran into
We encountered various challenges, including using libraries in Go to open, read, and write files. Without much meaningful experience in Go and fuzzing, we encountered many technical problems that required mentorship and consulting. For instance, our team had trouble figuring out a good way to mutate a file, so we asked others who had more experience in the related field for ideas. Additionally, learning to operate under pressure and to communicate effectively also presented great challenges to our team.
Accomplishments that we're proud of
Many of our members did not know anything about the Go programming language before this project. We're proud that we were able to put together a functional project that helps addressing issues in the field of computer science.
What we learned
We learned how to implement programs in the Go programming language as well as how to build a fuzzer that contributes to improving the safety and integrity of our future programs.
What's next for The Miraculous Bits and Bytes Fuzzer
Flexibility
We would improve the flexibility of our fuzzer by taking in custom files for modification instead of arbitrarily defined file paths.
Versatility
We would like to make our program more versatile by allowing it to test a greater variety of programs, such as taking inputs other than files.
Optimization
Our fuzzer can be further optimized by having more functionalities, such as incorporating the concept of concurrency to make our fuzzer more efficient. Another optimization is that currently, our fuzzer is only capable of recording what byte the program crashed at and what error the program outputted. Our fuzzer can be improved by being able to tell what vulnerability the error could represent.
Built With
- golang
- vscode
Log in or sign up for Devpost to join the conversation.