收藏 分销(赏)

Web应用漏洞报告理解及漏洞复现.pdf

上传人:自信****多点 文档编号:894540 上传时间:2024-04-03 格式:PDF 页数:11 大小:938.07KB
下载 相关 举报
Web应用漏洞报告理解及漏洞复现.pdf_第1页
第1页 / 共11页
Web应用漏洞报告理解及漏洞复现.pdf_第2页
第2页 / 共11页
Web应用漏洞报告理解及漏洞复现.pdf_第3页
第3页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、Web 应用漏洞报告理解及漏洞复现李子东1,王微微1,尤枫1,杨羊2,赵瑞莲11(北京化工大学信息科学与技术学院,北京100029)2(浙江理工大学信息科学与工程学院,杭州310018)通信作者:赵瑞莲,E-mail:摘要:随着 Web 应用的功能日趋复杂,其安全问题不容乐观,Web 应用安全性测试成为软件测试领域的研究重点之一.漏洞报告旨在记录 Web 应用安全问题,辅助 Web 应用测试,提升其安全性与质量.然而,如何自动识别漏洞报告中的关键信息,复现漏洞,仍是当前的研究难点.为此,本文提出一种自动化的漏洞报告理解和漏洞复现方法,首先,依据漏洞报告的特点,归纳其语法依存模式,并结合依存句法

2、分析技术,解析漏洞描述,提取漏洞触发的关键信息.其次,不同于常规自然语言描述,Web 漏洞的攻击负载通常是非法字符串,大多以代码片段的形式存在,为此,本文针对攻击负载,设计提取规则,完善漏洞报告中攻击负载的提取.在此基础上,考虑漏洞报告与 Web 应用文本描述不同但语义相近,提出基于语义相似度的漏洞复现脚本自动生成方法,实现 Web 应用漏洞的自动复现.为验证本文方法的有效性,从漏洞收集平台 Exploit-db 的 300 余个 Web 应用项目中收集了 400 份漏洞报告,归纳出其语法依存模式;并针对 23 个开源 Web 应用涉及的 26 份真实漏洞报告进行漏洞复现实验,结果表明本文方法

3、可有效提取漏洞报告的关键信息,并据此生成可行测试脚本,复现漏洞,有效减少人工操作,提升漏洞复现效率.关键词:Web 应用测试;Web 应用漏洞报告分析;Web 应用漏洞复现;自然语言处理;测试脚本自动生成引用格式:李子东,王微微,尤枫,杨羊,赵瑞莲.Web 应用漏洞报告理解及漏洞复现.计算机系统应用,2023,32(11):6272.http:/www.c-s- Comprehension and Reproduction of Web Application VulnerabilityLIZi-Dong1,WANGWei-Wei1,YOUFeng1,YANGYang2,ZHAORui-Lia

4、n11(SchoolofInformationScienceandTechnology,BeijingUniversityofChemicalTechnology,Beijing100029,China)2(SchoolofInformationScienceandEngineering,ZhejiangSci-TechUniversity,Hangzhou310018,China)Abstract:AsWebapplicationsbecomeincreasinglycomplex,theirsecurityissueshappenfrequently.Webapplicationsecur

5、itytestinghasbecomeoneoftheresearchprioritiesinthefieldofsoftwaretesting.VulnerabilityreportsaimtodocumentWebapplicationsecurityissuesandassistWebapplicationtestingtoimproveitssecurityandquality.However,howtoautomaticallyidentifythekeyinformationinvulnerabilityreportsandreproducethevulnerabilityisst

6、illaresearchchallenge.Tothisend,thisstudyproposesanautomaticapproachtocomprehendvulnerabilityreportsandreproducethevulnerability.Firstly,basedonthecharacteristicsofvulnerabilityreports,thestudysummarizestheirgrammardependencypatternsandcombinesthemwithdependencysyntacticparsingtechniquestoparsevulne

7、rabilitydescriptionsandextractkeyinformationaboutvulnerabilitytriggers.Secondly,unlikeconventionalnaturallanguagedescriptions,thepayloadofWebvulnerabilityisusuallyanillegalstring,mostlyintheformofacodefragment.Forthisreason,thestudydesignsextractionrulesforthepayloadsolelytoimprovetheextractionofvul

