摘 要: 跨站脚本攻击是一种特殊的Web客户端脚本注入攻击手段,目前对于跨站脚本攻击缺乏有效的防御措施。针对这一问题,提出一种采用决策树分类算法检测跨站脚本攻击的方法,该方法将Web应用程序中容易受到跨站脚本攻击的元素和对象作为特征属性,利用决策树算法对特征属性的取值进行分类,以此对跨站脚本攻击进行检测。实验结果表明,该方法能够有效解决跨站脚本攻击的检测问题。
关键词: Web安全;跨站脚本攻击;决策树算法;攻击检测
0 引言
跨站脚本攻击(Cross Site Scripting,XSS)是一种面向Web应用程序客户端,基于脚本代码漏洞的计算机攻击技术。跨站脚本攻击是由于Web应用程序对用户的输入过滤和处理不足造成的,攻击者利用跨站脚本漏洞把恶意的脚本程序注入到网页中,当其他用户浏览被注入的网页时,就会执行其中的恶意脚本,对受害用户造成Cookie窃取、会话劫持、钓鱼欺骗甚至发起拒绝服务攻击等各种危害。
跨站脚本攻击一般不会影响到Web服务器的安全。但是如果跨站脚本攻击与其他攻击手段同时作用时,则可能对Web服务器和受害者主机造成危害。例如,跨站脚本攻击与SQL注入攻击结合会破坏Web服务器数据库安全;跨站脚本攻击获取受害人主机信息后,攻击者进一步进行网络入侵攻击等。
1 DOM-Based跨站脚本攻击原理
DOM-Based型跨站脚本攻击是基于DOM结构的一类特殊的跨站脚本攻击。在Web应用程序中,脚本可以通过DOM来操纵网页的内容和属性,从而实现Web应用程序在运行时动态改变页面的内容和样式。但是如果脚本代码中包含恶意脚本时,就可能发生脚本代码恶意操纵DOM对象而导致Web应用程序发生跨站脚本攻击。
由于DOM-Based跨站脚本攻击的本质和攻击原理与传统的跨站脚本攻击不同,因此传统的跨站脚本攻击检测和防御方法不适用于检测DOM-Based跨站脚本攻击,导致DOM-Based跨站脚本攻击成为互联网安全的严重威胁。
2 基于决策树分类的攻击检测方法
本文提出一种基于CART决策树自动检测DOM-Based跨站脚本攻击的方法,并基于该方法构建了以CART决策分类模块、攻击检测知识库模块和攻击检测模块为一体的攻击检测模型,该模型结构如图1所示。
模型以标准DOM树作为原型,构建一棵CART决策树。该决策树的主要功能是在程序运行时检测敏感位置的脚本代码是否对程序造成DOM-Based跨站脚本攻击。
2.1 特征属性选取
2.1.1 Web地址特征属性
用户向Web服务器发出信息请求,一般通过统一资源定位地址进行交互,即链接。用户可以在链接中添加参数,当服务器得到用户请求后,首先获取所请求的资源,然后将参数传给服务器进行处理。攻击者利用这种机制,构造具有攻击性的URL地址向服务器进行提交,就可能发生跨站脚本攻击。所以,攻击检测系统需要URL中的参数对进行分析,获取参数以及其取值作为攻击检测的特征属性。
其次,Web应用程序中,部分HTML元素具有可请求服务器资源的属性,如<a href=URL>、<img src=URL>、<link src=URL>、<script src=URL>、<action src=URL>等。如果攻击者构造出具有恶意的URL并发送到Web服务器请求执行,也可能发生跨站脚本攻击。所以,攻击检测系统需要将此类属性作为特征属性。
2.1.2 表单元素特征属性
表单是用户与服务器进行交互的基本窗口。表单将用户输入的信息提交给服务器,由服务器对这些信息进行处理。这样的交互机制也给攻击者带来了可乘之机。攻击者可以通过表单构造具有恶意功能的脚本代码并提交到服务器执行,从而发生跨站脚本攻击。本文将表单中用户输入的值作为特征属性进行检测。
2.1.3 DOM渲染特征属性
脚本程序可以通过操纵DOM节点来实现对Web页面的动态改变。如果攻击者利用恶意脚本对DOM结构进行破坏,注入相应的恶意代码,则可能发生跨站脚本攻击。在特征提取时,需要将待检测的页面中的脚本代码和DOM对象及其取值进行解析。
2.2 决策树分类模块
模型中决策分类算法是基于二分递归分类的CART决策树算法。算法将待测样本集分为两个子集,使生成的每个非叶子节点都有两个分支,从而得到结构简洁的二叉树[1]。CART决策算法选择具有最小gini系数值的属性作为测试属性,gini值越小划分的效果越好[2-3]。
设样本集T中包含n个类,则:
其中,pj是T中包含类j的概率。若将T划分为两个子集T1和T2,则:
根据式(2)得知,使得gini(T1,T2)值最小的分类就是最优的分类。
本研究采用CART决策算法对特征属性和其取值进行决策分类。如一个特征属性取值符合标准DOM树的取值,则将该取值标记为正常取值,划分为左分支;否则标记为恶意取值,划分为右分支,最终形成一棵二叉树[4-5]。图2所示为利用CART二叉决策树对特征属性进行分类的示意图。
CART算法在分类时每个属性都被详细考虑,样本中的错误数据也会被决策树学习,造成过拟合问题[6]。为解决决策树的过拟合,需对决策树进行剪枝。
本研究采用基于代价复杂性的后剪枝方法[7]对生成的二叉决策树进行剪枝。该方法将决策树上的每个非叶子节点作为修剪的候选对象,计算其表面误差率增益值α:
其中,是子树中包含的叶子节点个数;R(Tt)是子树Tt如果不被剪枝的误差代价,它等于子树Tt上所有叶子节点的误差代价之和;R(t)是节点t如果被剪枝的误差代价,其计算方法如式(4)所示。
R(t)=r(t)*p(t)(4)
其中,r(t)是节点t的误差率;p(t)是节点t上的样本占所有样本数的比例。
剪枝时,找到α值最小的非叶子节点,删除其左右孩子即可完成剪枝。当有多个非叶子节点的α值同时达到最小值时,取最大的节点进行剪枝。
2.3 攻击检测模块
在攻击检测阶段,系统利用决策树分类得到的知识库对待测页面中提取的DOM节点取值进行分析检测,判断页面上每一个DOM节点的属性值是否存在攻击或者潜在攻击行为。如知识库中不存在待测数据,表明该数据需要通过决策树进行决策分类,并将决策的结果填充到知识库中,使得知识库随着系统的不断运行而得到补充。检测流程如图3所示。
3 实验及结果
利用该检测系统对一个已知漏洞的网站进行检测,并将检测结果与使用Paros Proxy3.2.13(Paros Proxy3.2.13是Web应用程序漏洞挖掘的代表性工具)检测的结果进行比较检测结果如表1所示。
利用Paros Proxy3.2.13和本研究提出的检测方法对某高校BBS网站和会议室预约平台进行检测,检测结果如表2所示。
从表1和表2的实验结果可以看出,本研究所提出的检测方法对未知攻击行为也能有效检测,但由于在本方法中,判定一个脚本行为是否为攻击行为的依据不够全面,导致本方法在检测时会产生部分误报和漏报的情况。
4 结论
本文分析了基于DOM的跨站脚本攻击的产生原理和现有检测方法的不足,提出了一种新的采用CART决策树来检测DOM-Based跨站脚本攻击的方法。利用决策树在决策分类上的优势,在提高检测方法的工作效率和检测结果的准确率方面起到重要的作用,对未知的攻击行为也能够进行动态判定并及时响应,解决了基于DOM的跨站脚本攻击的检测难的问题。
鉴于DOM的跨站脚本攻击的产生和其特殊性,判断一个行为是否属于跨站脚本攻击行为仍然需要更进一步地研究。选取最恰当的特征值来描述一个节点的属性值或脚本代码是否会产生攻击,将是下一步的工作重点。
参考文献
[1] 罗可,林睦纲,郝东妹.数据挖掘中分类算法综述[J].计算机工程,2005,31(1):3-5,11.
[2] 栗丽华,吉根林.决策树分类技术研究[J].计算机工程,2004,30(9):94-96,105.
[3] 肖勇,陈意云.用遗传算法构造决策树[J].计算机研究与发展,1998(1):49-52.
[4] 曲开社,成文丽,王俊红.ID3算法的一种改进算法[J].计算机工程与应用,2003(25):104-107.
[5] NOBEL A. Analysis of a complexity based Pruning scheme for classification trees[C]. IEEE Transactions on Information Theory, 2002,48(s):2362-2368.
[6] 王威.基于决策树的数据挖掘算法优化研究[D].重庆:西南交通大学,2005.
[7] LEWIS R J. An introduction to classification and regression tree(CART) analysis[C]. The 2000 Annual Meeting of the Society for Academic Emergency Medicine, San Francisco, Califomia, 2000.