
TL;DR
PRISM is a precise, zero-lookup object bounds protection scheme for C programs that reduces runtime overhead and preserves standard semantics by compressing bounds into pointer tags and enforcing invariants.
Contribution
PRISM introduces a novel bounds protection method that eliminates metadata lookups and supports partial structs, improving efficiency and accuracy in out-of-bounds detection.
Findings
Achieves 46.1% CPU overhead on SPEC 2017 with q-padding
Secures Apache server with only 11.1% throughput reduction
Detected out-of-bounds in gcc missed by prior tools
Abstract
Low-level C programs remain highly vulnerable to out-of-bounds memory corruption. State-of-the-art precise defenses either introduce severe runtime overhead due to metadata memory lookups, or break standard C semantics by disallowing partial structs or the creation of an object's end address (EA), a legal operation ubiquitous in real-world C code. Conversely, practical alignment-based solutions achieve efficiency only by relaxing protected bounds. We present PRISM, a precise, zero-lookup object-bounds scheme that eliminates these restrictions. PRISM compresses a 47-bit EA into the 17-bit unused tag area of a 64-bit pointer. By enforcing the invariant that a statically known starting address (KSA) cannot exceed the EA, PRISM completely eliminates the need for costly metadata memory fetches in nearly all bounds checks, while strictly retaining precise object bounds. Our invariant also…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSecurity and Verification in Computing · Logic, programming, and type systems · Cryptographic Implementations and Security
