子树类型敏感的JavaScript引擎灰盒测试技术
2021-08-25王聪冲甘水滔王晓锋
王聪冲,甘水滔,王晓锋
1江南大学人工智能与计算机学院 无锡 中国 214122 2数字工程与先进计算国家重点实验室 无锡 中国214083
1 介绍
JavaScript引擎是浏览器的必要组成部分,其安全性一直备受关注[1],由于其代码量巨大、逻辑极其复杂,导致漏洞挖掘技术发展一直无法满足JavaScript引擎的安全测试需求,针对JavaScript引擎漏洞攻击事件层出不穷。通过对 CVE漏洞库统计,暴露在 Jerryscript[2]、ChakraCore[3]、SpiderMonkey[4]、JavaScriptCore[5]、V8[6]其高危漏洞条目超过 450条,其中ChakraCore和V8的数量分别超过150条和200条。并且在2020年上半年暴露的高危漏洞数量已超过2019年全年暴露的总数。具体如图1所示。通过进一步对过去JavaScript引擎漏洞暴露来源调查,模糊测试是发现JavaScript引擎漏洞的主流自动化检测方法[7]。

图1 主流JavaScript引擎的CVE漏洞暴露统计情况Figure 1 CVE vulnerability exposure statistics for mainstream JavaScript engines
模糊测试[8]通过不断自动构造随机非预期的输入数据给目标软件,实时监视目标软件运行异常信号,能有效发现软件存在的脆弱性[9]。模糊测试主要分为黑盒和灰盒模型,在2014年以前基本以黑盒模型为主,黑盒模型不具备程序信息反馈能力,具有运行速度快,能适应复杂规模代码软件等优点,但测试效率一直受限于随机性过大、代码覆盖能力弱等问题[10]。从 2015年开始,自经典灰盒测试系统AFL[11]问世以来,通过路径覆盖信息实时反馈,在文档解析、图片解析、音频解析等文件型输入的软件目标测试过程中达到较高代码覆盖率,发现大量未公开漏洞,并实现了向协议型[12]和内核型[13]对象应用扩展。灰盒模型已逐步成为最有效的主流模糊测……
