一句话:提出面向 ARM64 的多沙箱 SFI 方案 LFI,以 7% 运行时开销在单地址空间支持数万个 4GiB 沙箱。
云与 serverless 计算要求低延迟、低上下文切换地运行不可信代码,使软件故障隔离(SFI)重新重要;SFI 需权衡性能、TCB 大小、可扩展性与实现复杂度。本文在 ARM64 上重新审视经典 SFI,提出多沙箱方案 Lightweight Fault Isolation(LFI):在单一地址空间支持数万个 4GiB 沙箱,对 load、store、jump 做完整软件隔离,独立于现有编译器工具链,并用小型静态验证器缩小 TCB,同时抵御基本 Spectre 攻击。在 SPEC 2017 兼容子集上运行时开销为 7%,代码大小开销较低,还支持异常等语言机制与 SIMD 等 ISA 特性。
Software-based fault isolation (SFI) is a longstanding technique that allows isolation of one or more processes from each other with minimal or no use of hardware protection mechanisms. The demand for SFI systems has been increasing due to the advent of cloud and serverless computing, which require systems to run untrusted code with low latency and low context switch times. SFI systems must optimize for a combination of performance, trusted code base (TCB) size, scalability, and implementation complexity. With the rise of ARM64 in both cloud and personal computers, we revisit classic SFI in the context of ARM64 and present a new multi-sandbox SFI scheme that is practical to implement, efficient, and maintains a small TCB. Our technique, called Lightweight Fault Isolation (LFI), supports tens of thousands of 4GiB sandboxes in a single address space and does full software isolation of loads, stores, and jumps with a runtime overhead of 7% on the compatible subset of the SPEC 2017 benchmark suite. In addition to providing low runtime and code size overheads compared to existing multi-sandbox systems, LFI is implemented independently of existing compiler toolchains, has a small static verifier to reduce TCB size, is hardened against basic Spectre attacks, and has broad software support, including for language mechanisms like exceptions and ISA features such as SIMD.