- 简介本文介绍了WebAssembly,它是一种可从多种编程语言进行定位的便携式二进制格式。由于具有规范良好的低级虚拟指令集、最小的内存占用和许多高性能实现,WebAssembly已经成功应用于许多轻量级进程内内存沙盒环境中。尽管具有这些优点,但WebAssembly缺乏许多标准系统接口,使得重用现有应用程序变得困难。本文提出了WALI:WebAssembly Linux接口,它是Linux用户空间系统调用的一个薄层,创建了一种新的虚拟化类别,其中WebAssembly与本地进程和底层操作系统无缝交互。通过虚拟化用户空间的最低级别,WALI提供了应用程序可移植性,并以很少的努力重用现有的编译器后端。由于WebAssembly具有控制流完整性保证,这些模块获得了一种额外的保护,可以防止远程代码注入攻击。此外,基于能力的API本身也可以通过WALI进行虚拟化和实现,通过更好的分层提高重用性和鲁棒性。我们在现代的WebAssembly引擎中展示了WALI的实现,并评估了它在许多应用程序上的性能,现在我们可以使用大部分轻松的努力来编译它们。
- 图表
- 解决问题WALI试图解决WebAssembly缺少标准系统接口的问题,从而使得现有应用程序难以复用的问题。
- 关键思路WALI是一个轻量级的WebAssembly Linux接口,通过在Linux用户空间系统调用之上创建一个薄层,实现WebAssembly与本地进程和底层操作系统的无缝交互。通过虚拟化用户空间的最低级别,WALI提供了应用程序可移植性,同时重用现有的编译器后端。
- 其它亮点WALI提供了一种新的虚拟化方式,使得WebAssembly模块获得了远程代码注入攻击的额外保护。此外,基于能力的API本身也可以在WALI的基础上进行虚拟化和实现,通过更好的分层改进重用和鲁棒性。作者在现代WebAssembly引擎中实现了WALI,并对其在许多应用程序上的性能进行了评估。
- 最近在这个领域中,还有一些相关的研究,如WebAssembly System Interface (WASI)、Lucet和WAVM。
沙发等你来抢
去评论
评论
沙发等你来抢