Accelerating Dynamic Detection of Uses of Undefined Values with Static Value-Flow Analysis

  • Authors:
  • Ding Ye;Yulei Sui;Jingling Xue

  • Affiliations:
  • Programming Languages and Compilers Group School of Computer Science and Engineering University of New South Wales, NSW 2052, Australia;Programming Languages and Compilers Group School of Computer Science and Engineering University of New South Wales, NSW 2052, Australia;Programming Languages and Compilers Group School of Computer Science and Engineering University of New South Wales, NSW 2052, Australia

  • Venue:
  • Proceedings of Annual IEEE/ACM International Symposium on Code Generation and Optimization
  • Year:
  • 2014

Quantified Score

Hi-index 0.00

Visualization

Abstract

Uninitialized variables can cause system crashes when used and security vulnerabilities when exploited. With source rather than binary instrumentation, dynamic analysis tools such as MSan can detect uninitialized memory uses at significantly reduced overhead but are still costly. In this paper, we introduce a static value-flow analysis, called Usher, to guide and accelerate the dynamic analysis performed by such tools. Usher reasons about the definedness of values using a value-flow graph (VFG) that captures def-use chains for both top-level and address-taken variables interprocedurally and removes unnecessary instrumentation by solving a graph reachability problem. Usher works well with any pointer analysis (done a priori) and facilitates advanced instrumentation-reducing optimizations (with two demonstrated here). Implemented in LLVM and evaluated using all the 15 SPEC2000 C programs, Usher can reduce the slowdown of MSan from 212% -- 302% to 123% -- 140% for a number of configurations tested.