8、nerabilityreports.Onthisbasis,consideringthatvulnerabilityreportsandWebapplicationtextdescriptionsaredifferentbutsemanticallysimilar,thestudyproposesa计算机系统应用ISSN1003-3254,CODENCSAOBNE-mail:ComputerSystems&Applications,2023,32(11):6272doi:10.15888/ki.csa.009293http:/www.c-s-中国科学院软件研究所版权所有.Tel:+86-10-

9、62661041基金项目:国家自然科学基金(62077003)收稿时间:2023-04-10;修改时间:2023-05-11;采用时间:2023-06-06;csa 在线出版时间:2023-09-15CNKI 网络首发时间:2023-09-1862专论综述SpecialIssuesemanticsimilarity-basedmethodtoachievetheautomaticreproductionofWebapplicationvulnerability.Toverifytheeffectivenessofthisstudy,400vulnerabilityreportsarecolle

10、ctedfrommorethan300WebapplicationprojectsinthevulnerabilitycollectionplatformExploit-db,andtheirgrammardependencypatternsaresummarized.Atotalof26realvulnerabilityreportsinvolving23open-sourceWebapplicationsareusedforvulnerabilityreproductionexperiments.Theresultsshowthattheproposedmethodcaneffective

11、lyextractkeyinformationfromvulnerabilityreportsandgeneratefeasibletestscriptstoreproducevulnerability,reducingmanualoperations,andimprovingtheefficiencyofvulnerabilityreproduction.Key words:Webapplicationtesting;reportanalysisofWebapplicationvulnerability;reproductionofWebapplicationvulnerability;na

12、turallanguageprocessing(NLP);automaticgenerationoftestscript随着网络的快速发展,Web 应用普及到人们日常生活中的方方面面,Web应用的安全性越发重要.据国家信息安全漏洞共享平台(CNVD)1统计,2022 年9 月份共收集信息安全漏洞 1854 个,其中Web应用安全漏洞占比高达 48%.如何提高 Web 应用的质量和安全性已成为学术界和工业界普遍关注的问题.漏洞报告是测试过程产生的用来描述漏洞相关信息的文本,其对漏洞定位与修复至关重要2,3.但由于漏洞报告是由自然语言编写,本质上是不精确不完整的4,如何识别并抽取出涉及漏洞触发的关

13、键信息是目前的研究难点;同时,Web应用业务逻辑较为复杂,涉及的页面及元素种类繁多5,导致漏洞复现更加困难.现有关于漏洞报告的研究大多通过简单的命名实体识别或关系抽取,分析漏洞报告中的结构化信息,如漏洞类型、软件名称等,没有涉及漏洞触发的相关信息,难以辅助开发人员对Web应用漏洞进行有效的修复.同时,由于漏洞报告存在高度非结构化的自然语言描述,简单的正则表达式技术难以解析出漏洞报告涉及的复杂逻辑.此外,有研究发现,现有的漏洞复现过程主要依赖于人工经验,并且要求漏洞复现人员在该领域有一定的专业知识,漏洞定位及修复成本较高.因此,研究一种Web应用漏洞报告的自动理解与漏洞复现技术,以提高漏洞修复效

14、率,提升 Web 应用软件的安全性,具有重要的科学研究意义和实际应用前景.然而,自动分析理解Web应用漏洞报告并自动复现其漏洞面临诸多挑战.一是漏洞报告通常由高度非结构化的自然语言描述,报告书写者可能在不同抽象层次上对漏洞触发步骤进行描述,描述的方式也不尽相同.因此,如何准确理解漏洞报告的自然语言描述,识别并抽取出与漏洞触发的关键信息是本文研究面临的一个挑战.二是漏洞报告的自然语言描述使得其表述的信息不够准确,而现代Web 涉及的页面元素种类繁杂.因此,如何依据漏洞报告中的漏洞触发步骤,识别每一步在Web应用中相应的页面元素,进而构建完整的Web应用漏洞复现脚本,是本文研究面临的又一挑战.因此

15、,本文提出一种自动化的漏洞报告理解与安全漏洞复现方法.具体而言,首先,针对高度非结构化的 Web应用漏洞报告,依据漏洞触发描述的特点,归纳其语法依存模式,并据此解析漏洞报告,提取漏洞触发的关键信息;其次,设计对应的攻击负载识别方法,准确提取攻击负载;基于漏洞触发关键信息,考虑漏洞报告与 Web 应用文本描述不同但语义相近,提出基于语义相似度的漏洞复现脚本自动生成方法,实现 Web应用漏洞的自动复现.为验证本文方法的有效性,选取23 个开源 Web 应用,并从漏洞收集平台 Exploit-db6中收集其涉及的 26 份真实漏洞报告,进行漏洞报告理解与漏洞复现实验.结果表明本文方法能有效分析漏洞报

