谷歌开源沙箱式 API,可助开发者免受恶意用户的输入和漏洞利用
扫描二维码
随时随地手机看文章
近日,谷歌开源了 Sandboxed API(沙箱式 API)。该项目用于在 Linux 系统上运行的 C/C++ 库,是谷歌公司内部多年来一直在数据中心使用的工具,可以帮助开发人员免受恶意用户的输入和漏洞利用。
Sandboxed API 怎么工作?
Sandboxed API 目前是针对用 C 语言编写的软件库实现的,未来可能增加更多编程语言的支持。
从高层次的角度看,Sandboxed API 将要加入沙箱的库和其调用者分成两个独立的操作系统进程:主机二进制文件和沙箱。具体的工作流程是:实际的库调用由主机端的 API 对象进行编组,通过进程间的通信发送到沙箱,沙箱的 RPC stub 会进行解组,并将调用转发到原始库。
其中,API 对象(即图中的 SAPI 对象)和 RPC stub 都由项目提供,前者由接口生成器自动生成。用户只需提供沙盒策略、允许底层库进行的一组系统调用,以及允许访问和使用的资源。这些准备好了之后,基于沙盒 API 的库就可以轻松地在其他项目中重用了。
生成的 SAPI 对象的 API 类似于原始库的 API,不过会有额外的代码出现。这些代码用来设置沙箱,以及将内存传入和传出沙箱。但除此之外,代码流保持不变。