APP下载

Web应用防火墙在网上银行系统中的应用

2019-09-10杨爱华张茂红

计算机与网络 2019年4期

杨爱华 张茂红

摘要:针对网上银行系统的安全性问题,在已给出的基于用户业务的Web应用防护墙框架上加入自学习模块,可以提升用户介入率,降低WAF误报率。该框架还能有效应对支付密码泄露、数据泄露、隐藏表单篡改和cookie欺骗等安全问题,通过实验验证了所设计的cookie防欺骗整体方案和隐藏表单防篡改防护策略的有效性。

关键词:Web应用防火墙;WAF框架;自学习模块;cookie欺骗防护;隐藏表单防篡改

0引言

随着网络信息的发展和电子商务的普及,网上银行系统如雨后春笋般地快速发展,网上银行是金融界的一大创新,给众多客户带来实实在在的方便,用户可以足不出户地在网上办理修改密码、转账和支付等业务。但网上银行在给客户带来方便的同时也带来了安全隐患,譬如支付密码泄露、数据泄露、DDoS攻击及CC攻击等。目前,网上银行系统的安全隐患不可小觑,部署WAF可以对网上银行系统起到全方位的防护,可以对Web应用层的主流攻击进行阻断,有效地阻止攻击者对网上银行系统的攻击。目前国外WAF,比较出名的有imperva,nsfocus,WAF等,国内比较出名的有天融信、绿盟和启明星辰的WAF产品,主要功能有阻断注入攻击、cookies以及网络欺骗攻击,XSS攻击、目录遍历.DDoS以及CC攻击等攻击。

1WAF中自学习模块

1.1WAF内容

WAF部署在客户端与应用程序之间,能实现对应用程序的防护功能,通过不改变原有网络拓扑结构,部署简单,容易被用户接受。WAF的主要工作职责对信息窃取、网页篡改、非法侵入和拒绝服务起到防护作用。WAF不仅能保护网站及服务器遭受各种恶意攻击,还能优化资源保证Web可靠性与可用性。

1.2自学习模块

根据网上银行系统特点,路瑞强等人给出了一个基于用户业务的WAF框架,整体架构包括预处理模块、防护模块、管理模块和日志模块。为了提升检测速度,降低WAF误报率,加入自学习模块。模块分为学习过程和过滤过程,要从正则自适应匹配、长度纬度以及语义分析3个维度来实现,如图1所示。

自适应匹配主要是对维度的Web请求参数值进行过滤,进而自动匹配生成适合该参数值的白名单正则表达式。当应用程序接收到用户的Web请求时,学习过程的正则自适应匹配函数会自动识别,返回相应函数的匹配值,当相同的请求再次被接收时,再一次进行匹配,如果匹配的数值高于之前的匹配结果,则对应的匹配值将重置。在Web请求学习的过程中,对数值的检测会越来越宽松,降低误报率,如有漏报则人工进行审核处理。而检测过程的正则自适应匹配函数支持用户自定义正则,一旦匹配到自学习模式记录的值为字符串类型时,将使用自定义正则进行检测。用户可以在管理页面根据不同的场景进行定制防护,提高自学习模式的通用性。

长度维度的学习和正则维度类似,当新的参数值长度比旧的参数值长度大时,会替代旧长度,处理时主要考虑降低误报因素。

词法分析,把字符转换为ASCLL码的十进制,之后在进行分类,分类规则如下:

①0~31及127(共33个)是通信专用字符或控制字符,标记为c,全称control;

②中文等分为一类,标记为n,即normal:空格;

③—般字符如0,,!,”,@,.,?,标记为u,即usual:常见字符;

④其他诸如’,*,{)等标记为a,即anomaly:异常字符。

在进行分类转换的同时,相同的特征将被合并为一个。例如,输入“aaabbbccc大雨倾盆”,将被转换为n,而“大家好”,则将被转换为nun。语法分析维度有迭代次数的限制,语法分析默认最多存储5个特征,当超过5个特征数时,意味着该参数无固定的特征模式,该维度的检测被投向bypass模式。

2WAF安全防护

当用户开启WAF的Web特征攻击过滤库过滤,可以防护已确定的SQL注入攻击、XSS攻击、CSRF攻击、命令注入、协议入侵和会话固定攻击等常见Web应用层的攻击。Web特征攻击过滤库要及时跟进和升级。除此之外,用户还可以开启自定义策略,譬如HTTP訪问限制、cookie防护、隐藏表单防护、盗链防护、XML防护及应用层DDoS攻击防护等自定义策略。

2.1支付密码防泄露

支付密码泄露问题是网上银行的一大安全隐患,预防这一隐患,需要谨防钓鱼网站。但钓鱼网站利用XSS攻击漏洞进行的钓鱼攻击手段相当隐蔽,即使网民的安全意识相当强,也无法抵御攻击,WAF部署在防护网站与客户端之间会阻断XSS攻击。XSS攻击分3种,反射型XSS攻击、存储型XSS攻击和基于DOM的XSS攻击。编写XSS攻击正则,如下所示:黑客制造钓鱼网站,若代码能匹配上WAF的上面这段XSS正则,WAF就会阻断请求。黑客的阴谋就不能得逞。

2.2cookie欺骗防护模块

当用户在网上选购商品时,会把选择好的商品放入购物车。若浏览器突然异常关闭,由于HTTP是无状态链接,如果没cookie,购选的商品就不复存在,这个结果是大家最不想看到的,若再次打开购物网重新链接HTTP,会影响网络速度。但cookie带来便利的同时也会带来欺骗。cookie欺骗是指伪造用户身份或权限,目的就是想要获得某些用户或者某些高级权限。在网上银行系统中,常遇到黑客非法获取别人的cookie进入系统进行非珐操作。为了安全,设计了—套完整的cookie防欺骗方案。