16、告并提取其关键信息,并据此生成可行测试脚本,复现漏洞,大大减少人工操作,提升漏洞复现效率.1相关工作 1.1 漏洞报告分析现代Web应用在使用过程中用户会提交大量的漏洞报告,软件开发/测试人员可利用漏洞报告,识别与漏洞触发相关的关键信息,重现软件漏洞,进而分析漏洞产生的原因,最终修复漏洞7,8.显然,漏洞报告分析是上述工作的重中之重.目前,已有一些学者在漏洞报告分析方面取得了初步进展,例如,Feng 等人9从互联网上收集物联网漏洞报告,将漏洞报告中的信息检索问题建模为NLP中2023年第32卷第11期http:/www.c-s-计 算 机 系 统 应 用SpecialIssue专论综述63的命

17、名实体识别问题,利用关键字和正则匹配技术,识别漏洞报告中与物联网漏洞相关实体,如设备类型、供应商、产品名称和漏洞类型等,通过实体之间的依赖关系来分析确定物联网设备是否存在漏洞.Dong 等人8给出了一个自动化识别系统,利用基于深度学习的命名实体识别和关系抽取,从非结构化漏洞描述文本中,识别其易受攻击的软件名称和版本.上述研究只通过简单的命名实体识别或关系抽取,分析漏洞报告中的结构化信息,如漏洞类型、供应商、软件名称等,没有涉及漏洞触发的相关信息,难以辅助开发人员对Web应用漏洞进行有效的修复.再者,漏洞报告包含高度非结构化的自然语言描述,简单的正则表达式技术,难以解析出漏洞报告涉及的复杂逻辑.

18、此外,Mu 等人10对实际的安全漏洞报告进行了实证分析,以分析安全漏洞的可重现性,研究发现,现有的漏洞复现过程主要依赖于人工经验,并且要求漏洞复现人员在该领域有一定的技术背景.作者指出有必要引入更有效和自动化的方式从报告中收集常见漏洞触发的关键信息.另一方面,也有一些学者关注漏洞报告分类和漏洞报告质量,例如,Kudjo 等人7针对CVE和NVD的漏洞报告,结合两种分类算法TF-IGM和TF-IDF,提高漏洞报告分类的精确度.Guo 等人11针对由于漏洞报告提交者上报的信息不完整,导致漏洞报告存在一定程度的信息缺失等问题,通过细化漏洞本身的其他信息,设计机器学习方法,预测漏洞报告中缺失的漏洞类型

19、.但未见以漏洞重现为目标,从漏洞报告出发,对 Web应用漏洞报告进行自动分析理解的相关研究成果发表.现存研究已表明,漏洞报告中大多含有漏洞触发相关策略,若能自动获取漏洞触发步骤,必将提升漏洞修复效率12,13.1.2 基于漏洞报告的漏洞复现漏洞报告记录了报告提供者遇到的软件问题,开发和测试人员可通过查看漏洞报告,了解漏洞出现的相关操作,分析漏洞原因或复现漏洞,为漏洞定位和修复提供帮助.然而,人工复现漏洞严重依赖于开发人员的个人经验,而且漏洞复现过程可能耗时较多,尤其当有大量故障报告且故障报告涉及许多与漏洞触发步骤无关的描述信息时.为此,有研究人员提出从漏洞报告自动复现的思想.例如,Zhao 等

20、人14给出一种从Android应用程序的漏洞报告复现崩溃漏洞的方法,通过自然语言处理技术对漏洞报告文本进行分析,识别其漏洞复现所需的GUI组件和相关信息,利用此类信息在Android应用上进行动态搜索,生成测试脚本来复现Android应用程序的崩溃故障.Li 等人15给出一种从用户评论中复现Android应用程序错误的方法,通过对用户评论进行语法分析,提取与错误相关的信息词,利用与错误相关的信息词进行事件序列探索,生成能重现用户评论涉及错误的事件序列.Feng 等人16提出了一种轻量级的工具 GIFdroid,针对存在漏洞触发流程视频的Android 漏洞报告,采用图像处理技术从视频中提取关键

