中文

WebAssembly 中缺乏编译器保护的安全风险

密码学与安全 2021-11-03 v1 编程语言

摘要

WebAssembly 正越来越多地被用作跨平台应用程序的编译目标。在本文中,我们研究了将 C 程序编译到 WebAssembly 时,能否依赖现有 C 编译器所强制执行的安全措施。我们将 4,469 个已知存在缓冲区溢出漏洞的 C 程序分别编译为 x86 代码和 WebAssembly,并观察到其中 1,088 个程序生成代码的执行结果存在差异。通过人工检查,我们确定其根本原因是生成的 WebAssembly 代码中缺乏诸如栈金丝雀(stack canaries)之类的安全措施:当发生基于栈的缓冲区溢出时,x86 代码会崩溃,而相应的 WebAssembly 代码则继续执行。我们得出结论,在没有额外预防措施的情况下,将现有的 C 程序编译为 WebAssembly 可能会损害其安全性,我们鼓励在这个方向上进行更多研究。

关键词

引用

@article{arxiv.2111.01421,
  title  = {The Security Risk of Lacking Compiler Protection in WebAssembly},
  author = {Quentin Stiévenart and Coen De Roover and Mohammad Ghafari},
  journal= {arXiv preprint arXiv:2111.01421},
  year   = {2021}
}

备注

The 21st IEEE International Conference on Software Quality, Reliability and Security (QRS 2021)