Skip to main content
QUICK REVIEW

[论文解读] Taint Tracking for WebAssembly

Aron Szanto, Timothy Tamm|arXiv (Cornell University)|Jul 22, 2018
Advanced Malware Detection Techniques参考文献 4被引用 13
一句话总结

本论文提出首个基于 JavaScript 的 WebAssembly 虚拟机,集成污点追踪功能,可对不受信任的 WebAssembly 代码中的敏感数据流实现细粒度监控。该工作引入间接污点追踪,以捕获变量之间的隐式数据流,在实践中验证了其正确性、安全性以及线性性能开销。

ABSTRACT

WebAssembly seeks to provide an alternative to running large and untrusted binaries within web browsers by implementing a portable, performant, and secure bytecode format for native web computation. However, WebAssembly is largely unstudied from a security perspective. In this work, we build the first WebAssembly virtual machine that runs in native JavaScript, and implement a novel taint tracking system that allows a user to run untrusted WebAssembly code while monitoring the flow of sensitive data through the application. We also introduce indirect taint, a label that denotes the implicit flow of sensitive information between local variables. Through rigorous testing and validation, we show that our system is correct, secure, and relatively efficient, benefiting from the native performance of WebAssembly while retaining precise security guarantees of more mature software paradigms.

研究动机与目标

  • 为解决客户端执行环境中 WebAssembly 缺乏运行时安全分析工具(尤其是污点追踪)的问题。
  • 构建一个完全功能的、用 JavaScript 实现的 WebAssembly 虚拟机,用于客户端执行与分析。
  • 设计并实现一种在二进制代码粒度上运行的污点追踪系统,支持直接与间接污点传播。
  • 通过全面的测试与基准测试,验证污点追踪系统的正确性、安全性与性能特征。
  • 为未来在真实场景中部署污点追踪提供支持,例如用于隐私与安全审计的浏览器扩展。

提出的方法

  • 开发了一个定制的基于 JavaScript 的 WebAssembly 虚拟机,用于在沙箱环境中解释并执行 WebAssembly 二进制代码。
  • 在指令级别实现污点追踪,通过栈操作与内存访问传播污点标签,并保证强类型约束。
  • 引入间接污点作为变量的标签,用于标识其值受污染输入影响但未被直接赋值,从而捕获隐式数据流。
  • 设计并执行了一个全面的测试套件,包括 C 语言到 WebAssembly 的编译、污点传播验证以及性能基准测试。
  • 使用调试工具集检查每条指令执行后栈与内存状态,实现对污点传播的精确验证。
  • 测量在不同工作负载下污点追踪的时间与内存开销,包括循环结构及复杂函数(如欧拉函数)。

实验结果

研究问题

  • RQ1能否在 JavaScript 中实现一个完全功能的 WebAssembly 虚拟机,以支持对不受信任代码的运行时分析?
  • RQ2如何在 WebAssembly 执行环境中有效集成污点追踪,实现对数据流的细粒度控制?
  • RQ3在真实工作负载中应用污点追踪时,其执行时间与内存使用的性能开销如何?
  • RQ4如何建模与检测间接污点,以捕获仅靠直接污点追踪无法发现的隐式数据流?
  • RQ5污点追踪系统能否正确且安全地追踪复杂控制流(包括递归与迭代算法)中的敏感数据?

主要发现

  • 所提出的基于 JavaScript 的 WebAssembly 虚拟机能够正确执行 WebAssembly 二进制文件,包括欧拉函数的递归与迭代实现等复杂函数。
  • 污点追踪系统能正确传播直接赋值产生的污点,并捕获间接污点,即变量受污染值影响但未被直接赋值的情况。
  • 污点追踪引入了与变量赋值数量成线性关系的时间开销,在简单循环中性能损耗可测量且可管理。
  • 间接污点传播的性能开销高于直接污点追踪,尤其在计算密集型函数(如欧拉函数)中更为明显,但其增长仍保持渐近线性。
  • 污点追踪导致的内存开销随可污点变量数量线性增长,符合预期,堆内存使用量与分配的污点标签数量成比例增加。
  • 无论数据量大小,污点转移均保持常数时间,确保任何程序在启用污点追踪后其渐近效率不受影响。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。