Modern operating systems (OSes) have unfettered access to application data, assuming that applications trust them. This assumption, however, is problematic under many scenarios where either the OS provider is not trustworthy or the OS can be compromised due to its large attack surface. Our investigation began with the hypothesis that unfettered access to memory is not fundamentally necessary for the OS to perform its own job, including managing the memory. The result is a system called MProtect that leverages a small piece of software running at a higher privilege level than the OS. MProtect protects the entire user space of a process, requires only a small modification to the OS, and supports major architectures such as ARM, x86 and RISC-V. Unlike prior works that resorted to nested virtualization, which is often undesirable in mobile and embedded systems, MProtect mediates how the OS accesses the memory and handles exceptions. We report an implementation of MProtect called MGuard with ARMv8/Linux and evaluate its performance with both macro and microbenchmarks. We show MGuard has a runtime TCB 2~3 times smaller than related systems and enjoys competitive performance while supporting legitimate OS access to the user space.
翻译:现代操作系统(OSes)可以不受限制地访问应用数据,假设应用软件信任它们。然而,在许多假设情况下,如果OS提供商不可靠,或者由于攻击面大,OS系统可能受到破坏,这种假设是:不受限制地访问内存并非对OS本身开展工作的基本必要,包括管理内存。结果是一个称为MProtect的系统,它利用一个小块软件运行的特权水平高于OS。MProtect保护一个过程的整个用户空间,只需要对OS作小的修改,并且支持主要结构,如ARM、X86和RISC-V。 与以前在移动和嵌入系统中使用嵌入虚拟化的工程不同,这种虚拟化往往不可取,MProtect的介面显示OS如何访问记忆和处理例外情况。我们报告用ARMv8/Linux来实施称为MGuard的MProtect的小块软件,并用宏观和微声标记来评价其性能。我们显示,MSGuard支持运行时TCB 2-3次的用户性能比相关系统小。