标题 简介 类型 公开时间
关联规则 关联知识 关联工具 关联文档 关联抓包
参考1(官网)
参考2
参考3
详情
[SAFE-ID: JIWO-2024-2331]   作者: 浩丶轩 发表于: [2019-03-22]

本文共 [455] 位读者顶过

2003年11月上旬,Google排名算法发生剧烈更新。一夜之间成千上万个网站从搜索引擎中消失或者从前第一页前10名降级到100页以后,使很多网站在即将到来的圣诞节购物黄金季节失去大量的客源。这就是举世瞩目的“Google佛罗里达风暴”。在此之后的2004年3月,谷歌特意为反击垃圾网站推出沙盒机制。

[出自:jiwo.org]

近日,Google宣称将开源公司内部多年来一直使用的工具「 Sandboxed API 」,该项目用于在 Linux 系统上运行C/C++ 库,可帮助软件开发者更容易地在软件中引入「沙盒」机制来防止恶意用户输入及漏洞利用。


同时Google 还公开了Sandboxed API 的核心项目「 Sandbox2 」Sandbox2 现在是Sandboxed API 的一部分,提供底层的沙盒原型。也可以单独用于隔离任意 Linux 进程,可视为更低级的API



什么是「沙盒」机制?


许多软件项目需要处理到外部数据,在安全方面会显得有些不足。当解析外部数据的软件库足够复杂时,软件会存在着严重的安全隐患,容易成为安全漏洞的受害者,从而遭遇内存损坏或是像路径遍历的逻辑解析问题。


一般的做法是将软件隔离,这个过程就是“沙箱”。通过“沙箱”,开发人员可以确保在解析用户生成内容涉及的代码时,只访问必要的资源(文件、网络连接和其他操作系统资源)。最坏的情况下,当潜在的攻击者取得软件项目范围内的远程代码执行权限时,沙盒技术可以将这些部分包含,从而保护其余的软件基础结构。

Google 指出,沙盒技术既要对攻击有高度的防御隔离能力,又要让开发者可以简单地引入使用,而不用作烦琐的设定。就这一点而言,现有的软件隔离工具未能同时达到以上两个要求。而通过开源的 Sandboxed API ,开发者便可以整合个别功能,沙盒函式库可以轻易地在其他项目上重覆运用。



Sandboxed API 如何工作?


从高层次的角度看,Sandboxed API 将要加入沙盒的库和其调用者分成两个独立的操作系统进程:主机二进制文件和沙盒。


具体的工作流程是:实际的库调用由主机端的 API 对象进行编组,通过进程间的通信发送到沙盒,沙盒的 RPC stub 会进行解组,并将调用转发到原始库。

其中,API 对象(即图中的 SAPI 对象)和 RPC stub 都由项目提供,前者由接口生成器自动生成。用户只需提供沙盒策略、允许底层库进行的一组系统调用,以及允许访问和使用的资源。


这些准备好了之后,基于沙盒 API 的库就可以轻松地在其他项目中重用了。


生成的 SAPI 对象的 API 类似于原始库的 API,不过会有额外的代码出现。这些代码用来设置沙盒,以及将内存传入和传出沙盒。但除此之外,代码流保持不变。



未来计划


谷歌很多团队已经在使用Sandboxed API  Sandbox2了。虽然该项目已经成熟,但除了维护之外,谷歌也做了一些未来的计划:


  • 支持更多的操作系统:目前只支持 Linux。开发团队将研究如何将 Sandboxed API 引入类 Unix 系统,如 BSD(FreeBSD,OpenBSD)  macOS。另外,Windows 端是一项更难的任务,还需要更多的基础工作才能实现。


  • 新的沙盒技术:随着硬件虚拟化技术的流行,沙盒有可能实现将代码限制在虚拟机中。


  • 系统构建:目前是使用 Bazel 构建项目,这其中包括依赖项。但这不是每个人都想要的使用方式,因此 CMake 支持拥有很高的任务优先级。


  • Sandboxed API 的传播:使用 Sandboxed API 来保护开源项目,有机会参与补丁奖励计划。


谷歌 ISE 沙箱团队成员解释称,“Sandboxed API 能够为单个软件库创建安全策略。这种理念能够为流行软件库创建可复用且安全的功能,而且也能保护其他软件基础设施的安全。”


谷歌还指出,任何人均可提出自己的建议,以更好地改进Sandboxed API,而它也包含在谷歌的“补丁奖励计划”中。


评论

暂无
发表评论
 返回顶部 
热度(455)
 关注微信