【技术实现步骤摘要】
一种基于自然语言处理的JavaScript引擎定向模糊测试方法及系统
[0001]本专利技术涉及软件安全测试
,尤其涉及一种基于自然语言处理的JavaScript引擎定向模糊测试方法及系统。
技术介绍
[0002]JavaScript引擎庞大的代码空间决定了模糊测试技术在JavaScript引擎漏洞挖掘中的主要地位,以下将归纳总结前期JavaScript引擎模糊测试工作的研究思路及成果。
[0003]JSfunfuzz是由Mozilla安全团队于2008年发布的模糊测试工具,JSfunfuzz通过固定的JavaScript语法模板生成JavaScript引擎测试用例,提高了测试用例的有效性;Holler C等人提出的LangFuzz利用语法模板将种子文件的AST分解为AST片段,通过随机组合AST片段的方式生成语法正确的测试用例;Veggalam等人提出的IFuzzer运用遗传算法交换不同AST之间的子树,保证了测试用例的生成速度和多样性;Han等人提出的CodeAlchemist将种子文件按照并列结构分解为若 ...
【技术保护点】
【技术特征摘要】
1.一种基于自然语言处理的JavaScript引擎定向模糊测试方法,其特征在于,包括:步骤1:将语料库中的JavaScript种子文件解析为抽象语法树AST树,删除有语法错误的种子文件;步骤2:遍历AST树,构建高度为2的AST子树序列,并基于AST子树序列构建BERT语言模型词汇库vocab和BERT语言模型分句sentence;步骤3:将vocab和sentence作为BERT语言模型预训练输入,得到BERT预训练模型;步骤4:基于AST子树序列得到AST子树的父节点序列,利用BERT预训练模型将AST子树的父节点序列作为残差网络的输入,结合掩码语言模型MLM进行微调,得到JavaScript测试用例生成模型;步骤5:比较各版本JavaScript引擎源文件信息,将补丁位置作为敏感位置,对JavaScript引擎源文件进行插装编译;步骤6:利用JavaScript测试用例生成模型生成JavaScript测试用例作为定向模糊测试输入文件,对JavaScript引擎进行定向模糊测试。2.根据权利要求1所述的一种基于自然语言处理的JavaScript引擎定向模糊测试方法,其特征在于,所述步骤2包括:定义初始化种子的AST子树序列astlist,句子sentence和段落paragraph为空列表,用travel函数对AST树进行递归遍历,构建AST子树序列、分句sentence和段落paragraph并将相关信息保存;travel函数首先对AST树进行递归遍历,对每个节点依次进行判断,如果节点的父节点类型为“Program”,则说明该节点为一个语句的起始节点,把上一句添加到段落paragraph中,并重新初始化句子sentence;如果目标节点node有子节点,则把该节点的修剪子树和父节点信息以及父节点类型信息添加到astlist中,把单独的修剪子树添加到sentence中,并对该node进行遍历;如果该节点没有子节点,说明该节点已经是终结符的内容表示,此时更新vocab后退出当前递归。3.根据权利要求1所述的一种基于自然语言处理的JavaScript引擎定向模糊测试方法,其特征在于,所述步骤3包括:将vocab和sentence作为BERT语言模型预训练输入,对BERT模型进行简化用于保证训练过程中不出现过拟合现象,从sentence集合中按比例选择相邻和不相邻的句子对,BERT输入序列的嵌入是词元嵌入、句子嵌入和位置嵌入之和,每个词元、句子标记和位置标记都转化为一个固定维数维的向量,输入数据通过简化的BERT模型,通过BERT模型中MLM和下一句预测这两个预训练任务进行特征提取,学习JavaScript语言的语法和语义信息,最终得到BERT预训练模型。4.根据权利要求1所述的一种基于自然语言处理的JavaScript引擎定向模糊测试方法,其特征在于,所述步骤4包括:在BERT预训练模型的基础上,增加微调结构,所述微调结构包括两个线性神经网络层,及两个神经网络层之间的ReLU函数;两个神经网络层的大小分别为{输入长度*BERT模型隐藏维度}和{BERT模型隐藏维度*1024};该微调结构的输出与BERT预训练模型中MLM输出段的输出叠加;所述MLM输出段与微调结构组成相同;将AST子树序列、AST子树的父节点序列分别输入简化的BERT模型、微调机构进行处理,最终BERT预训练模型中MLM输出段的输出、微调机构输出叠加后经过ReLU激活和层归一化,
归一化结果使用大小为{1024*vocab长度}的线性层统一输出,输出的结果为预测的下一个词的在vocab上的概率分布。5.根据权利要求1所述的一种基于自然语言处理的JavaScript引擎定向模糊测试方法,其特征在于,所述步骤6包括:随机选择一个AST子树序列,选择一定比例的点位进行变异替换,依次对替换点进行处理,对于替换点,先获取替换点的父节点和子节点,将替换点和子节点全部删除,从父节点开始运用JavaScript测试用例生成模型生成子节点,所述子节点从生成的TOP
‑
K个预选节点中选取,如果该子节点为非终结符,继续从该子节点生成下一个节点,限定生成的子树高度阈值,超过子树高度阈值的节点强制生成一个终结符来结束生成程序,并以此保证生成子树的合法性;将变异后的AST树还原成JavaScript测试用例作为定向模糊测试的输入,对JavaScript引擎进行定向模糊测试。6.一种基于自然语言处理的JavaScript...
【专利技术属性】
技术研发人员:魏强,武泽慧,王允超,吴泽君,王新蕾,宗国笑,燕宸毓,
申请(专利权)人:中国人民解放军战略支援部队信息工程大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。