应用遗传算法自动生成XSS跨站点脚本漏洞检测参数的方法
【技术领域】
本发明属于漏洞检测和测试数据自动生成技术领域,具体涉及一种应用遗传算法自动生成XSS跨站点脚本漏洞检测参数的方法。
【背景技术】
随着Web技术的发展,各类型Web应用层出不穷,而由此带来的Web应用漏洞也日益增多,其中危害最为严重的漏洞之一就是跨站点脚本攻击漏洞。跨站点脚本攻击(CrossSite Script,XSS)指的是黑客在Web页面中植入恶意代码,当用户浏览该页面时,攻击者嵌入其中的HTML代码将会执行,从而达到恶意盗取用户信息的目的。
目前针对于Web漏洞的检测技术有两个方向,一种是入侵检测机制,另一种是针对系统本身的检测以使系统更加完善。针对后一种方法目前以针对系统的安全扫描和漏洞检测为主。然而该方法主要针对于系统中存在的漏洞进行检测,对于Web应用中存在的漏洞则无效,因此针对于Web应用漏洞的检查不能再停留在以往的被动式检查上,而应采取主动式的漏洞检测方法。主动式的漏洞检测方法即是从黑客的角度出发模拟黑客的攻击来检测出网站中可能存在的问题。在主动攻击式检测网站漏洞的模式中存在两个需要解决的问题:一方面是如何在信息量浩如烟海的Web页面中寻找到最有可能被攻击的页面,即页面遍历方法;另一方面是在这些页面中如何模拟黑客攻击手法来发现潜在的漏洞点,即攻击数据的设计。但随着Web应用越来越复杂庞大,以往人工指定漏洞测试数据的方法,无论从覆盖程度还是效率方面,都已经无法满足Web应用漏洞检测的需要。因此,漏洞检测参数的自动生成已经成为一种重要的参数生成手段。
遗传算法是一类借鉴生物界的进化规律演化而来的随机化搜索方法,是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型,是具有“生存+检测”的迭代过程的搜索算法。它由美国的J.Holland教授1975年首先提出,其主要特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,能自动获取和指导优化的搜索空间,自适应地调整搜索方向,不需要确定的规则。遗传算法的这些性质,已被人们广泛地应用于组合优化、机器学习、信号处理、自适应控制和人工生命等领域。遗传算法中,选择、交叉和变异构成了遗传算法的遗传操作;参数编码、初始群体的设定、适应度函数的设计、遗传操作设计、控制参数设定五个要素组成了遗传算法的核心内容。遗传算法是现代有关智能计算中的关键技术之一,其特点使其在软件测试所需的参数生成中同样有良好的使用性。
【发明内容】
本发明的目的是弥补人工生成跨站点脚本漏洞检测参数的不足,提出一种应用遗传算法自动生成XSS跨站点脚本漏洞检测参数的方法。该方法覆盖程度和效率都比较高,且实现了算法的系统结构。
本发明提供的应用遗传算法自动生成XSS跨站点脚本漏洞检测参数的方法包括以下步骤:
步骤1、根据XSS跨站点脚本漏洞的产生规则,定义本发明所述方法的基础参数集;
步骤2、定义生成XSS跨站点脚本漏洞检测参数的遗传算法的基因编码策略,该基因编码策略用于生成基因编码;
步骤3、定义生成XSS跨站点脚本漏洞检测参数的遗传算法的交叉操作和变异操作,对父代基因编码执行交叉、变异操作生成子代基因编码;
步骤4、定义生成XSS跨站点脚本漏洞检测参数的遗传算法的模拟攻击操作;
步骤5、定义生成XSS跨站点脚本漏洞检测参数的遗传算法的选择操作;
步骤6、对于应用遗传算法自动生成XSS跨站点脚本漏洞检测参数的方法,定义该方法的迭代算法,至迭代算法终止即可获得XSS跨站点脚本漏洞检测参数。
本发明方法的具体操作过程如下:
1.定义漏洞检测参数集
本发明定义了跨站点脚本漏洞的检测参数集,其中包括在Web页面中的三处注入点,即Text,TextArea和Password三个HTML内部控件,以及四个漏洞产生位置,即Web页面的HTML注释中,INPUT元素中,<script></script>块结构中及<body></body>块结构中,标记点有“<html>”,“</html>”、“<script>”,“</script>”、“<input”,“</form>”、“<TextAre>”,“</TextArea>”。本发明定义了参数中插入的恶意代码主要是JavaScript代码,其中主要包括可产生跨站点脚本漏洞特殊字符“’”、“<”和“;”;定义了跨站点脚本漏洞参数的通用形式为{C}{A}alert(‘XSS attack!’){B},其中集合{A}{B}代表跨站点脚本插入点的标记对,主要包括“<script>”,“</script>”、“style=“background:url(javascript:”,“)””、“</TextArea><script>”,“</script>”和“”,“”;集合{C}代表可选的特殊符号集合,在<html></html>块中的特殊符号集合为C1={“-->”、“>’>”、“>“>”、“>“’>”},在<script>块中的特殊符号集合为C2={“’;”、““;”}。
2.定义基因编码策略
本发明定义了该生成漏洞检测参数遗传算法的实现,首先需要实现从表现到基因型的映射,即编码工作。而后遗传算法工作于参数的编码而非参数本身。本发明根据跨站点脚本漏洞的检测参数集和通用参数拼接形式进行编码,其中每个基因包括14位,前2位代表可能出现在Web页面中的位置,00,01,10,11分别代表页面的HTML注释,INPUT元素,<script></script>块结构及<body></body>块结构;中间2位代表脚本注入点,其中脚本注入点仅有三处,故假设只使用00,01,10代表Text,TextArea和Password三个可注入控件,编码11则代表不使用控件;后10位代表攻击所需的特殊符号形式,不同组合分别对应可能采取的不同特殊符号组合,位数设定为10位为了方便的后续扩展。如编码11000000000001代表在<body>块中的Text控件中使用“-->”符号作为参数形成跨站点脚本攻击,即插入“--><script>alert(‘XSS Attack!’)</script>”代码。编码后10位组合所对应的符号参数形式如表1所示。
表1 基因编码后10位组合对应的符号参数形式
3.交叉操作
本发明定义了针对二进制基因编码的交叉操作。将被选中的两个个体的基因编码进行交叉操作,生成两个新的个体。根据对XSS跨站点脚本参数编码方式的研究,本发明采用的交叉算子为均匀交叉,即在该编码方式的三个参数段上,对每个参数位串进行单点交叉,可以在增加交叉点的同时保证交叉点可以均匀地落在每个参数的位串上,如图1所示。
4.变异操作
本发明定义了针对二进制基因编码的变异操作,通过使用变异算子将新个体的基因编码的各位按概率Pm进行变异,对于二进制表示的基因编码是对基因编码的变异位的值取反。考虑到在XSS跨站点脚本攻击所使用的参数集大小适中,并且参数相对确定的特点,本发明采用的变异概率为Pm=0.9%。
5.定义模拟攻击操作
本发明对于自动生成跨站点脚本漏洞检测参数的方法实现,定义了其模拟攻击操作。通过对本发明的步骤1、步骤2、步骤3定义的方法得到了XSS跨站点脚本攻击所需要的基因编码后,利用本发明步骤2定义的编码策略对该基因编码符合HTML语法规则并且可以在实际操作中使用的基因编码进行解码,可以得出XSS攻击位置及具体攻击内容,并拼接得到攻击参数,利用该攻击参数进行模拟攻击操作,保存模拟攻击反馈结果作以供步骤5定义的选择操作使用。
6.选择操作
本发明定义了针对基因编码的选择操作,方法是将每次模拟攻击的反馈结果保存,并判断其攻击是否有效果,选择在模拟攻击操作中有效果的基因编码中作为新的父代基因编码,淘汰攻击无效果的基因编码。
7.迭代算法
本发明步骤6所述的迭代算法的实现方法是,首先需要根据实际应用的需要人工设定迭代算法的迭代次数,还需要根据实际需要和基础参数集设定初代数据,并通过编码策略将其转化为二进制表示的基因编码,将该基因编码作为第一次迭代的父代基因编码;每次迭代的过程为,对父代基因编码执行步骤4定义的交叉操作和变异操作生成的其子代基因编码,并通将这些基因编码中符合HTML语法规则并且能够在实际操作中使用的基因编码进行解码并拼接成攻击参数,然后对目标站点进行由步骤4定义的模拟攻击操作,保存模拟攻击的反馈结果,根据反馈结果判断模拟攻击是否有效,再通过步骤5所定义的选择操作将模拟攻击有效果的基因编码作为下一次迭代的父代基因编码;通过上述迭代过程循环生成新的父代和新的子代,当算法迭代的次数达到程序开始时人工设定的值时,算法终止;至迭代算法终止时,在每次迭代过程中获得的所有的子代基因编码经过解码和拼接得到的攻击参数,即为本发明方法所获得的XSS跨站点脚本漏洞检测参数。
本发明的优点和积极效果:
本发明提出一种应用遗传算法自动生成XSS跨站点脚本漏洞检测参数的方法,该方法以遗传算法为基础,对于跨站点脚本漏洞检测参数的自动生成,设计了其参数集和编码解码策略、攻击参数数据库,以及交叉造作、变异操作、模拟攻击操作和选择操作。通过遗传算法可能生成出更多的可用数据,改变了以往人为指定测试数据效率低覆盖面小的缺点,可以使得数据生成得更快,并且覆盖面更广。因此,通过使用遗传算法生成的测试数据可以使得检测范围更大效率更高。
【附图说明】
图1为均匀交叉操作示意图。
图2为系统流程图。
【具体实施方式】
图2给出了本发明的算法流程,现结合本发明进一步提供以下实施例:
根据本发明方法,实现通过遗传算法自动生成XSS跨站点脚本漏洞检测参数的算法还需要包括模拟攻击系统、攻击参数数据库以及模拟攻击的目标系统,并根据最终需要人工设定迭代次数为30次,即循环的代数为30代。其迭代算法的一次迭代过程如下所示。
一、本发明方法的实现方法的迭代算法的一次迭代过程的第一部分为通过遗传算法生成检测参数集。
首先对父代基因进行二进制编码,对表2所示父代基因数据进行二进制编码,根据步骤1定义的在Web页面中跨站点脚本漏洞检测参数集和步骤2定义的编码策略进行编码,得到父代基因编码。
表2 对参数进行编码
编码后,父代基因数据的二进制编码如表3所示。
表3 对参数进行编码
接下来,选择父代基因编码集合中适当个体作为父个体以产生下一代,T2和T3数据在实际中无法使用,不符合编码规则,所以在选择操作中将其淘汰。
对父代基因编码集合进行交叉操作。使用T1和T4作为父代,将T1和T4均匀交叉生成T5和T6,表4所示为T1与T4交叉操作后的二进制编码T5和T6。
表4 均匀交叉生成二代群体
父代基因编码集合进行概率为0.009的变异操作。将T1和T4变异生成T7和T8,表5所示的为T1和T4经过变异操作后的二进制编码T7和T8。
表格5 变异生成二代结果
二、本发明方法的实现方法的迭代算法的一次迭代过程的第二部分为模拟XSS跨站点脚本攻击。
对生成的后代参数进行解码操作,判断出第二代基因编码生成的测试数据的可用性。根据编码策略、HTML语法规则和实际可用性确定生成的测试数据T5、T6、T7、T8均可使用。
根据可用测试数据T5、T6、T7、T8,从攻击参数数据库中选择出具体的攻击数据,得到XSS跨站点脚步攻击所需的内容,HTML注入点及注入内容,将这些参数按照{C}{A}alert(“XSS”){B}的形式、编码策略以及表1的参数对应形式进行拼接,拼接后的形式如表6所示。
表6 攻击参数拼接结果
将拼接后的攻击参数通过模拟攻击系统,对目标系统进行模拟XSS跨站点脚本攻击。
将模拟攻击的结果返回,如表7所示,作为选择操作的筛选条件,从二代群体中选出优良个体作为新的父代。
表7 模拟攻击反馈结果
对本实施例的反馈结果进行判断,并进行选择操作,T5、T7和T8为模拟攻击有效个体,作为新的父代基因编码。本次迭代过程至此结束。
将新的父代基因编码T5、T7和T8作为下一次迭代过程的父代基因编码,重复执行本迭代算法的一次迭代过程的第一部分及第二部分,循环生成更多测试数据。当迭代的次数达到30次时,应用遗传算法自动生成XSS跨站点脚本漏洞检测参数的迭代算法停止。至迭代算法终止时,在每次迭代过程中获得的所有的子代基因编码经过解码和拼接得到的攻击参数,如表6所示,即为本发明方法所获得的XSS跨站点脚本漏洞检测参数。