转换为 WebAssembly 时使用什么语言有关系吗?

Hol*_*ons 4 webassembly

例如,C 没有与 Rust 相同的安全解决方案,但是用 Rust 编写的 WebAssembly 是否具有 Rust 的优点?

用 Rust 编写并转换为 WebAssembly 的程序会比用 C 编写的程序“更安全”吗?

mca*_*ton 5

是的。

虽然 WASM 本身可以防止一些攻击,但许多 Rust 无法或难以利用的攻击仍然存在于 C 到 WASM 程序中。WASM 中至少存在以下攻击向量:

  • 整数溢出/下溢:它们是 C 中的 UB,但在 Rust 中定义。
  • 缓冲区溢出:WASM 使用线性内存。Rust 防止缓冲区溢出,这些是 C 中的 UB。
  • 免费后使用:在安全的 Rust 中不可能有,这些在 C 中很常见。

无论使用 C 还是 Rust 作为源语言,使用 WASM 都不应该进行其他一些攻击:

  • 任意操作系统级别的代码执行:WASM 根本没有这些。
  • WASM 中不需要可执行空间保护。

使用这些攻击媒介的唯一方法是在浏览器本身中找到漏洞。