设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 手机 数据
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

谷歌开源了一个项目,可为 C/C++ 库创建安全策略

发布时间:2019-03-20 12:05 所属栏目:21 来源:段段段落
导读:近日,谷歌开源了Sandboxed API(沙箱式 API)。该项目用于在 Linux 系统上运行的 C/C++ 库,是谷歌公司内部多年来一直在数据中心使用的工具,可以帮助开发人员免受恶意用户的输入和漏洞利用。 沙箱是什么? 许多软件项目需要处理到外部数据,在安全方面会

近日,谷歌开源了 Sandboxed API(沙箱式 API)。该项目用于在 Linux 系统上运行的 C/C++ 库,是谷歌公司内部多年来一直在数据中心使用的工具,可以帮助开发人员免受恶意用户的输入和漏洞利用。

沙箱是什么?

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

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

谷歌开源了一个项目,可为 C/C++ 库创建安全策略

沙盒技术必须具有很强的抵御攻击能力,从而充分保护操作系统的其余部分。同时沙箱必须足够易于使用,以供软件开发人员使用。为了帮助完成这项任务,谷歌开源了 Sandboxed API,一个经过实战考验的项目,可以为各个软件库创建安全策略。

Sandboxed API 用于访问沙盒库中的各个软件功能,也因此谷歌还公开了核心沙盒项目 Sandbox2。Sandbox2 现在是 Sandboxed API 的一部分,提供了底层的沙盒原型。它也可以单独用于隔离任意 Linux 进程,可以视为更低级的 API。

Sandboxed API 怎么工作?

Sandboxed API 目前是针对用 C 语言编写的软件库实现的,未来可能增加更多编程语言的支持。

从高层次的角度看,Sandboxed API 将要加入沙箱的库和其调用者分成两个独立的操作系统进程:主机二进制文件和沙箱。具体的工作流程是:实际的库调用由主机端的 API 对象进行编组,通过进程间的通信发送到沙箱,沙箱的 RPC stub 会进行解组,并将调用转发到原始库。

谷歌开源了一个项目,可为 C/C++ 库创建安全策略

其中,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 来保护开源项目,有机会参与补丁奖励计划。

【编辑推荐】

  1. 蚂蚁金服开源 SOFAJRaft:生产级 Java Raft 算法库
  2. 亚太云计算市场报告:腾讯位列前五 份额首超谷歌
  3. 阿里开源 OpenJDK 发行版 Dragonwell
  4. SAP 开源 SCA 工具,扫描软件包依赖漏洞
  5. 一文告诉你如何全方位监控Linux系统状况
【责任编辑:张燕妮 TEL:(010)68476606】
点赞 0

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读