主要观点:RLBox 是用于沙盒化第三方 C 库的工具包,最初为 Firefox 开发,由 C++框架和插件组成。
关键信息:
- 框架能轻松改造现有应用代码以安全与沙盒化库交互。
- 插件可使用 wasm2c 编译器隔离 C 库。
- 开发 RLBox 是为解决 Firefox 中第三方库细粒度隔离问题,之前手动处理沙盒细节效果差,后构建 RLBox 自动化处理。
- RLBox 确保沙盒化库内存隔离且边界交叉明确,通过底层沙盒机制和 RLBox 自身实现。
- 调用库函数时需注意数据传递和值的处理,RLBox 将沙盒值视为不可信并进行处理。
重要细节: - 2020 年起 Firefox 开始使用 RLBox。
- 沙盒化时需添加安全检查,RLBox API 简化代码改造。
- 内存隔离由底层机制实现,边界交叉由 RLBox 强制。
- 调用库函数时简单值复制,大数据类型需在沙盒内分配内存复制。
- 大数据结构通过沙盒引用传递。
- RLBox 处理 tainted 值,应用代码使用时需复制和验证。
各部分内容详细阐述:
Overview
RLBox 是用于沙盒化第三方 C 库的工具包,可用于 C++代码(其他语言支持在开发中),2020 年起 Firefox 开始使用。其由 C++框架(RLBox)和插件组成,框架方便改造应用代码与沙盒化库交互,插件可使用 wasm2c 编译器隔离 C 库。本部分提供 RLBox 框架概述、存在原因及工作原理概要,下一部分将提供应用示例教程。
Why RLBox
几年前在 Firefox 渲染器中为第三方库添加细粒度隔离时开始开发 RLBox,最初手动处理沙盒细节,效果差且难以维护,后构建 RLBox 自动化处理低级别沙盒细节,让开发者专注于沙盒化应用。
What does RLBox provide?
RLBox 确保沙盒化库内存隔离且边界交叉明确,防止库损坏 Firefox 地址空间或 Firefox 意外暴露敏感数据。通过底层沙盒机制实现内存隔离,RLBox 强制边界交叉明确,调用库函数时注意数据传递和值处理,大数据结构通过沙盒引用传递,RLBox 处理 tainted 值,应用代码使用时需复制和验证。
References
提供了相关参考链接,如下一章的链接等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。