21、帧,将它们映射为 GUI 转换图中的状态,并生成这些状态的执行轨迹以触发错误,但针对 Web 应用的漏洞报告通常不包含此类文字信息以外的辅助信息.上述研究主要针对 Android 应用,根据漏洞报告对漏洞进行复现.Android 应用漏洞报告有多种信息可以使用,漏洞复现相对简单.而 Web 应用业务逻辑更为复杂,涉及的页面及元素种类繁多,漏洞类型更为多样,漏洞报告的自动分析理解与漏洞复现更加困难,目前主要靠人工分析,难以实现 Web 应用程序漏洞的快速复现与定位分析,因此漏洞修复效率不高.2Web 应用漏洞报告理解与漏洞复现漏洞报告中涉及漏洞触发的部分通常由自然语言书写,简单的正则表达式技术难

22、以解析出漏洞触发涉及的复杂逻辑.因此,需要收集大量的漏洞报告,总结归纳出漏洞触发信息的书写特征,再结合自然语言处理技术,依据其特征识别并提取出漏洞复现所需要的关键信息;此外,由于漏洞报告是人工书写的,漏洞触发步骤中涉及的操作对象常常与实际 Web 应用有所偏差,例如,Web 应用中的按钮“begin”可能会被人工记录为按钮“start”,传统的字符串匹配方法无法准确匹配漏洞报告与 Web 应用中对应的元素,但“begin”和“start”语义相近,因此,本文利用语义相似度匹配漏洞报告与Web 应用的对应元素,生成漏洞复现脚本,自动复现Web 应用漏洞.下面将详细介绍本文方法.2.1 整体概述W

23、eb 应用漏洞报告由自然语言书写的,其中涉及的漏洞触发步骤一般包含 4 部分关键信息:动作、动作对象、对象类型以及参数值,其中,动作信息是触发漏洞需要做出的行为,动作对象是行为作用的目标,对象类型是指目标的类型,参数值是指输入类动作中需计 算 机 系 统 应 用http:/www.c-s-2023年第32卷第11期64专论综述SpecialIssue要输入的值.Web 应用漏洞报告理解与漏洞复现的整体框架如图 1 所示.为获取漏洞触发步骤的关键信息,本文首先从 400 余份真实的漏洞报告中归纳出此类信息的语法依存模式;其次,基于 NLP 的漏洞报告分析模块依据语法依存模式,结合词法分析和依存语

24、法分析,提取触发操作的关键信息,此外,针对部分操作涉及的攻击负载,本文设计了对应的提取方法,当漏洞报告处理完成后,得到由有序的漏洞触发关键信息构成的漏洞触发步骤序列;最终,漏洞复现脚本自动构建模块利用语义相似度,识别与漏洞报告关联的 Web 应用页面及元素,构建漏洞复现测试脚本,实现 Web 应用漏洞的自动复现.400余份报告漏洞报告依存模式归纳语法依存模式基于NLP的漏洞报告分析攻击负载的识别与提取基于词法的动作信息识别与提取基于语法依存模式的动作对象 及参数信息识别与提取触发漏洞操作信息识别与提取漏洞触发步骤四元组序列漏洞复现测试脚本基于语义相似度的漏洞复现脚本自动生成图 1Web 应用漏

25、洞报告理解及漏洞复现在漏洞报告分析模块,动作信息一般是漏洞报告描述语句成分中最重要的根词,因此,先根据词法分析提取语句中的动词作为动作信息;然后,基于语法依存模式提取动作关联的对象、对象类型及携带的参数值;此外,不同于常规自然语言描述,Web 漏洞的攻击负载通常是代码片段,本文设计对应的攻击负载识别方法,完善漏洞报告中攻击负载的提取.2.2 语法依存模式归纳通过对真实 Web 应用漏洞报告进行分析研究,我们观察到漏洞报告的漏洞触发描述中,不同动作类型的句法结构一般是不同的,而相同的动作类型,其句法结构一般相同.例如:输入类操作的动作对象类型与动作根词的关系通常是介词宾语关系或间接名词关系,而点

