RISC的高效可密封保护密钥- V
Efficient Sealable Protection Keys for RISC-V
摘要:
随着基于软件的攻击数量的持续增加,人们越来越努力地将敏感数据和可信软件组件与不可信的第三方组件隔离开来。硬件辅助的进程内隔离机制使软件开发人员能够将进程划分为隔离的组件,从而保护敏感数据不受不可信组件的影响。然而,现代处理器中的大多数现有硬件辅助进程内隔离机制,如ARM和IBM Power,都依赖于昂贵的内核操作来在可信域和不可信域之间切换。最近,英特尔推出了一个新的硬件功能,用于进程内内存隔离,称为内存保护密钥(MPK),它使用户空间进程能够以有效的方式切换域。虽然英特尔MPK的效率使开发人员能够将其用于常见用例,如代码指针完整性,但有限的唯一域数量(16个)使其无法用于需要大量域的情况,如OpenSSL。此外,英特尔MPK还存在保护密钥释放后使用漏洞。为了解决这些缺点,在本文中,我们提出了一种用于RISC-V开放ISA的高效进程内隔离技术,称为SealPK,它支持多达1024个唯一域。SealPK通过利用惰性解除分配方法来防止保护密钥释放后使用问题。为了进一步加强SealPK,我们设计了三个新的密封功能,以保护分配的域,其相关的页面,以及它们的权限,从修改或篡改的攻击者。为了证明我们设计的可行性,我们在RISC-V Rocket处理器上实现了SealPK,为其提供了操作系统支持,并在FPGA上实现了我们的设计原型。我们证明了SealPK的效率,利用它来实现一个隔离的影子堆栈在我们的FPGA原型。
英文摘要:
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.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。