.

Saturday, December 1, 2012

Final Year Project Sharing: Automated Syscall Fuzzer Generator on MAC OS X


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."