Project 4: Automated bug finding


Tutor: Clémentine Maurice clementine.maurice AT irisa.fr

Context

Bugs! They are everywhere and everybody is bound to write some in their programming life. Bugs lead to major problems in the reliability, safety, and security of systems both large and small, and it is neither easy nor always feasible to find all bugs by hand. Although it is not a substitute to code review, testing, and program verification, automated bug finding tools can alleviate some of the pain of finding bugs. Numerous techniques have been developed in the past decades, such as fuzzing, dataflow analysis, symbolic execution, model checking, or abstract interpretation. This project should give you a glimpse of this large domain and its current challenges.

Aim

Explore a few bug finding techniques on different pieces of software and compare them: what are their advantages/drawbacks? how many bugs did they find? how many real bugs?

We’re bored

Finished everything early/want to do more? Several options ahead:

Bibliography

During the final presentation, you should summarize these two papers:

This additional paper is meant to give you a bit more context about fuzzing: