RAT:基于强化学习驱动和自适应测试的Web应用程序防火墙漏洞发现

摘要

    web应用程序防火墙(WAFs)负责大量遭受残酷攻击的web应用程序的安全。由于网络攻击日益复杂,WAFs必须定期进行测试和更新,以抵御源源不断的网络攻击。在实践中,由于攻击模式的多样性,使用蛮力攻击来发现漏洞是不可行的。文章提出了一种用于发现WAFs注入漏洞的自动黑盒测试策略——强化学习驱动自适应测试(RAT)。特别关注SQL注入和跨站点脚本攻击(XSS),这两种攻击在过去十年中一直是十大漏洞之一,但RAT还可以测试其他基于字符串的代码注入攻击。更具体地说,RAT自动地从全面的有效载荷集合的攻击样本中提取模式,并将类似的样本聚类在一起。然后利用强化学习技术结合一种新的自适应搜索算法对集群进行搜索,并有效地发现几乎所有的绕过攻击模式。实验表明,在实践中,RAT在发现大规模载荷空间中的绕过攻击载荷方面是高效和有效的,其性能优于最先进的技术。

(RAT,一种基于搜索的技术,结合了强化学习算法和创新的自适应搜索方法。RAT通过考虑n个标记的连续序列,自动从攻击载荷中提取模式,然后利用强化学习技术将相似载荷聚类在一起,发现包含绕过载荷的聚类,最后,受搜索引擎的启发,RAT对测试候选对象进行排序,并为每次测试选择绕过WAF概率最高的有效载荷。实证结果表明,考虑令牌序列而不是单个字面值和聚类有效载荷可以提高发现有效载荷的性能,此外,对比实验表明,RAT算法的性能明显优于目前最先进的算法)

文章创新点

1)采用n-gram作为特征提取方法对复杂的攻击模式进行建模,得到了更好的性能。

2)评估聚类效果,提出一种对相似攻击的相似攻击载荷进行聚类的方法。

3)利用-greedy算法和一种新的自适应搜索技术提高了黑盒测试方法的效率。

相关研究:Thomé等提出了适应度函数来衡量SQLi字面量与生成旁路有效载荷的距离。Avancini和Ceccato使用了遗传算法(GA)来寻找网页的脆弱输入。Duchene等在模糊测试中采用遗传算法生成跨站攻击载荷。

     对抗性:Elderman等人模拟了一个对抗性网络安全游戏,其中攻击者和防御者是两个对抗性代理,使用强化学习技术赢得游戏。Demetrio等提出了一种对抗方法WAF-A-MoLE,通过突变攻击串绕过ML-Based的WAFs。大多数对抗方法的目标是绕过ML-Based的WAFs,而文章方法的目标是基于签名的WAFs。

基本思想和框架

   RAT方法,使用机器学习算法来提供更好的有效性和效率的黑盒测试。RAT使用n-gram标记攻击载荷,并将类似的攻击载荷聚类,然后使用强化学习技术-greedy策略发现绕过载荷的集群。最后,在集群内部进行自适应搜索,有效地发现绕过负载。

    代码注入攻击有效载荷是通过连接各种字符串片段形成的。这些分片是测试参数,每个分片负责攻击有效载荷绕过防火墙的失败或成功。在黑盒测试中,没有任何关于测试下的应用程序源代码的信息来区分有效的和无效的片段。然而,根据测试过程中从应用程序获得的反馈,可以找到有效的片段。在一个丰富的数据集中有大量不同的片段,测试工具需要太多的观察来收集足够的信息。因此,考虑将相似载荷聚类在一起,可以减少碎片的种类,以便快速区分它们。此外,由于绕过有效负载往往会聚集在一起,因此将搜索精力投入到有效集群上可以显著提高性能。

    测试阶段准备攻击样本的过程:Dataset为攻击载荷的集合,首先,n-gram标记器对攻击样本进行标记,然后,单词嵌入模块将每个标记映射到实数向量,层次聚类使用这些向量对标记进行聚类。二进制编码器利用层次聚类模块获得的聚类形成一个二进制特征向量,并将这些向量传递给深度嵌入模块(DEN)对攻击样本进行聚类。最后,在特征提取阶段Token Selector对每个簇只选取有效的令牌,然后IDF Calculator 构成每个攻击载荷的主要特征向量。然后将集群、攻击样本及其特征向量传递给Test Oracle,用于测试算法。

研究过程

Clustering Payloads

  (一)n-gram Tokenizer:将攻击有效负载分解成字符串片段,然后根据它们的公共片段将它们聚集在一起。换句话说,将数据集分割成更小的数据集;这样就可以在每个小数据集中独立地进行搜索。n-gram Tokenizer:可以将代码注入攻击的每个有效载荷分解成更小的块,称为令牌。每个标记可以是一个字符,也可以是一个字符序列。然而,并非总是单个令牌,而是令牌的组合可以导致有效负载成功。因此,使用一种称为N-gram的方法来提取令牌组合。N-gram是一个字符串的N个标记的连续序列,将攻击载荷分解成更小的片段,这有助于在搜索策略中考虑更复杂的模式。

