Effective Static Analysis of Concurrency Use-After-Free Bugs in Linux Device Drivers

Date: May 23, 2019

In Linux device drivers, use-after-free (UAF) bugs can cause system crashes and serious security problems. According to our study of Linux kernel commits, nearly half of the driver commits fixing use-after-free bugs involve driver concurrency. Due to the non-determinism of concurrent execution, concurrency use-after-free bugs are often more difficult to reproduce and detect than sequential use-after-free bugs. In this talk, I will present a new static analysis approach named DCUAF, to effectively detect concurrency use-after-free bugs in Linux device drivers. DCUAF combines a local analysis analyzing the source code of each driver with a global analysis statistically analyzing the local results of all drivers, forming a local-global analysis, to extract the pairs of driver interface functions that may be concurrently executed. Then, with these pairs, DCUAF performs a summary-based lockset analysis to detect concurrency use-after-free bugs. DCUAF has been evaluated on the driver code in the Linux kernel, and found hundreds of real concurrency use-after-free bugs.


downloadFile