FV8:用于检测规避技术的强制执行JavaScript引擎
密码学与安全
2024-05-24 v1
摘要
规避技术使得恶意代码永远不会被观察到。这严重影响了依赖动态或静态分析的工具的检测能力,因为它们从未处理过恶意代码。JavaScript的动态特性(代码经常被动态注入)使得规避特别有效。然而,我们缺乏能够在JavaScript这样具有挑战性的环境中检测规避技术的工具。在本文中,我们提出了FV8,一个修改后的V8 JavaScript引擎,旨在识别JavaScript代码中的规避技术。FV8选择性地强制在条件注入动态代码的API上执行代码,从而增强代码覆盖率,进而提高对恶意代码的可见性。我们将我们的工具集成到Node.js引擎和Chromium浏览器中,强制在npm包和Chrome浏览器扩展中执行代码。与默认的V8相比,我们的工具将代码覆盖率提高了11%,并检测到28个独特的规避类别,包括五种以前未报告的技术。在两个生态系统中被确认为恶意的数据中,我们的工具识别出1,443个(14.6%)npm包和164个(82%)扩展包含至少一种规避类型。在以前未检查的扩展(39,592个)中,我们的工具发现了16,471个注入的第三方脚本,并且由于我们的强制执行检测,总共执行了8,732,120行代码。此外,它标记了总共423个扩展既具有规避性又具有恶意性,我们手动验证了110个扩展(26%)实际上是恶意的,影响了200万用户。我们的工具是开源的,既可作为浏览器内动态分析工具,也可作为独立动态分析工具,能够检测规避代码,在某些情况下绕过混淆,提供对恶意代码的改进访问,并支持动态代码注入的递归分析。
引用
@article{arxiv.2405.13175,
title = {FV8: A Forced Execution JavaScript Engine for Detecting Evasive Techniques},
author = {Nikolaos Pantelaios and Alexandros Kapravelos},
journal= {arXiv preprint arXiv:2405.13175},
year = {2024}
}
备注
Usenix Security Symposium 2024 -- DOI To Be Announced soon