打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
论正则防护系统的全自动绕过与下一代防护方案

在12月20日—22日的第十一届中国IDC产业年度大典上,长亭科技高级研发工程师 李昌志发表了主题为《论正则防护系统的全自动绕过与下一代防护方案》的精彩演讲。


长亭科技高级研发工程师 李昌志


背景

在防护方面目前业内主要有两种做法:

1.传统方法,在一个通用的正则体系内有很多规则,当一个请求送达到一个规则,触发WAF内部的规则,在服务器后端解决攻击。

2.新方案,基于没有规则的无规则体系,匹配一整套规则文本,用这种方式会达到较高的准确率和召回率。


传统WAF的外部检测流程包含以下几个步骤: 

一个传统WAF拿到用户的请求,会生成一个UIL。当UIL被解析以后,会有Q参数。Q参数有编码,普通的用户无法使用。WAF会在下一步有输入标准化模块,我们可以把它理解为解码的标准。

传统的WAF并没有很好的实现解码功能。当它去实现一些常规的解码时,往往会使用一系列比较古老的替换方案。

通过输入标准化模块,请求得到一条责任标签。而WAF在最后还有一个匹配的规则集,传统的WAF会有传统的规则系统,根据黑客的攻击特征,会抽象出很多的规则和特征。

当WAF知道现在的请求已经被匹配,系统判定攻击,在最后它就会执行一个相应的策略,这个策略是由管理员来配置,这就是整个传统WAF对流量的解析和拦截的过程。


RE就是正则表达式,FA是有限自动机。它们之间有什么关系呢?

一个这样的正则表达式,从起点开始它可以匹配一个大写的HA;或者后面无限循环的小写ha,最后可以匹配零到多个感叹号。如果把它画成一个有限自动机,它的初始状态什么都没有,接受一个大写H和一个小写h,一直循环。

两种形式虽然表现的方式不一样,但是它们表达的意思完全相同,这样可以得出一个结论,正则表达式和有限自动机完全等价,可以互相表示。


 另外一个概念就是CFG,把这种形式语言分为几类,根据表达能力的强弱依次是,0型是图文完备的语言,1型是上下文有关,2型是上下文无关,3型是正则文法。

RE和CFG的区别在于:RF使用的是正则文法,CFG使用的是上下文无关文法,CFG能表达的语言范畴、规则集远大于正则文法。每一种形式语言的文法都可以用一种自动机来表示。

正则防护系统的弱点

 基于正则防护系统存在的很明显的弱点。现在行业里边存在的很多安全软件,它去匹配一些攻击特征时,都使用RE描述的一些常见特征。但是常见的使用文法都是CFG,那么就会存在一系列的问题。

 SQR语言本来存在的语法结合是CFG,现在存在三种情况,一种是只保函RE,不包含CFG,或者重叠,或者只包含CFG不包含RE。当一个WAF用RE的规则库使用CFG时,它们重叠的部分可以认为是WAF所命中的攻击。


 只存在RE的地方不包含CFG,这整块是误报。根据上图可见,两个圈重叠的部分是很小的,会存在大量的漏报和误报。

 首先,维护规则问题,一个基于正则表达式的WAF,需要随着时间、随着事件一直有人维护,但是这个维护的过程是非常费心费力的。

其次,一个人去维护这样大的规则库容易发生错误,这是一件吃力不讨好的事情。

再次,针对上图做出的效果会存在大量的漏报和误报。

自动绕过


WAF会存在这样的绕过呢?有两个根本的原因:

第一,特征不完备,因为特征不完备所以传统WAF需要人工手工持续地更新、持续地维护规则库。

其次,一个正则表达式存在差异,RE想要匹配一个上下文无关的文法,只能无限的接近,永远不能等价。    


以SQL语言为例,SQL语言使用的文法是CFG,正则表达式与CFG描述的语言存在差集,它存在的差集有两部分,首先漏报、持续漏报。

当找到一个存在点,可以大概猜测定位到这点使用怎样的敏感语法。并且我们使用CFG有效地编码,使RE无法完全匹配CFG。当发生这种情况的时候,攻击者就找到了一种通用的WAF绕过方案。

 我们想做事情,首先知道CFG匹配SQL,但是我们的WAF使用的是RE。当二者发生碰撞,最后找出来的东西就是一个判断有这样的特征的语法。它存在于CFG,但是不存在于WAF匹配的RE所描述的语言。


针对其他攻击,使用这种方案会更有利。因为其他语言从理论上来讲表现更灵活,因为这个SQL语言没有办法去执行,很多常见的语言都提供一个像函数。你会传给它一个字符串,它会去执行,但是SQL不存在这个东西。

下一代防御方案

我们两年前就提出一个的方案,使用词法、语法合理的分析,对整个流量进行整体的分析,经过一个人工智能的打分,通过机器学习模型学习一整套匹配方案,会得出一个完备的模型。


WAF在保证准确率首先首先体现在语法分析,传统WAF使用的是RE,新的防御思路使用的是CFG。RE和CFG是完全无法等价的,RE只能无限地接近CFG,但是永远无法等价。当无限地接近它的时候,存在的语言匹配的集会远大于CFG,这样会存在大量的误报。使用我们的方案以后,整个WAF的检测准确率就会得到非常大的提升。


首先是语义分析,当语法通过了我们规定的CFG以后,我们认为现在你的请求里存在某一段攻击,但是语义分析可以精确地识别出有没有无疑的语法片断,如果有的话我们会对整个请求的恶意进行打分。在我们现在的结果里面,可以看到的准确率和召回率都达到99%以上,传统的WAF很难达到80%以上。

再次是召回率。如果这样做的话就需要写一个亿完整的引擎,我们可以根据一个流量特征精确地匹配出一个流量中使用了哪些编码、哪些变形,通过这些解码,以及解变形以后,我们就可以精确地提取出这个工具,或者这个请求里边哪个片断使用了什么样的攻击。


 最后就是检测性能,为什么说使用了这种方法以后,一个WAF的检测性能就会得到非常明显的提升呢。CFG只需要用一套语法就可以解决所有事情,但是想让RE和CFG无限期的接近,你需要写很多的正则表达式,才能完成这样的事情。

传统的WAF和新的WAF存在的流量检测时候的实现复杂度进行对比,可以看到传统WAF多了一个M,为什么会多一个M,其实新的也是存在一个M,但是它的M永远是1,但是旧的M是好几百,甚至好几千。分析一些比较大型的防火墙的时候,可以发现它里边其实有好几万条规则。当N和L完全相同的时候,使用新的方案效率是老的方案的好几万倍。


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
不同形态的waf优缺点
什么是Web应用防火墙?Web应用防火墙功能有哪些?
腾讯云web应用防火墙(WAF)防护设置步骤介绍
编译原理文法知识
中国网络安全行业10大龙头,360居然不是老大?
QParserGenerator的文法文件介绍
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服