26、击类操作的动作对象类型与动作根词的关系除上述两种关系外还包括非确定依存和状语修饰语关系.因此,本文参考了漏洞收集平台 Exploit-db 中获得的 300 余种项目的 400 份漏洞报告,手工构建了每类动作不同的语法依存模式,如表 1 所示,该模式共包含6 类动作,除输入类和使用类额外包含输入的参数值外,每类动作包含两种信息:动作对象和动作对象类型,每种信息内包含若干种依存关系,即句子中具有此类依存关系的词将被认为是对应的信息,例如文本“Clickonloginbutton”,这是一个点击类型的动作,且 button与 click 的依存关系是间接名词、login 与 button 的依存关

27、系是复合表达式,所以 button 被认为是动作 click的动作对象类型、login 被认为是动作 click 的动作对象.在后续方法中,将基于该模式提取特定的依存关系以获取漏洞触发的关键信息.表 1不同类型动作的语法依存模式动作类型依存关系动作对象动作对象类型参数值跳转Nmod(名词修饰语)Amod(形容词修饰语)Obj(宾语)Parataxis(无连词并列)Obl(间接名词)粘贴Nmod(名词修饰语)Amod(形容词修饰语)Obj(宾语)输入Amod(形容词修饰语)Compound(复合表达式)Appos(同位语修饰语)Pobj(介词的宾语)Obl(间接名词)Dobj(直接宾语)Obj(

28、宾语)使用Amod(形容词修饰语)Compound(复合表达式)Pobj(介词的宾语)Obl(间接名词)Dobj(直接宾语)Obj(宾语)点击Nmod(名词修饰语)Amod(形容词修饰语)Compound(复合表达式)Pobj(介词的宾语)Obl(间接名词)Dep(非确定依存)Advmod(状语修饰语)修改Nmod(名词修饰语)Amod(形容词修饰语)Obj(宾语)Obl(间接名词)2.3 基于 NLP 的漏洞报告分析漏洞报告包含漏洞名称、时间等结构化信息和描述漏洞触发自然语言描述的非结构化信息.对于结构化信息可以使用正则匹配的方法轻松获取,然而,对于漏洞触发描述的非结构化信息处理起来则更具挑

29、战.自然语言处理(NLP)技术是此类信息抽取常用的手段.因此本文首先依据漏洞报告的特点,归纳其语法依存模式,并结合词法分析和依存句法分析,解析漏洞描述,2023年第32卷第11期http:/www.c-s-计 算 机 系 统 应 用SpecialIssue专论综述65提取漏洞触发的关键信息,并形式化为漏洞触发序列,为 Web应用漏洞复现奠定基础.2.3.1漏洞触发步骤的形式化表示对于漏洞报告中的漏洞触发步骤,需要提取动作、动作的对象和对象的类型,若该动作携带输入参数,则需要记录参数值.此外,参数值可能是攻击负载,其识别及提取详见第 2.3.3 节.因此,本文以四元组的形式记录漏洞触发步骤中必要

30、的信息,即,每个漏洞触发步骤对应一个四元组.漏洞报告包含多个连续的漏洞触发步骤,可由漏洞触发步骤对应的四元组序列表示,称为漏洞触发序列.2.3.2漏洞触发关键信息识别与提取为获取漏洞触发序列,首先需要在漏洞报告中定位到与漏洞触发相关的描述部分,后续再对该部分文字进行分析与理解.我们观察到,对于漏洞报告,漏洞触发步骤信息一般以 STEP 关键字开头,所以本文通过该关键字利用正则匹配定位漏洞触发描述的文本信息.由于报告中对于漏洞触发每一步的描述可能会占据多行,因此,本文将两个 STEP 关键字中间的所有文字归结到一个步骤中,以提取完整的触发步骤文本.对于漏洞触发步骤,其文本描述存在不规范问题,这严

31、重影响自然语言处理的准确性.最常见的不规范问题为多空格问题,即漏洞触发步骤描述文本存在多处空格,而英文文本的标准分词器通常使用空格分割整个句子,难以准确分析漏洞触发步骤的多空格文本.例如,语句“clickonsavebutton”,单词 on 和单词save 之间存在多个空格,若直接进行分词操作,则该语句将会被分成 click,on,空格,save,button 这 5 个词,可以看出这产生了明显的错误.因此,得到漏洞触发自然语言描述文本后,需要对其进行预处理,去除文本中多余的空格.在得到漏洞触发相关描述并预处理后,由第 2.2 节可知,漏洞报告的漏洞触发描述中,不同动作类型的句法结构一般是不

