Cling: A memory allocator to mitigate dangling pointers

  • Authors:
  • Periklis Akritidis

  • Affiliations:
  • Niometrics, Singapore, and University of Cambridge, UK

  • Venue:
  • USENIX Security'10 Proceedings of the 19th USENIX conference on Security
  • Year:
  • 2010

Quantified Score

Hi-index 0.00

Visualization

Abstract

Use-after-free vulnerabilities exploiting so-called dangling pointers to deallocated objects are just as dangerous as buffer overflows: they may enable arbitrary code execution. Unfortunately, state-of-the-art defenses against use-after-free vulnerabilities require compiler support, pervasive source code modifications, or incur high performance overheads. This paper presents and evaluates Cling, a memory allocator designed to thwart these attacks at runtime. Cling utilizes more address space, a plentiful resource on modern machines, to prevent type-unsafe address space reuse among objects of different types. It infers type information about allocated objects at runtime by inspecting the call stack of memory allocation routines. Cling disrupts a large class of attacks against use-after-free vulnerabilities, notably including those hijacking the C++ virtual function dispatch mechanism, with low CPU and physical memory overhead even for allocation intensive applications.