Affiliation:
1. University of California at San Diego, USA
2. University of Cambridge, UK
3. Intel Labs, USA
4. MPI-SWS, Germany
Abstract
Software sandboxing or software-based fault isolation (SFI) is a lightweight approach to building secure systems out of untrusted components. Mozilla, for example, uses SFI to harden the Firefox browser by sandboxing third-party libraries, and companies like Fastly and Cloudflare use SFI to safely co-locate untrusted tenants on their edge clouds. While there have been significant efforts to optimize and verify SFI enforcement, context switching in SFI systems remains largely unexplored: almost all SFI systems use
heavyweight transitions
that are not only error-prone but incur significant performance overhead from saving, clearing, and restoring registers when context switching. We identify a set of
zero-cost conditions
that characterize when sandboxed code has sufficient structured to guarantee security via lightweight
zero-cost
transitions (simple function calls). We modify the Lucet Wasm compiler and its runtime to use zero-cost transitions, eliminating the undue performance tax on systems that rely on Lucet for sandboxing (e.g., we speed up image and font rendering in Firefox by up to 29.7% and 10% respectively). To remove the Lucet compiler and its correct implementation of the Wasm specification from the trusted computing base, we (1) develop a
static binary verifier
, VeriZero, which (in seconds) checks that binaries produced by Lucet satisfy our zero-cost conditions, and (2) prove the soundness of VeriZero by developing a logical relation that captures when a compiled Wasm function is semantically well-behaved with respect to our zero-cost conditions. Finally, we show that our model is useful beyond Wasm by describing a new, purpose-built SFI system, SegmentZero32, that uses x86 segmentation and LLVM with mostly off-the-shelf passes to enforce our zero-cost conditions; our prototype performs on-par with the state-of-the-art Native Client SFI system.
Publisher
Association for Computing Machinery (ACM)
Subject
Safety, Risk, Reliability and Quality,Software
Reference89 articles.
1. 2019. Java Platform , Standard Edition : Java Virtual Machine Guide . https://docs.oracle.com/en/java/javase/13/vm/java-virtual-machine-guide.pdf 2019. Java Platform, Standard Edition: Java Virtual Machine Guide. https://docs.oracle.com/en/java/javase/13/vm/java-virtual-machine-guide.pdf
2. Efficient and language-independent mobile programs
3. Deconstructing process isolation
4. Faulty Point Unit: ABI Poisoning Attacks on Intel SGX
5. Language-independent sandboxing of just-in-time compilation and self-modifying code
Cited by
6 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Encapsulated Functions: Fortifying Rust's FFI in Embedded Systems;Proceedings of the 1st Workshop on Kernel Isolation, Safety and Verification;2023-10-23
2. Exploring Missed Optimizations in WebAssembly Optimizers;Proceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis;2023-07-12
3. Evolving Operating System Kernels Towards Secure Kernel-Driver Interfaces;Proceedings of the 19th Workshop on Hot Topics in Operating Systems;2023-06-22
4. Iris-Wasm: Robust and Modular Verification of WebAssembly Programs;Proceedings of the ACM on Programming Languages;2023-06-06
5. SecureCells: A Secure Compartmentalized Architecture;2023 IEEE Symposium on Security and Privacy (SP);2023-05