Precise Compositional Buffer Overflow Detection via Heap DisjointnessACM SIGSOFT Distinguished Paper Award
Static analysis techniques for buffer overflow detection still struggle with being scalable for millions of lines of code, while being precise enough to have an acceptable false positive rate. The checking of buffer overflow necessitates reasoning about the heap reachability and numerical relations, which are mutually dependent. Existing techniques to resolve the dependency cycle either sacrifice precision or efficiency due to their limitations in reasoning about symbolic heap location, i.e., heap location with possibly symbolic numerical offsets. A symbolic heap location potentially aliases a large number of other heap locations, leading to a disjunction of heap states that is particularly challenging to reason precisely.
Acknowledging the inherent difficulties in heap and numerical reasoning, we introduce a disjointness assumption into the analysis by shrinking the program state space so that all the symbolic locations involved in memory accesses are disjoint from each other. The disjointness property permits strong updates to be performed at symbolic heap locations, significantly improving the precision by incorporating numerical information in heap reasoning. Also, it aids in the design of a compositional analysis to boost scalability, where compact and precise function summaries are efficiently generated and reused. We implement the idea in the static buffer overflow detector Cod. When applying it to large, real-world software such as PHP and QEMU, we have uncovered 29 buffer overflow bugs with a false positive rate of 37%, while projects of millions of lines of code can be successfully analyzed within four hours.
Thu 19 SepDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
13:30 - 14:50 | Static analysisTechnical Papers at EI 9 Hlawka Chair(s): Dominik Helm University of Duisburg-Essen; TU Darmstadt; National Research Center for Applied Cybersecurity ATHENE | ||
13:30 20mTalk | Precise Compositional Buffer Overflow Detection via Heap DisjointnessACM SIGSOFT Distinguished Paper Award Technical Papers Yiyuan Guo Hong Kong University of Science and Technology, Peisen Yao Zhejiang University, Charles Zhang Hong Kong University of Science and Technology DOI Pre-print | ||
13:50 20mTalk | Finding Cuts in Static Analysis Graphs to Debloat Software Technical Papers Christoph Blumschein Hasso Plattner Institute; University of Potsdam, Fabio Niephaus Oracle Labs, Codrut Stancu Oracle Labs, Christian Wimmer Oracle Labs, Jens Lincke Hasso Plattner Institute; University of Potsdam, Robert Hirschfeld Hasso Plattner Institute; University of Potsdam DOI Pre-print | ||
14:10 20mTalk | Scalable, Sound, and Accurate Jump Table Analysis Technical Papers Huan Nguyen Stony Brook University, Soumyakant Priyadarshan Stony Brook University, R. Sekar Stony Brook University DOI | ||
14:30 20mTalk | Better Not Together: Staged Solving for Context-Free Language Reachability Technical Papers Chenghang Shi Institute of Computing Technology at Chinese Academy of Sciences; University of Chinese Academy of Sciences, Haofeng Li Institute of Computing Technology at Chinese Academy of Sciences, Jie Lu Institute of Computing Technology at Chinese Academy of Sciences, Lian Li Institute of Computing Technology at Chinese Academy of Sciences; University of Chinese Academy of Sciences DOI Pre-print |