32、同的,因此,本文首先通过词法分析识别当前漏洞触发步骤的动作信息;在此基础上,依据其动作种类,利用归纳的语法依存模式获取漏洞触发步骤的动作对象、对象类型以及参数值.即本阶段分为两步:一是基于词法的动作信息识别与提取;二是基于语法依存模式的动作对象与参数信息识别与提取.(1)基于词法的动作信息识别与提取漏洞触发的动作一般是漏洞报告描述语句成分中最重要的根词,与漏洞触发描述的动词直接相关,因此,本文通过词性分析的方法获取漏洞触发的动作信息.具体来说,通过词性分析的方法标注漏洞触发描述中每个词的词性,并寻找其中的动词作为漏洞触发的动作信息.需要注意的是,一个漏洞触发步骤描述可能包含多个动作.因此,除了

33、提取句中的根词外,本文还通过提取所有与根词的依存关系为 advcl(状语从句修饰语)、conj(连词)或parataxis(无连词并列)的词作为动作信息,然后依据这些词将语句分割为若干区间,对每一个区间进行后续四元组信息的提取.该方法可避免一个语句中有相同动词的情况,例如语句“clickontheloginbutton,enterusernameandpassword,clickonthesubmitbutton”,如不利用动词分割语句,则会出现第2 个 click 的相关信息覆盖了第 1 个 click 的相关信息,影响漏洞触发步骤提取的准确性.此外,上述方法提取的动词可能与漏洞复现无关.例

34、如语句“loginasaadminbytypingadmintousernameandadmin123topassword”,其中真正需要作为动作属性的词只有 typing,而动词 login 是非必要的.针对此类无关动词,本文采用如下判定规则,即当存在动词没有动作对象与之匹配,则判定其为无关动词并删除.在动作信息识别完成后,由于动作对应的动词形式多种多样,但如表 1 所示,Web 应用的核心动作类型涉及 6 类,为此,本文归纳了漏洞报告的动词分类规则,如表 2 所示,并据此对漏洞报告动作对应的动词进行分类,为后续提取四元组其他信息提供基础.表 2漏洞报告动词分类动作类型包含动词跳转go,lo

35、gin,navigate,visit,triggered,using粘贴capture输入enter,type,add,write,paste,put,insert,fill使用use点击click修改change(2)基于语法依存模式的动作对象与参数信息识别与提取经过动词提取后,语句被分割成数个区间,对每个区间进行依存句法分析,识别并提取四元组中的其他3 个属性:动作对象、动作对象类型以及参数信息.针对不同的动作类型,本文将利用第 2.2 节归纳的语法依计 算 机 系 统 应 用http:/www.c-s-2023年第32卷第11期66专论综述SpecialIssue存模式来提取关键信息以生

36、成对应的漏洞触发四元组.在提取动作对象时,漏洞触发描述语句中可能会出现一个动词对应多个动作对象的情况,因此,漏洞触发四元组的动作对象与参数均以集合的形式记录.例如语句“clickonthesaveandsubmitbutton”,click 这个动作对应了 save 和submit 两个对象.具体来说,click作为语句的根词,button 与 click 的关系是 obl,依据语法依存模式,点击动作的动作对象类型应该提取的关系中包含着 obl,所以,button 作为四元组中的对象类型被提取出来;save 与 button 的关系是 compound,所以 save 应该被提取为四元组的对象

37、属性;而 save 与submit 两个词是 conj 关系,所以 save 和 submit 都应该作为动作对象加入到四元组中,最后生成的四元组为.2.3.3攻击负载的识别与提取攻击负载在漏洞报告中的表现形式一般分为两种:1)在漏洞触发步骤内部直接给出攻击负载的具体内容;2)在步骤内部仅提及输入攻击负载这一动作,没有给出攻击负载具体的内容,而在漏洞触发步骤以外的其他位置,以 payload 为标题给出攻击负载的具体内容.针对上述两种形式,本文设计了两种对应的攻击负载提取方法,具体如下.(1)漏洞触发步骤内的攻击负载识别与提取不同于常规自然语言描述,Web 漏洞的攻击负载通常是符号连接的非法字

