With the continuous increase in the number of software-based attacks, there has been a growing effort towards isolating sensitive data and trusted software components from untrusted third-party components. A hardware-assisted intra-process isolation mechanism enables software developers to partition a process into isolated components and in turn secure sensitive data from untrusted components. However, most of the existing hardware-assisted intra-process isolation mechanisms in modern processors, such as ARM and IBM Power, rely on costly kernel operations for switching between trusted and untrusted domains. Recently, Intel introduced a new hardware feature for intra-process memory isolation, called Memory Protection Keys (MPK), which enables a user-space process to switch the domains in an efficient way. While the efficiency of Intel MPK enables developers to leverage it for common use cases such as Code-Pointer Integrity, the limited number of unique domains (16) prohibits its use in cases such as OpenSSL where a large number of domains are required. Moreover, Intel MPK suffers from the protection key use-after-free vulnerability. To address these shortcomings, in this paper, we propose an efficient intra-process isolation technique for the RISC-V open ISA, called SealPK, which supports up to 1024 unique domains. SealPK prevents the protection key use-after-free problem by leveraging a lazy de-allocation approach. To further strengthen SealPK, we devise three novel sealing features to protect the allocated domains, their associated pages, and their permissions from modifications or tampering by an attacker. To demonstrate the feasibility of our design, we implement SealPK on a RISC-V Rocket processor, provide the OS support for it, and prototype our design on an FPGA. We demonstrate the efficiency of SealPK by leveraging it to implement an isolated shadow stack on our FPGA prototype.
翻译:随着以软件为基础的攻击次数不断增加,人们日益努力将敏感数据和信任的软件组件与不受信任的第三方组件隔离开来。一个硬件辅助的流程内隔离机制使软件开发者能够将一个流程分割成孤立的组件,而反过来又从不受信任的组件中安全敏感数据。然而,在现代处理器中,如ARM和IBM Power,现有的硬件辅助的流程内隔离机制大多依靠昂贵的内核操作转换信任和不受信任的域。最近,Intel为进程内内记忆隔离引入了一个新的硬件特性,称为记忆保护键(MPK),使用户空间进程能够以有效的方式转换域。虽然Intel MPK 的高效利用使开发者能够将一个过程分割成一个过程,例如代码指导器完整性,但数量有限的独特域(16)无法在诸如需要大量域的 OploadSSL等情况下使用它。此外,Intel PK在保护关键版本的内核反应堆上展示了这些缺点,为了解决这些缺点,我们在本文中,我们提议一个高效的流程内处理内部隔离技术, 将它用一个关键设计-ICSAL-VDSASA 来防止我们使用它。