CubicleOS: a library OS with software componentisation for practical isolation

CubicleOS: a library OS with software componentisation for practical isolation
复制标题

DOI:
10.1145/3445814.3446731
复制
发表时间:
2021-04
期刊:
Proceedings of the 26th ACM International Conference on Architectural Support for Programming Languages and Operating Systems
影响因子:
--
通讯作者:
V. Sartakov;Lluís Vilanova;P. Pietzuch
V. Sartakov;Lluís Vilanova;P. Pietzuch
中科院分区:
其他
文献类型:
--
作者:
V. Sartakov;Lluís Vilanova;P. Pietzuch

文献摘要

被引文献

相似文献

已经提出了库操作系统来部署隔离在容器、VM或可信执行环境中的应用程序。它们通常遵循高度模块化的设计,其中结合第三方组件以提供应用程序所需的操作系统功能,并在编译和部署时进行定制以满足应用程序的要求。然而,它们的整体设计缺乏跨组件的隔离:当应用程序和操作系统组件包含安全敏感数据(例如,加密密钥或用户数据)时,缺乏隔离会使库操作系统容易受到恶意或易受攻击的第三方组件的安全攻击。我们描述了CubileOS,这是一个库操作系统,它隔离了系统中的组件,同时保持了简单的、单一的库组成开发方法。CubileOS允许独立的组件(称为隔间)与其他组件动态共享数据。它通过在用户级使用英特尔MPK隔离组件,在函数调用的粒度上提供空间内存隔离。同时,它通过功能丰富的操作系统功能支持跨机柜的零拷贝数据访问。我们的评估显示,在复杂的应用程序中,CubileOS引入了中等的端到端性能开销:对于具有8个分区的I/O密集型Nginx Web服务器,为2倍;对于具有7个分区的SQLite数据库引擎,为1.7-8倍。
Library OSs have been proposed to deploy applications isolated inside containers, VMs, or trusted execution environments. They often follow a highly modular design in which third-party components are combined to offer the OS functionality needed by an application, and they are customised at compilation and deployment time to fit application requirements. Yet their monolithic design lacks isolation across components: when applications and OS components contain security-sensitive data (e.g., cryptographic keys or user data), the lack of isolation renders library OSs open to security breaches via malicious or vulnerable third-party components. We describe CubicleOS, a library OS that isolates components in the system while maintaining the simple, monolithic development approach of library composition. CubicleOS allows isolated components, called cubicles , to share data dynamically with other components. It provides spatial memory isolation at the granularity of function calls by using Intel MPK at user-level to isolate components. At the same time, it supports zero-copy data access across cubicles with feature-rich OS functionality. Our evaluation shows that CubicleOS introduces moderate end-to-end performance overheads in complex applications: 2× for the I/O-intensive NGINX web server with 8 partitions, and 1.7–8× for the SQLite database engine with 7 partitions.