38、符串,大多以代码片段的形式存在.标准分词会将攻击负载分为多个词,导致后续自然语言处理的错误,因此,本文重新设计了一种自定义分词器,将攻击负载涉及的所有单词作为一个整体进行看待,然后,利用依存关系分析识别并提取攻击负载.具体而言,自定义分词器首先利用传统分词方法根据符号或空格将句子分割成多个单词,然后通过正则匹配的方法识别攻击负载位置,并把攻击负载涉及的相关词组进行合并,形成完整的攻击负载.为精准定位攻击负载,本文为攻击负载设计了用于提取特殊情况单词的正则表达式,如表 3 所示.表 3用于提取特殊情况单词的正则表达式匹配情况范例正则表达式admin1=1|+*|+admin1=1|+*|+adm

39、in1=1|+*|+()(something)(|)+)something(|)+经过自定义分词器正确地进行分词后,攻击负载涉及的词已经合并为一个整体.再经过依存句法分析后,若当前漏洞触发步骤四元组中的参数值为词语“payload”,则可提取与词“payload”有依存关系为 amod、compound、appos 或 advmod 的词作为攻击负载.(2)其他位置的攻击负载识别与提取在漏洞报告中,在触发漏洞的描述内可能仅提及要在某一位置输入攻击负载,而攻击负载涉及的具体内容则位于漏洞报告的其他位置,以 payload 为标题给出.这种情况下,语句中将不存在与单词“payload”有依存关系为

40、 amod、compound、appos 或 advmod 的词.因此,本文将以 payload 为关键字,使用正则匹配的方式全文搜索攻击负载.除了攻击负载,首页地址 URL 信息也可能出现类似的情况,表现形式分为两种:1)在漏洞触发描述的第 1 个步骤内直接书写.2)在漏洞触发描述第 1 个步骤内仅提及登录动作,而在漏洞报告的其他位置以loginpage 为标题给出 URL.因此,URL 的识别和提取方法与攻击负载一致.2.4 基于语义相似度的漏洞复现脚本自动生成漏洞报告中提取的信息不够精确,导致使用传统字符串匹配方法无法准确匹配漏洞报告中的操作与页面中的元素,进而构建完整的Web应用漏洞复

41、现可行脚本.因此,本文提出一种基于语义相似度的 Web 应用漏洞复现脚本动态探索策略,从 Web 应用首页开始探索,探索过程的关键是将当前页面中的元素与正在处理的漏洞触发步骤进行语义相似度匹配,如果匹配成功则触发匹配的元素并继续处理报告中的下一步,直到漏洞报告中涉及的所有漏洞触发操作均已成功在应用中匹配到元素并执行完毕则视为复现成功.具体来说,如算法 1 所示,从 Web 应用首页开始(第 2 行),对于漏洞报告中提取的漏洞触发步骤的每一步,首先获取当前页面的 html 源码,经过 bs4 转换成BeautifulSoup 对象,该对象可有效分析 html 标签中的信息(第 4 行);然后,遍

42、历所有页面元素,通过将漏洞触发四元组中的对象属性与页面元素的 id 或 name 属性进行匹配的方法,寻找与当前漏洞触发步骤四元组最相关的元素.但漏洞报告所给的信息不一定是真实的标签属性,传统的字符串匹配算法很难准确地匹配漏洞报告中的步骤与 Web 页面中的元素,所以本文引入相似度计算的方法以更有效地匹配二者(第 8 行).2023年第32卷第11期http:/www.c-s-计 算 机 系 统 应 用SpecialIssue专论综述67具体来说,本文使用 Word2Vec 技术17把词转换成词向量进而计算词与词之间的相似程度,并通过 similarity函数计算页面元素的 id 或 name

43、 属性与当前漏洞触发步骤的对象属性之间的相似度,若相似度大于 0.7,则认为此元素与当前漏洞触发步骤是相关的.本文将从所有相关页面元素中选择相似度最大的元素作为匹配成功的元素,生成对应的测试脚本(第 16 行).如果出现当前页面内没有与漏洞触发步骤相关元素的情况,本文判断此时出现了漏洞报告“跳步”的情况.“跳步”是指漏洞报告中描述的漏洞触发过程缺少某个步骤使漏洞触发步骤序列不连续,即当前漏洞触发步骤与上一步间缺少了某一步,这种情况会导致当前页面内没有与漏洞触发步骤匹配的元素.想要解决这种“跳步”问题,就需要在当前页面内寻找一个元素,尝试触发它以填补报告中漏洞触发过程缺失的这一步,使 Web 应

