Project Title: Automated Syscall Fuzzer Generator on MAX OS X
Categories: Fuzzer, Mac OS X XNU Kernel.
Students: Jeremy Heng (team leader), Ku Wee Kiat, Gerald Tan and Goh Kee Chin.
Synopsis: The purpose of this project is to develop a fuzzer to test for vulnerabilities and reveal bugs in the Mac OS X XNU Kernel.
Aim: Fuzzers built to test for vulnerabilities and reveal bugs in the Mac OS X XNU Kernel are scarce, in both the open and closed source worlds. In addition, existing fuzzers lack the intelligence to adapt to a rapidly changing environment such as a regularly updated operating system kernel. Existing fuzzers do not take into account the semantics of system calls or the order in which these system calls are called. Grapevine is a highly abstractable automated fuzzer designed for the discovery of vulnerabilities and bugs in the Mac OS X’s XNU kernel through the process of ’fuzzing’.
Objectives of the Project:
- To develop a tool that is capable of discovering bugs in the Mac OS X’s XNU kernel through the process of fuzzing
- To automatically and dynamically generate the system calls for execution based on attached semantic rules
- To provide a means by which further investigation may be carried out in the event of a detected failure of the kernel (e.g. kernel panic through corrupted kernel memory).
The system overview. |
(From L to R): Jeremy Heng (team leader), Ku Wee Kiat, Gerald Tan and Goh Kee Chin. |
“The Grapevine Project is, I would consider, a great achievement. To design a kernel fuzzer; implement it in one of my favourite languages of all time, Python; and then release it to the open source, completely free and for anyone to use is a huge and memorable thing to do. It's thrilling to be part of the open source community and to contribute to the collective knowledge as part of a final year project. The project was more academic than business, and I particularly enjoyed the technicalities of our subject, the XNU kernel. It is up for free at https://github.com/jergorn93/grapevine, and I definitely hope that it can grow beyond a school project into something bigger in future." said Jeremy, the student leader of the project.
Another student, Wee kiat said, "Doing a large project like this FYP has taught me many things. For one, it is faster to learn a programming language while actually working on a project. This project is written entirely in the Python programming language. Starting out, there was only 1 person in our group with Python knowledge. After the project, the whole group is able to program in Python. Another thing I realised after the completion of the project is the need of to plan properly and thoroughly and to have good communication. There might not be a need for a full SDLC for FYP, but it is still important to have a solid base idea of the project/application and along the way, a strong idea of the tiny details or functions of the application. So that there will not be any last minute misconceptions or misintepretations. I feel that the FYP is one of the best projects I've worked on throughout my 3 years in poly."