LLVM-Based Fortification for Kernel Drivers

University essay from Lunds universitet/Institutionen för datavetenskap

Abstract: In today’s operating systems, drivers are linked with the kernel where handling pointers and performing memory accesses must be considered with much more care than in application user space. This thesis focuses on two issues. First, memory access to user space must never be done directly, because the access may fault due to insufficient access permissions or unmapped pages. Second, pointers entering via system calls must be checked prior to their use to prevent a malevolent user from exploiting kernel drivers to access kernel space for them. The proposed solution uses the type system of Clang combined with analyzes on the generated LLVM intermediate representation, both in the purpose of performing static analyzes to produce valuable messages to developers during compile time, but also to insert robustness assertions and perform code transformations. With these precautions we were able to identify four bugs in a single device driver.

  AT THIS PAGE YOU CAN DOWNLOAD THE WHOLE ESSAY. (follow the link to the next page)