scispace - formally typeset
Open AccessProceedings ArticleDOI

Low-fat pointers: compact encoding and efficient gate-level implementation of fat pointers for spatial safety and capability-based security

Reads0
Chats0
TLDR
To achieve the safety of fat pointers without increasing program state, this work compactly encode approximate base and bound pointers along with exact address pointers for a 46b address space into one 64-bit word with a worst-case memory overhead of 3%.
Abstract
Referencing outside the bounds of an array or buffer is a common source of bugs and security vulnerabilities in today's software. We can enforce spatial safety and eliminate these violations by inseparably associating bounds with every pointer (fat pointer) and checking these bounds on every memory access. By further adding hardware-managed tags to the pointer, we make them unforgeable. This, in turn, allows the pointers to be used as capabilities to facilitate fine-grained access control and fast security domain crossing. Dedicated checking hardware runs in parallel with the processor's normal datapath so that the checks do not slow down processor operation (0% runtime overhead). To achieve the safety of fat pointers without increasing program state, we compactly encode approximate base and bound pointers along with exact address pointers for a 46b address space into one 64-bit word with a worst-case memory overhead of 3%. We develop gate-level implementations of the logic for updating and validating these compact fat pointers and show that the hardware requirements are low and the critical paths for common operations are smaller than processor ALU operations. Specifically, we show that the fat-pointer check and update operations can run in a 4 ns clock cycle on a Virtex 6 (40nm) implementation while only using 1100 6-LUTs or about the area of a double-precision, floating-point adder.

read more

Citations
More filters
Journal ArticleDOI

The CHERI capability model: revisiting RISC in an age of risk

TL;DR: CHERI, a hybrid capability model that extends the 64-bit MIPS ISA with byte-granularity memory protection, is presented, demonstrating that it enables language memory model enforcement and fault isolation in hardware rather than software, and that the CHERI mechanisms are easily adopted by existing programs for efficient in-program memory safety.
Proceedings ArticleDOI

Control Jujutsu: On the Weaknesses of Fine-Grained Control Flow Integrity

TL;DR: It is shown that many popular code bases such as Apache and Nginx use coding practices that create flexibility in their intended control flow graph (CFG) even when a strong static analyzer is used to construct the CFG, which allows an attacker to gain control of the execution while strictly adhering to a fine-grained CFI.
Proceedings ArticleDOI

CHERI: A Hybrid Capability-System Architecture for Scalable Software Compartmentalization

TL;DR: This work demonstrates multiple orders-of-magnitude improvement in scalability, simplified programmability, and resulting tangible security benefits as compared to compartmentalization based on pure Memory-Management Unit (MMU) designs.
Proceedings ArticleDOI

Missing the Point(er): On the Effectiveness of Code Pointer Integrity

TL;DR: It is shown that, for architectures that do not support segmentation in which CPI relies on information hiding, CPI's safe region can be leaked and then maliciously modified by using data pointer overwrites.
Proceedings ArticleDOI

SGXBOUNDS: Memory Safety for Shielded Execution

TL;DR: SGXBounds is an efficient memory-safety approach for shielded execution exploiting the architectural features of Intel SGX based on the LLVM compiler framework targeting unmodified multithreaded applications and has performance and memory overheads similar to AddressSanitizer and Intel MPX.
References
More filters
Journal ArticleDOI

CCured: type-safe retrofitting of legacy software

TL;DR: CCured extends C's type system by separating pointer types according to their usage, and it uses a surprisingly simple type inference algorithm that is able to infer the appropriate pointer kinds for existing C programs.
Proceedings ArticleDOI

EROS: a fast capability system

TL;DR: EROS as discussed by the authors is a capability-based operating system for commodity processors which uses a single level storage model, which is transparent to applications and can reduce the overhead of capabilities by coupling well-chosen abstract objects with caching techniques.
Proceedings Article

A practical dynamic buffer overflow detector

TL;DR: A practical detector called CRED (C Range Error Detector) that is effective in detecting buffer overrun attacks on programs with known vulnerabilities, and is the only tool found to guard against a testbed of 20 different buffer overflow attacks.
Proceedings ArticleDOI

CETS: compiler enforced temporal safety for C

TL;DR: CETS maintains a unique identifier with each object, associates this metadata with the pointers in a disjoint metadata space to retain memory layout compatibility, and checks that the object is still allocated on pointer dereferences to provide temporal safety.
Proceedings Article

Baggy bounds checking: an efficient and backwards-compatible defense against out-of-bounds errors

TL;DR: A backwards compatible bounds checking technique that substantially reduces performance overhead and is more than two times faster than the fastest previous technique and about five times faster--using less memory--than recording object bounds using a splay tree.