Article

Effective and Efficient Memory Protection Using Dynamic Tainting

IEEE Transactions on Computers (impact factor: 1.1). 02/2012; DOI:10.1109/TC.2010.215 pp.87 - 100
Source: IEEE Xplore

ABSTRACT Programs written in languages allowing direct access to memory through pointers often contain memory-related faults, which cause nondeterministic failures and security vulnerabilities. We present a new dynamic tainting technique to detect illegal memory accesses. When memory is allocated, at runtime, we taint both the memory and the corresponding pointer using the same taint mark. Taint marks are then propagated and checked every time a memory address m is accessed through a pointer p; if the associated taint marks differ, an illegal access is reported. To allow always-on checking using a low overhead, hardware-assisted implementation, we make several key technical decisions. We use a configurable, low number of reusable taint marks instead of a unique mark for each allocated area of memory, reducing the performance overhead without losing the ability to target most memory-related faults. We also define the technique at the binary level, which helps handle applications using third-party libraries whose source code is unavailable. We created a software-only prototype of our technique and simulated a hardware-assisted implementation. Our results show that 1) it identifies a large class of memory-related faults, even when using only two unique taint marks, and 2) a hardware-assisted implementation can achieve performance overheads in single-digit percentages.

0 0
 · 
0 Bookmarks
 · 
40 Views
  • Source
    Article: Efficient Detection of All Pointer and Array Access Errors
    [show abstract] [hide abstract]
    ABSTRACT: In this paper, we present a pointer and array access checking technique that provides complete error coverage through a simple set of program transformations. Our technique, based on an extended safe pointer representation, has a number of novel aspects. Foremost, it is the first technique that detects all spatial and temporal access errors. Its use is not limited by the expressiveness of the language; that is, it can be applied successfully to compiled or interpreted languages with subscripted and mutable pointers, local references, and explicit and typeless dynamic storage management, e.g., C. Because it is a source level transformation, it is amenable to both compile- and run-time optimization. Finally, its performance, even without compile-time optimization, is quite good. We implemented a prototype translator for the C language and analyzed the checking overheads of six non-trivial, pointer intensive programs. Execution overheads range from 130% to 540%; with text and data size overheads typically below 100%.
    01/2002;
  • Source
    Conference Proceeding: Flexible Hardware Acceleration for Instruction-Grain Program Monitoring
    [show abstract] [hide abstract]
    ABSTRACT: Instruction-grain program monitoring tools, which check and analyze executing programs at the granularity of individual instructions, are invaluable for quickly detecting bugs and security attacks and then limiting their damage (via containment and/or recovery). Unfortunately, their fine-grain nature implies very high monitoring overheads for software-only tools, which are typically based on dynamic binary instrumentation. Previous hardware proposals either focus on mechanisms that target specific bugs or address only the cost of binary instrumentation. In this paper, we propose a flexible hardware solution for accelerating a wide range of instruction-grain monitoring tools. By examining a number of diverse tools (for memory checking, security tracking, and data race detection), we identify three significant common sources of overheads and then propose three novel hardware techniques for addressing these overheads: Inheritance Tracking, Idempotent Filters, and Metadata-TLBs. Together, these constitute a general-purpose hardware acceleration framework. Experimental results show our framework reduces overheads by 2-3X over the previous state-of-the-art, while supporting the needed flexibility.
    Computer Architecture, 2008. ISCA '08. 35th International Symposium on; 07/2008
  • Source
    Conference Proceeding: Effective memory protection using dynamic tainting.
    22nd IEEE/ACM International Conference on Automated Software Engineering (ASE 2007), November 5-9, 2007, Atlanta, Georgia, USA; 01/2007

Full-text (2 Sources)

View
4 Downloads
Available from
6 Feb 2013

Keywords

associated taint marks
 
binary level
 
cause nondeterministic failures
 
corresponding pointer
 
direct access
 
illegal access
 
illegal memory accesses
 
key technical decisions
 
low number
 
memory-related faults
 
new dynamic tainting technique
 
performance overheads
 
pointer p
 
reusable taint marks
 
single-digit percentages
 
source code
 
taint mark
 
Taint marks
 
two unique taint marks
 
unique mark