使用 RLBox 进行实用的第三方库沙箱化

主要观点: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

提供了相关参考链接,如下一章的链接等。

阅读 11
0 条评论