基于类型推断的JavaScript引擎模糊测试方法研究

来源 :西北大学 | 被引量 : 0次 | 上传用户:mjbetty
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
JavaScript是一种基于原型的动态弱类型脚本语言。作为弱类型语言,JavaScript程序中不能指定每个变量的类型,其执行器——JavaScript引擎在执行到相应的语句时才能对变量的类型进行判断。由此,许多在强类型语言中可以规避的类型异常都可能被隐藏,难以发现问题所在。在对JavaScript引擎进行测试时,如何高效地产生代码覆盖率高的测试用例,并且更快地发现其隐含的缺陷,这些问题都亟待解决。因此,本文提出了一种基于类型推断的JavaScript引擎模糊测试方法。具体研究内容如下:(1)为了避免测试用例中位置靠前的代码存在异常导致程序过早退出执行,提高代码覆盖率和原始语料的利用率,将原始语料库中的代码拆分为JavaScript中的函数,称为预备测试用例。(2)为了有效地调用这些函数,并进一步提升预备测试用例的代码覆盖率,本文提出了一种参数类型推断方法。首先对函数的每个参数遍历函数体,统计每种数据类型的类型推断因子数,统计得分最高的数据类型即推定为该参数的数据类型。然后据此生成实际参数和函数的调用表达式,即得到了具有高代码覆盖率且能高效触发JavaScript引擎崩溃缺陷的测试用例。最后根据类型推断结果,对测试用例进行具有引导性的精确变异,提高了通过满足边界条件进一步提升代码覆盖率和触发更多JavaScript引擎缺陷的可能。(3)为了验证上述方法的有效性,本文实现了原型系统JSTIFuzz,并使用该原型系统进行了参数类型推断效果评估实验、代码覆盖率提升效果评估实验和模糊测试效果评估实验。实验结果表明,使用JSTIFuzz对函数的参数进行类型推断,最高比随机传参的类型精确率高10.8倍。并且JSTIFuzz能使测试用例的代码覆盖率最高提升30.33%,使JavaScript引擎的代码覆盖率最高提升8.81%.在以同等的原始语料库作为输入,并在相同的时间及环境下,JSTIFuzz可以在测试集上比其他模糊测试工具触发JavaScript引擎更多的崩溃缺陷。最后,在针对各JavaScript引擎最新版本进行的为期100个小时的模糊测试中,本文发现并提交了Rhino、Jerry Script、Quick JS和Hermes等4个JavaScript引擎的崩溃缺陷共6个,其中有2个已被确认。
其他文献
电力通信网作为智能电网基础支撑平台,在满足新型业务对关键性能的需求上面临着巨大的挑战,传统网络架构亟待被更新。软件定义网络(Software Defined Networking,SDN)因其控
青藏高原平均海拔4000米,世代栖息在这片高原的小哺乳动物面临着低氧而寒冷的气候挑战,在长期繁衍和适应进化中,这些动物形成了特别的环境适应机制,为我们研究环境适应性提供
内容中心网络(CCN)是近年来引起越来越多研究者关注的一种新型网络模型。与当前依靠主机IP地址进行网络通信的模式相比,网络内缓存数据分组的模式被认为是内容中心网络的一个
微粒的体散射函数是微粒自身固有的基本光学特性,可以反映其粒径、形状、内部构造、折射率等物理信息,在大气学、海洋学、生物医学等众多领域得到了广泛应用。现有的微粒体散射函数测量方法操作复杂、对实验环境要求较高,同时对于大粒径多颗粒或不均匀微粒散射的仿真研究还有待发展。本论文使用T矩阵方法计算了多种微粒的体散射函数,得到孤立颗粒、多颗粒体散射函数曲线的特点。并通过流体力学及Matlab、COMSOL等仿
城市管理执法是当今社会发展进程中不可分割的重要组成部分,在维护城市市容市貌方面发挥了积极作用。但随着城市的发展,管理区域扩大,城市管理执法面临着一系列问题,成为影响
近几年我国经济下行压力越来越明显,加之2019年中美贸易摩擦、2020年新型冠状病毒肺炎等众多不确定因素对经济的影响,使得企业的生存压力日益加剧,辞退员工的现象越来越多。
肝癌的患病致死率极高,然而在医学影像中,非典型肝癌与一些良性肿瘤的影像表现非常相似,很难从直观上辨别出来。现有肝脏肿瘤鉴别方法大都基于时间强度曲线,不仅依赖于额外的
在物联网与5G通信发展的驱动下,近年来移动计算模式正逐步从集中式云计算向移动边缘计算(mobile edge computing,MEC)转变。MEC技术的主要特点是将移动计算、网络控制和存储
电力线通信(Power Line Communication,PLC)和无线通信技术是配电网通信的重要组成部分,在智能家居和物联网等领域具有广泛的应用前景。PLC利用现有电力线基础设施传输信息,
在逻辑问题中,布尔可满足性问题(即SAT问题)一直广受人们的关注。SAT问题是确定以合取范式(CNF)的形式给出的命题逻辑公式是否具有对其变量的一组布尔真值赋值,使得该公式是可满足的,或者证明它不可满足。SAT问题在算法时间复杂度上是首个被证明的NP完全问题。目前,SAT问题是许多领域的研究热点,如定理证明、自动推理、模型检查、电子设计自动化、计算机辅助设计等。因此,有关SAT问题的研究,不仅在理