(二)Word Embedding:在代码注入攻击中,不同的字符串片段可以互换使用(例如,在SQLi中,1=1是“a”=“a”的替代方法)。为了将类似的攻击负载聚类,可以将可选的片段视为一个单独的特性。为此,使用word2vec来学习每个字符串片段的向量表示;这样,就可以测量片段之间的相似性。在本研究中,由于海量数据集中片段的稀缺性,我们使用了跳跃图模型。

(三)Hierarchical Clustering:在对碎片进行矢量化处理后,利用余弦距离分层聚类方法将相似的碎片聚类在一起。

(四)Binary Encoder: 给定一组包含聚类片段的有效载荷集合,将每个有效载荷转换为二进制向量,作为聚类算法的输入。向量中的每一项表示一个集群,该集群指示相应的有效负载是否包含属于该集群的任何片段。

(五)Deep Embedding Network (DEN):使用Binary Encoder的输出来群集攻击有效负载。二进制编码器的输出是一个复杂的二进制向量,其中的项是相互独立的。将编码器的输出输入k-means算法。针对二进制特征发现使用这些相似度度量聚类高维原始数据会导致较差的性能。因此,使用特征转换方法来映射的原始数据到一个可区分的特征空间。主要的数据转换方法包括线性变换如主成分分析(PCA)和非线性变换如核方法。文章中使用DEN,它首先利用深度自动编码器从输入数据学习低维表示。最后,利用k-means对学习到的特征进行聚类。Autoencoder是一种无监督神经网络,由编码器函数h = f(ˆx)和解码器函数r = g(h)两部分组成。编码器将原始数据映射为潜在表示,然后解码器根据潜在特征重建原始输入数据。简单地说,自动编码器通过最小化重构损失函数L(ˆx, g(f(ˆx))来学习潜在表示。考虑到输入是二元的,使用二元交叉熵作为损失函数。

Feature Extraction

    从片段集合中选取主要的片段,然后计算每个片段的逆文档频率(Inverse-Document-Frequency, IDF),构建最终的特征向量,为每个集群分别重复此阶段。

(一) Token Selector:由于每个集群都是原始数据集的子集,因此集群的片段集是主片段集合的子集。因此,作为第一步,删除未使用的片段,然后保留剩下的。为了提高算法的性能,在每个聚类中,从片段集中去除非信息片段,如高度重复和极其罕见的片段。为此,首先计算每个片段的熵值,然后删除熵值低于阈值的片段。

(二)IDF Calculator:在残存的碎片中,罕见的更有价值;因此,使用反向文档频率计算每个惟一片段的权重。为每个负载创建一个特征向量。如果载荷中包含一个片段,则该片段在特征向量中的值为该片段的权值;否则,它就是零。

Test Oracle

由于是一种黑盒测试,可以从保护WAF获得的唯一信息是一个请求是被识别为恶意的还是良性的。因此,提出了一种自适应搜索技术称之为AdaptiveSearch,它可以从以前的经验中获益,最大限度地减少失败的尝试。AdaptiveSearch背后的关键观点是,如果一个片段比其他片段参与更多先前被阻止的攻击,它就更有可能导致失败。因此,如果一个新的测试有效载荷包含这些片段,它更有可能被WAF识别。更具体地说,在AdaptiveSearch中,假设之前被阻止的攻击集合是一个文档,新的测试候选是查询。为了找到绕过WAF的可能性最高的有效负载,对于每个查询,计算一个术语频率逆文档频率(TF-IDF)分数,该分数表明查询与文档的相关性。最后,选择得分最低的有效负载,然后针对WAF执行它。如果选择的有效载荷绕过了WAF,在进一步的测试中,不会在分数计算中考虑它的片段;否则,将有效负载添加到文档中。

研究测试

Q1: n-gram的选择是否重要?   ---对SQLi和XSS数据集都使用了Bigram。

Q2:聚类如何影响性能?     ---找到有效的集群-greedy 可以通过丢弃无效的集群显著提高方法的性能。

Q3:RAT如何超越最先进的技术?  ---RAT能够在合理数量的假阳性情况下找到第一个旁路。

Q4:在实践中,RAT的效率和效力是否可接受?    ---RAT在实践中是高效和有效的。


注:原文为  RAT: Reinforcement-Learning-Driven and Adaptive Testing for Vulnerability Discovery in Web Application Firewalls


 

你可能感兴趣的:(RAT:基于强化学习驱动和自适应测试的Web应用程序防火墙漏洞发现)