File Download

There are no files associated with this item.

  • Find it @ UNIST can give you direct access to the published full text of this article. (UNISTARs only)
Related Researcher

문현곤

Moon, Hyungon
Computer Systems Security Lab.
Read More

Views & Downloads

Detailed Information

Cited time in webofscience Cited time in scopus
Metadata Downloads

METASAFE: Compiling for Protecting Smart Pointer Metadata to Ensure Safe Rust Integrity

Author(s)
Kayondo, MartinBang, InyoungKwak, YeongjunMoon, HyungonPaek, Yunheung
Issued Date
2024-08-15
URI
https://scholarworks.unist.ac.kr/handle/201301/84619
Citation
USENIX Security Symposium, pp.3711 - 3728
Abstract
Rust is a programming language designed with a focus on memory safety. It introduces new concepts such as ownership and performs static bounds checks at compile time to ensure spatial and temporal memory safety. For memory operations or data types whose safety the compiler cannot prove at compile time, Rust either explicitly excludes such portions of the program, termed unsafe Rust, from static analysis, or it relies on runtime enforcement using smart pointers. Existing studies have shown that potential memory safety bugs in such unsafe Rust can bring down the entire program, proposing in-process isolation or compartmentalization as a remedy. However, in this study, we show that the safe Rust remains susceptible to memory safety bugs even with the proposed isolation applied. The smart pointers upon which safe Rust's memory safety is built rely on metadata often stored alongside program data, possibly within reach of attackers. Manipulating this metadata, an attacker can nullify safe Rust's memory safety checks dependent on it, causing memory access bugs and exploitation. In response to this issue, we propose METASAFE, a mechanism that safeguards smart pointer metadata from such attacks. METASAFE stores smart pointer metadata in a gated memory region where only a predefined set of metadata management functions can write, ensuring that each smart pointer update does not cause safe Rust's memory safety violation. We have implemented METASAFE by extending the official Rust compiler and evaluated it with a variety of micro- and application benchmarks. The overhead of METASAFE is found to be low; it incurs a 3.5% average overhead on the execution time of a web browser benchmarks.
Publisher
USENIX Association

qrcode

Items in Repository are protected by copyright, with all rights reserved, unless otherwise indicated.