44、用的探索能够继续进行下去.为此,本文提出了一种“随机一步探索”策略(第 21 行).具体来说,以任意的顺序与当前页面内每个元素进行交互,用触发元素后新页面中所有元素与当前正在处理的漏洞触发步骤的相似度得分和来替换该元素的原相似度得分.当前页面内所有元素均触发后,根据更新后的相似度得分重新对它们进行排序,选取得分最高的元素生成脚本并触发,在新页面中继续处理当前漏洞触发步骤即可.当所有漏洞触发步骤均处理完毕时,返回完整的测试脚本集合,算法结束.算法 1.测试脚本自动生成算法输入:Web 应用首页 URL;漏洞触发步骤四元组序列 step.输出:测试脚本数组 TestScript.1TestScri

45、pt=null;2web.get(URL);/*以 get 方式请求 URL*/3fori=0;istep.size();i+do4element=BeautifulSoup(web.page_source)5flag=0;/成功处理标志6rFlag=false;/是否处理过跳步情况7forj=0;jelement.size();j+do8ifmatch(stepi,elementj)then9rFlag=false;10flag=1;11matchedElement=elementi;12break;13endif14endfor15ifflag=1then16script=transfor

46、m(matchedElemrnt);17TestScript.add(script);18execute(script);/*触发对应元素*/19else20ifrFlag=falsethen/没有处理过跳步21rElement=ROSE();/随机一步探索22TestScript.add(transform(rElement);23rFlag=true;24else/已经处理过跳步了25return1;26endif27i;28endif29endfor30returnTestScript3实验结果与分析 3.1 实验设计本文提出了一种漏洞报告理解方法,使用自然语言处理技术提取漏洞报告中与漏

47、洞触发相关的关键信息并形式化为漏洞触发序列,并基于此序列自动生成测试脚本.为了验证本文方法整体的有效性,本文从漏洞报告平台中选取漏洞报告,然对其行分析与复现,并提出以下 3 个研究问题.研究问题 1:本文提出的攻击负载识别与提取方法是否有效?研究问题 2:本文提出的漏洞报告分析方法是否有效?研究问题 3:本文的漏洞报告复现方法是否可以为漏洞报告生成完整的执行脚本?3.2 实验对象与环境本文选取了漏洞收集平台 Exploit-db 中 300 余种项目的 400 份漏洞报告,手工构建了语法依存模式,并在此基础上,针对 23 个开源 Web 应用对应的 26 份真实漏洞报告进行漏洞报告理解与复现实

48、验.其中,漏洞报告理解实验使用 spaCy18提供的 API 构建自定义分词器并结合 Stanza19的其他处理管道进行漏洞报告的自然语言处理工作.实验中将 26 份漏洞报告分为 3 类:第 1 类是仅存在页面操作类型的报告,在这类报告中,步骤信息只包括对 Web 页面元素的操作,如点击按钮,在输入框输入信息等操作;第 2 类是包含了请求信息的漏洞报告,这类报告中的步骤信息里会包含发送请求的操作;第 3 类是含有第三方软件操作的漏洞报告,例如使用burp 来拦截请求信息.表 4 详细列出了漏洞计 算 机 系 统 应 用http:/www.c-s-2023年第32卷第11期68专论综述Speci

49、alIssue报告分类、编号与名称,其中,漏洞类型分别用 O、P、Q 来表示.表 4实验对象及分类漏洞报告类型Web应用编号Web应用名称项目对应的漏洞报告数O仅存在操作漏洞报告O-1Loanmanagementsystem1O-2Simpleonlinecollegeentranceexamsystem1O-3Hospitalspatientrecordsmanagementsystem3O-4Studentquarterlygradingsystem1O-5Simplestudentquarterlyresult/gradesystem1O-6OnlineDJbookingmanageme

50、ntsystem1O-7Ratessystem1O-8Onlinerailwayreservationsystem1O-9Onlineveterinaryappointmentsystem1O-10Onlinethesisarchivingsystem1O-11OnlineenrollmentmanagementsysteminPHPandPayPal1O-12Employeeandvisitorgatepassloggingsystem1O-13Onlineprojecttimemanagementsystem1O-14Onlinediagnosticlabmanagementsystem1

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 论文指导/设计

移动网页_全站_页脚广告1

关于我们      联系我们       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号  |  icp.png浙ICP备2021020529号-1 浙B2-2024(办理中)  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服