2.2.1cookie中的secure属性

该属性被设置为“真”时,表示创建的cookies会被以安全模式向服务器传送,也就是只能在HTTPS连接中被浏览器传递到服务器端进行会话验证,如果是在HTTP连接中则不会传递该cookie信息,所以不会被窃取到cookie的具体内容。就是只允许在加密的情况下将cookie加在数据包请求头部,防止cookie被带出来。

2.2.2 HttpOnly属性

如果在cookie中设置了“HttpOnly”属性,那么通过程序(Js脚本、Applet等)将无法读取到cookie信息,这样能有效的防止XSS攻击。secure属性的目的是防止信息在传输过程中被监听捕获后信息泄漏,HttpOnly属性的目的是防止程序获取cookie后进行攻击。但是这2个属性并不能解决cookie在本机出现的信息泄漏的问题(FireFox的插件FireBug能直接看到cookie的相关信息)。

2.2.3 cookie加密

cookie往往被用于记录用户登录状态,比如userid尽量不要记录密码。因为cookie被存储在客户端会很容易被篡改。为了有效防止XSS攻击盗取用户cookie,给cookie加密,这样可以防止基于cookie的SQL注入、命令注入以及其他五花八门的攻击。

cookie欺骗防护的功能核心,在WAF上进行cookie加密,加密算法使用MD5,对userid进行加密,加密后的userid被存储在客户端的cookie中,由于加密算法不可逆,所以服务器收到的cookie是无法解密的,服务器应在用户数据列表中增加一个专用保存MD5加密后的字段userid,然后通过sQL查询到userid。当WAF开启cookie加密策略,可以有效防止XSS攻击盗取用户的cookie,使攻击者拿到用户cookie的密文也无济于事,最终WAF因无法解密而失效。

2.2.4 cookie签名

操作办法是在set-cookie加上防篡改验证码。如:user name cecgwl23。防篡改验证码的生成规则的方法:md5(cookieValue+key)或shal(cookieValue+key),key可以是复杂服务器端得到客户端送上来的cookie,也可以是服务器端所掌握—个固定字符串。然后,重新计算一下验证码,如一致,则未篡改。在这里,签名是根据client ip加密的,恶意者即使拿到cookie,由于签名验证不通过,无法达到cookie欺骗的目的。

防护措施除此以外,设置cookie有效期限,防止一旦cookie被攻击者窃取,攻击者一直使用用户的账户登录。设置限制cookie的最大个数、cookie名字的最大长度等各项配置多方位防止cookie欺骗的发生。若防护系统无需防护,则添加到白名单。

3隐藏表单

在网上银行系统里,有些表单上的元素为了保密起见对客户隐藏,需要把表单设置为隐藏表单,但依然有被篡改的风险。可以在WAF里设置隐藏表单防篡改策略。隐藏表单的HTML表单字段不会在屏幕上显示,表面上看似无法修改,事实上能被修改。若把价格设置为负数,有的应用程序竟然能接受负数价格,攻击者不仅能收到货物,银行卡还能收到退款。

隐藏表单和其他表单类型是一样的,同样有value这个属性,唯一的区别在于隐藏表单不会把这个元素显示出来,但在提交过程中仍然有效。中进行提交后,应用程序会获取该元素的值,但数值不在屏幕上显示。WAF隐藏表单防篡改策略原理提取特征值:price,隐藏参数格式:id“price”value。若提交代码与隐藏参数格式中内容完全匹配,则请求被阻断。

4实验部分

4.1支付密码泄露

用户在浏览器中输入支付认证的信息包括银行卡号和密码。如果攻击者通过窃听方式或钓鱼网站获得用户的支付密码,就可以通过网络进入持卡人的账户进行转账或者支付,给持卡人带来经济上的損失。下面模拟黑客制造钓鱼,主要代码如下:

用户一旦在网站上输入账户和密码,点击“login”按钮,账号和密码就会被黑客获得。开启WAIF固化规则防护中的XSS攻击,使用渗透工具burpsite拦截请求,在WAF的防护下,XSS攻击请求被拦截。详情如图2所示。

同理,WAF开启表单防护策略编写html代码,。开启隐藏表单防护效果如图3所示。

4.2WAF中的cookie防护

HTTP cookie是通过客户端传送数据的另一个常用机制,和隐藏表单字段类似,HTTP cookie一般不显示在屏幕上,不可以由用户直接修改,但可以使用拦截代理服务器对HTTPcookie进行修改。抵御风险办法之一,就是WAIF给cookie加密。开启WAF的cookie加密策略,使用wireshark工具抓包,cookie加密之后的效果如图4所示,从图中可以明显看出cookie已经被加密。

5结束语

如今,WAF在中国如火如荼地发展,很多企业投入到对WAF的研究之中。WAF为网上银行系统安全保驾护航,不仅解决了网上最棘手的安全问题——支付账户、密码和数据泄露,同时通过加入自学习模块提高了用户参与度,降低了误报率,阻断了黑客的不法攻击。最后,通过实验验证了WAIF能很好地防护网站钓鱼攻击、SQL注入攻击、cookie欺骗攻击和隐藏表单篡改攻击,达到了预期的防护效果。但WAF研究之路还会很长,因为规则库要不断升级才能阻断最新类型的攻击。