RLBox,Mozilla使用的新库隔离技术

Firefox徽标

斯坦福大学研究人员的, 美国加州大学 在圣地亚哥 y la 德州大学 在奥斯丁 他们发展了 他们命名为的一组工具 «RLBox»,可用作额外的绝缘等级 阻止功能库中的漏洞。

RLBox旨在解决第三方库的安全性问题 不受信任,不受开发人员控制,但是主项目可能会破坏这些漏洞。

Mozilla计划在用于Linux的Firefox 74版本中使用RLBox, 的汇编 Firefox 75中的macOS 隔离Graphite库的执行,它负责表示来源。

同时,RLBox并非特定于Firefox,可用于隔离任意项目中的任何库。

关于RLBox

运行机制 RLBox归结为将C / C ++代码从隔离的库编译为中间WebAssembly代码 低级,然后作为WebAssembly模块发布,其权限设置为仅绑定到此模块(例如,用于处理字符串的库无法打开套接字或网络文件)C / C ++代码转换使用wasi-sdk完成WebAssembly。

对于直接执行, 使用Lucet编译器将WebAssembly模块编译为机器代码 它在与应用程序其余内存分开的“纳米进程”中运行。 Lucet编译器基于与Firefox中用于运行WebAssembly的Cranelift JIT引擎相同的代码。

组装后的模块在单独的存储区中工作 并且它无权访问其余的地址空间。 在利用库中的漏洞的情况下,攻击者将受到限制,并且将无法访问主进程的内存区域或将控制权转移到沙箱外部。

为开发人员提供了高级API,使您可以在隔离模式下调用库函数。

MGI WebAssembly控制器几乎不需要其他资源 并且与它们的交互并不比调用普通函数慢(库函数以本机代码形式运行,并且仅在与沙盒环境交互的过程中复制和验证数据时才会发生重载) 。

隔离库的功能不能直接调用,要访问它们,您必须使用该层 invoke_sandbox_function()。

反过来,如果它们需要从库中调用外部函数,则必须使用register_callback方法显式定义这些函数(默认情况下,RLBox提供对标准库函数的访问)。

为了确保安全的内存操作, 隔离代码执行是不够的 而且 您需要提供对返回数据流的验证。

在隔离的环境中生成的值被标记为不可靠,受污染标签的限制,并且需要验证并复制到应用程序内存以进行``清理''。

如果不进行清理,尝试在需要常规数据的上下文中使用污染数据(反之亦然)会导致在编译阶段生成错误。

小型函数参数,返回值和结构是通过在进程内存和沙箱内存之间进行复制来传递的。 对于大型数据集,将在隔离的环境中分配内存,并将直接的“沙盒引用”指针返回到主进程。

RLBox开发在MIT许可下分发。 RLBox当前支持Linux和macOS 并有望在以后与Windows兼容。

如果您想了解有关Mozilla计划在Firefox中实现的这项新技术的更多信息,可以咨询其开发并测试API。 在下面的链接中。


成为第一个发表评论

发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。