Skip to main content
QUICK REVIEW

[论文解读] Montage: A Neural Network Language Model-Guided JavaScript Engine Fuzzer

Suyong Lee, Hyung-Seok Han|arXiv (Cornell University)|Jan 13, 2020
Software Testing and Debugging Techniques参考文献 41被引用 31
一句话总结

Montage 使用基于 AST 片段训练的 NNLM 来引导 JS 引擎的模糊测试,通过改造回归测试来发现新的漏洞和跨现代引擎的 CVE。

ABSTRACT

JavaScript (JS) engine vulnerabilities pose significant security threats affecting billions of web browsers. While fuzzing is a prevalent technique for finding such vulnerabilities, there have been few studies that leverage the recent advances in neural network language models (NNLMs). In this paper, we present Montage, the first NNLM-guided fuzzer for finding JS engine vulnerabilities. The key aspect of our technique is to transform a JS abstract syntax tree (AST) into a sequence of AST subtrees that can directly train prevailing NNLMs. We demonstrate that Montage is capable of generating valid JS tests, and show that it outperforms previous studies in terms of finding vulnerabilities. Montage found 37 real-world bugs, including three CVEs, in the latest JS engines, demonstrating its efficacy in finding JS engine bugs.

研究动机与目标

  • 利用 NNLM 检测 JS 引擎漏洞的动机,挖掘 CVE 与回归测试中的模式。
  • 提出基于片段的 JS AST 表示,以训练神经语言模型,学习句法与语义关系。
  • 开发一个工作流,通过 NNLM 提示的片段对回归测试进行变异,以生成可执行的 JS 测试。
  • 在 ChakraCore 与现代引擎上,与最先进的模糊测试器对比评估 Montage 在漏洞发现方面的表现。

提出的方法

  • 将 JS AST 转换为深度为 1 的片段序列,以训练 NNLM。
  • 训练一个基于 LSTM 的模型,在给定片段序列和 AST 上下文的情况下预测下一个片段。
  • 通过用 NNLM 提示的片段替换子树并解决引用错误,来变异种子回归测试。
  • 通过运行多次 72 小时的模糊测试活动并将发现的漏洞与 CodeAlchemist、jsfunfuzz 和 IFuzzer 进行比较来衡量效果。
  • 将 Montage 的基于片段的 NNLM 方法与随机、马尔可夫、以及字符/令牌级 NNLM 基线进行对比。

实验结果

研究问题

  • RQ1 NNLM 指引的片段化是否能揭示回归测试中的模式,从而导致新的 JS 引擎漏洞?
  • RQ2片段是否能够捕捉到句法和语义关系,从而提升模糊测试相对于传统方法的效果?
  • RQ3Montage 在发现真实世界的漏洞和 CVE 方面,对主流 JS 引擎的表现有多大效果?
  • RQ4将片段与传统基于令牌或基于语法的生成方法比较,对 JS 模糊测试有何影响?

主要发现

  • Montage 在五次 72 小时的测试中,在 ChakraCore 1.4.1 版本中发现了 133 个漏洞,其中包括 15 个安全漏洞。
  • 在安全漏洞方面,Montage 发现了 CodeAlchemist、jsfunfuzz 和 IFuzzer 未发现的分别为 9、12、12 的漏洞。
  • Montage 在 ChakraCore、JavaScriptCore 与 V8 之间发现了 37 个独特漏洞,其中包含 3 个安全漏洞。
  • 在 ChakraCore 中发现了其中的 37 个漏洞中的 34 个,其余分布在 JavaScriptCore 与 V8。
  • Montage 在安全漏洞中发现了多起 CVE,显示在真实世界引擎中的有效性。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

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