多维深度导向的Java Web模糊测试方法.pdf
《多维深度导向的Java Web模糊测试方法.pdf》由会员分享,可在线阅读,更多相关《多维深度导向的Java Web模糊测试方法.pdf(11页珍藏版)》请在咨信网上搜索。
1、NETINFOSECURITY技术研究doi:10.3969/j.issn.1671-1122.2024.02.0112024年第2 期多维深度导向的Java Web模糊测试方法一王鹃1-2,龚家新1-2,蔺子卿3,张晓娟3(1.武汉大学国家网络安全学院,武汉430 0 7 2;2.武汉大学空天信息安全与可信计算教育部重点实验室,武汉430 0 7 2;3.中国电力科学研究院有限公司信息通信研究所,北京10 0 192)摘要:随着Java Web的广泛应用,其安全问题日益突出。模糊测试作为一种有效的漏洞挖掘方法,目前已经被用于Java漏洞的检测。然而,由于JavaWeb应用代码规模庞大、业务逻
2、辑复杂,现有的漏洞挖掘工具在模糊测试中存在随机性高、代码检测深度低的问题,导致漏洞挖掘的准确率较低。因此,文章提出基于多维深度导向的Java Web模糊测试方法。该方法使用Jimple作为待测Java Web应用字节码的三地址码中间表示,并生成代码对应的函数间调用图和函数内控制流图,在此基础上分析每个基本块的多维深度。同时,根据多维深度和模糊测试执行时间优化模糊测试指导策略,设计相应的输入结构解析策略、能量分配策略和变异算法调度策略,提升模糊测试的准确性。实验结果表明,相较于现有的模糊测试工具Peach和Kelinci,该方法能够在性能消耗较低的情况下取得更好的漏洞检测效果。关键词:模糊测试;
3、JavaWeb;漏洞挖掘中图分类号:TP309文献标志码:A文章编号:16 7 1-112 2(2 0 2 4)0 2-0 2 8 2-11中文引用格式:王鹃,龚家新,葡子卿,等,多维深度导向的JavaWeb模糊测试方法.信息网络安全,2024,24(2):282-292.英文引用格式:WANG Juan,GONG Jiaxin,LIN Ziqing,et al.Multidimensional Depth Oriented FuzzingMethod of Java Web ApplicationsJJ.Netinfo Security,2024,24(2):282-292.Multidim
4、ensional Depth Oriented Fuzzing Method ofJava Web ApplicationsWANG Juan2,GONG Jiaxin,2,LIN Ziqing3,ZHANG Xiaojuan3(1.School of Cyber Science and Engineering,Wuhan University,Wuhan 430072,China;2.Key Laboratory ofAerospace Information Security and Trusted Computing of Ministry of Education,Wuhan Univ
5、ersity,Wuhan 430072,China,3.Institute of Information and Communication,China Electric Power Research Institute Co.,Ltd.,Beijing100192,China)Abstract:With the popularity of Java language,the security issue of these applicationsis becoming more and more serious.As an effective vulnerability mining met
6、hod,fuzzinghas been used to detect Java application vulnerabilities.However,due to the huge code scale收稿日期:2 0 2 3-0 4-12基金项目:国家电网有限公司科技项目52 0 940 2 10 0 0 9作者简介:王鹃(197 6 一),女,湖北,教授,博士,CCF高级会员,主要研究方向为系统和软件安全、可信计算、人工智能安全、云计算、物联网安全;龚家新(1999一),男,安徽,硕士研究生,主要研究方向为软件安全、漏洞挖掘与利用;子卿(1996 一),女,北京,工程师,硕士,主要研究方
7、向为电力工控安全和网络安全;张晓娟(198 8 一),女,北京,高级工程师,博士,主要研究方向为数据安全、密码学和网络安全。通信作者:蔺子卿282NETINFOSECURITY2024年第2 期技术研究and complex business logic of Java Web application,existing vulnerability mining tools sufferfrom high randomness in testing and low depth of code detection,resulting in low accuracyof vulnerability
8、mining.To solve these problems,this paper designed and implemented amultidimensional depth oriented fuzzing method of Java Web applications.This methodgenerated the three address codes of the application bytecode to be tested,and then obtainedthe corresponding inter function call graph and intra fun
9、ction control flow graph.Accordingto this information,an algorithm was designed to obtain the multidimensional depth of eachbasic block.Then,according to the multidimensional depth and fuzzing execution time,thefuzzing guidance strategy of the system was designed,and the corresponding input structur
10、eanalysis strategy,energy allocation strategy and mutation algorithm scheduling strategywere designed to improve the efficiency of fuzzing.Compared with the existing widely usedfuzzing tool Peach and Kelinci,it shows that this method can achieve better vulnerabilitymining effect under the condition
11、of low performance consumption.Key words:fuzzing;Java Web;vulnerability mining0引言随着互联网的快速发展和JavaWeb开发框架的广泛应用1,2,相关安全问题也日益突出。各类零日漏洞越来越多,相关安全攻击也层出不穷3。据报告,2021年披露的Log4j漏洞影响了数百万个系统,给互联网造成了严重的安全威胁。根据国家互联网应急中心发布的2 0 2 1年上半年我国互联网网络安全监测数据分析报告4,2 0 2 1年上半年国家信息安全漏洞共享平台收录了130 8 3个通用型安全漏洞,其中Web应用漏洞占比达2 9.6%,而在W
12、eb应用的开发语言中,Java语言的使用十分广泛。因此,如何自动化检测JavaWeb代码中的安全漏洞,从而减少其部署后的安全隐患是目前呕需解决的一个问题。模糊测试技术是一种比较有效的漏洞检测方法,近年来被广泛应用于漏洞挖掘领域。JavaWeb应用虽然也可以利用通用模糊测试技术进行安全检测,但是此方法的针对性不高5,主要问题在于以AFL(A m e r i c a nFuzzy Lop)为代表的基于变异的模糊测试工具生成的测试用例不符合Web应用接口所需的特定数据格式,大多数测试用例被丢弃,导致测试效率较低。以Peach为代表的针对Web应用的模糊测试工具主要研究输入数据的格式和生成策略,对We
13、b应用系统内部没有进行分析,缺乏程序运行反馈信息的指导,测试过于盲目并且效率不高。因此,针对JavaWeb程序设计一种准确率和效率都更高的模糊测试方案具有十分重要的现实意义。本文提出一种多维深度导向的Java Web模糊测试方法,该方法基于JavaWeb应用的微服务架构生成Java字节码的三地址码中间表示,即Jimple、程序静态分析的调用图和控制流图,在此基础上为每个基本块设计一种多维深度表示(调用链深度、控制流深度和基本块分支深度),并基于以上深度信息综合计算每个基本块的多维深度权重。针对现有模糊测试工具在JavaWeb应用程序上运行效率低的问题,本文依据基本块的多维深度权重,提出基于深度
14、覆盖反馈的双阶段测试指导策略。本文将模糊测试分为两个阶段:1)种子探索阶段,为每个种子分配相同能量;2)开发阶段,多维深度更深的种子往往有更多的能量。双阶段测试指导策略的目标是使测试在第一阶段探索更多路径,防止一开始就收敛于某一条多维深度很大的路径,而在第二阶段,则着重于引导测试用例向深层次的基本块前进,从而发现更多错误。通过与现有主流Java漏洞挖掘工具Peach和Kelinci的对比实验表明,本文方法可以在测试覆盖率更高的基础上,引导模糊测试对更深层次的基本块进行探索。同时,本文方法还可以触发更多的异常。1相关工作模糊测试作为一种有效的漏洞挖掘技术,受到283NETINFOSECURITY
15、技术研究2024年第2 期研究人员的广泛关注。目前,模糊测试已经在不同应用领域有了大量研究工作,也出现了一些成熟的方法和工具。AFLI7是目前模糊测试领域较典型的一个工具,它通过插桩方式收集每个测试输人对应的边缘覆盖率,并以边缘覆盖率为导向,通过进化算法进行模糊测试。AFLGol8基于AFL提出定向模糊测试的概念,定向模糊测试是指当需要进行补丁测试或者漏洞复现时,选定可能存在漏洞的位置为目标点,引导模糊测试到达这些位置进行检测。HawKeye方法9和CDGF方法10 基于定向模糊测优化了路径计算方案和能量分配策略,提升了定向模糊测试性能。然而上述工作存在一些问题,AFL在能量分配策略和种子选择
16、策略的设计上存在缺陷,导致将大量时间浪费在高频路径上;AFLGo和Hawkeye认为每个基本块是相同的,没有考虑到达目标点的难易程度;CDGF考虑了到达目标点的每个数据条件,但没有考虑每个基本块的深度。因此,这些模糊测试方法在高内聚、低耦合的Java Web程序中并不适用。此外,还有一些工作针对Java程序的模糊测试进行研究。JAYARAMAN等人基于混合模糊测试,通过符号执行技术获取路径约束求解,从而生成能够得到更高覆盖率的高质量测试用例,但是由于符号执行自身的缺陷,容易产生路径爆炸问题。ZHU12提出一种结合蜕变测试的变异方法,基于启发式定义多种变异操作,但是该方法需要用户定义蜕变关系,需
17、要对被测程序十分了解。Kelincil13本质上是一个介于AFL和Java应用程序之间的代理,让AFL去测试一个自己编写的代理程序。JQF14的工作方法与Kelinci类似,其将自身的程序应用在Java的单元测试框架JUnit中,能够自动进行测试。Kelinci和JQF将针对二进制的模糊测试研究直接移植到Java中,没有根据Java的语言特性做出创新,检测准确率低。SHAWNL15等人提出一种混合分析方法检测Java中的反序列化漏洞,通过静态分析获取反序列化的调用点和调用图链,利用模糊测试检测漏洞。YU16等人将定向模糊测试概念移植到Java程序中,通过Soot分析Java程序,使用AFL进行
18、模糊测试,引导测试深度代码片段,但是这种方法仍然存在定向模糊测试基本块权重相同的问题。在Web应用模糊测试方面,Peach17通过用户编写的符合要求的Peach Pit文件解析输人的结构,通过Pit文件Data Model中描述的约束生成测试用例,尽可能获取可以通过程序格式检测的高质量输人。文献18 提出一种基于遗传算法的改进模糊测试方法来挖掘Web漏洞,在基因编码上对测试用例进行编码,检测 SQL(St r u c t u r e d Q u e r y La n g u a g e)注人和XSS(Cr o s s-Site Scripting】漏洞。文献19基于文献18 修改了遗传算法的基
19、因编码步骤,基于常见漏洞攻击的语法结构生成包含攻击语法的测试用例,提升了测试效率。Web应用的语言种类较多,但现有的Web模糊测试工具没有关注应用的编写语言,而是将重点放在输人的结构上。综上所述,现有模糊测试技术难以在Java Web应用中进行高效的漏洞挖掘,存在基本块能量分配模式单一、能量分配和种子变异策略难以适用于Java Web应用等问题,需要设计一种具有针对性的高效模糊测试方法。2系统设计本文根据Java Web应用的特征提出一种多维深度导向的模糊测试方法,并设计了相应的模糊测试系统,系统整体架构如图1所示。该系统由静态分析模块、单元测试模块和模糊测试模块3个部分组成。在对JavaWe
20、b应用进行测试时,首先通过静态分析模块分析并插桩代码,然后获取待测接口的输入报文并编写解析文件,最后启动单元测试模块和模糊测试模块进行模糊测试。静态分析模块的主要功能是分析待测代码并且执行插桩。该模块主要负责获得待测代码的三地址码中间表示Jimple,获取函数间调用图和每个函数的函数内控制流图,同时执行具体的分析操作,计算每个284NETINFOSECURITY2024年第2 期技术研究静态分析模块待测代码字节码分析CFGCG深度计算插桩柱模块图1系统整体架构基本块的调用链深度、控制流深度以及带权重的分支深度。单元测试模块的主要功能是根据输人种子执行JavaWeb应用代码,并获取测试结果。模糊
21、测试模块根据模糊测试的执行状态判断是否需要进行输人结构的解析,同时操作对应的种子,将种子发送给单元测试模块。2.1多维深度导向的模糊测试方法灰盒模糊测试是一种根据部分程序内部信息,并配合良好的模糊测试指导策略进行高效测试的方法。本文为每个基本块设计了一种多维深度表示,通过其在调用链中的深度、在函数内部的深度和分支条件的复杂度表示该基本块在程序中被执行的难易程度,并使用该多维深度激励模糊测试,指导模糊测试向着程序的深层次执行,从而发现程序的深层漏洞。2.1.1多维深度计算本文设计的多维深度可以分为3个部分,分别为调用链深度、控制流深度和分支深度。1)调用链深度调用链深度的计算方法如公式(1)所示
22、。nDepeg=1其中,Depeg代表每个函数所处的所有调用链的平均深度,计算过程中使用的是调和平均值。在计算深度时,考虑每条调用链中函数所处的深度。在公式(1)中,n代表函数包含的调用链数量,D.)指该函数在第i条调用链中的深度。2)控制流深度单元测试模块插桩后代码目标接口Mock单元测试深度响应位图信息模糊测试模块初始解析输入文件能量分配种子味种子选择结构种子池解析(1)在计算控制流深度时,为了获得更准确、更有效的深度权值,本文单独计算代码控制流中的分支部分,统计了包含分支条件复杂度的分支深度。本文基于Soot20,21工具建立控制流图,Soot建立的控制流图有两种,一种是以基本块为节点的
23、BlockGraph,另一种是以Unit(So o t 中代表Jimple中间表示的一条语句)为节点的UnitGraph。本文选用UnitGraph以获取更加精确的控制流深度,控制流深度的具体计算如公式(2)所示。Depefg=min(Dr,Dra,Dr.)(2)其中,Depeg代表每个基本块的控制流深度,D,是基本块在第n条控制流的深度,本文选取这些深度中的最小值作为最终控制流深度。在程序中,一个函数的控制流可能由于执行了不同分支而不同。当一个分支语句中包含多重分支条件时,在Java的字节码表示和实际执行时,JVM(Ja v aVirtualMachine)虚拟机根据每个条件依次判断,导致虽
24、然两次执行的结果相同,但由于输人不同,程序实际执行的代码不同,最终产生的控制流也不同。因此,本文将分支部分的深度做单独计算,根据条件的复杂度赋予不同的权值。3)分支深度通过一个简单的例子对本文加人分支深度的原因进行介绍。一个包含多重分支的Java源代码示例如图2所示。public void test(int a,int b,int c)if(al=2&b=5&c=7)(System.out.println(yes);J else(System.out.println(no);1图2 包含多重分支的Java源代码示例示例代码的控制流图如图3所示,在图3中共有两个分支,其中一个分支需要同时满足3个
25、条件才能被执行。如果一个种子输入可以使程序执行了3个分支条件的if语句,而另一个种子执行了else语句,那么虽然它们都覆盖了一个基本块,但是前一个种子比后一285NETINFOSECURITY技术研究2024年第2 期个种子更有价值。因此,应为前一个种子分配更高的权值,在后续测试中其应获得更高的能量分配,同时在种子调度过程中也应该享有更高的优先级。更重要的一点是,在程序实际运行中,对源代码中的3个分支条件进行依次判断,因此本文在进行分析和插桩时,会在每个分支条件判断处都计算多维深度,并执行插桩,目的是给模糊测试一个激励,使模糊测试器在攻克比较复杂的分支条件时,只要满足一个条件就能收到及时的反馈
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多维深度导向的Java Web模糊测试方法 多维 深度 导向 Java Web 模糊 测试 方法
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【自信****多点】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【自信****多点】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。