避免警惕疲劳:如何自动摆脱WAF假阳性
2020年10月27日

警惕疲劳-在WAF中引入假阳性

所有WAF专家都知道处理大量警报是什么感觉. 它们也很可能在捕鱼上浪费了很多时间 假阳性 在所有这些警报中. WAF的目的是阻止攻击,让合法的流量通过. 假阳性事件使警报feed变得混乱,更糟糕的是,还会阻塞合法的通信.

有些假阳性事件是由应用程序中使用的错误或错误实践引起的. 其他事件的发生可能是因为WAF规则过于通用或不适合您的站点的工作方式.

例如,在HTTP请求参数中发送JavaScript代码看起来很可疑. 它可能会被javascript相关的WAF规则检测到,比如跨站点脚本. 然而,, HTTP参数中的JavaScript代码在JavaScript教学网站中可能是完全合法的.

消除这些误报的一种方法是对WAF规则进行烦人的调整——有时甚至会禁用一些安全规则,让服务器冒着风险. 这里的取舍很明显——最严格的安全意味着屏蔽100%的流量. 这显然是一个糟糕的解决方案,因此需要其他解决方案.

这篇文章描述了Imperva研究团队调查的一种新方法. 它展示了解决这个问题的另一种方法, 使用更ab视讯下注可以显著减少在该过程中投入的工时.

减少WAF假阳性的新方法

攻击分析

攻击分析 是一个Imperva解决方案,旨在粉碎安全团队收到的令人抓狂的警报的速度. 攻击分析将成千上万的警报浓缩成几个相关的, 可调查的事件,为WAF警报提供了新的背景. WAF警报通常包含与单个HTTP请求(如源IP)相关的数据, 目标URL, HTTP参数等等. 然而,攻击分析事件有一些关于攻击的额外上下文,例如:

  • 有多少消息来源参与了这次攻击
  • 这些源针对的所有url
  • 攻击中使用的不同客户端工具(浏览器、机器人等).…)

在一个完整的安全事件背景下看待攻击, 而不仅仅是一个请求或一个会话, 帮助ab视讯下注解决假阳性问题.

攻击分析中的假阳性

ab视讯下注回到上面的假阳性例子. 考虑一个教授JavaScript的网站. 在现场的一个练习中, 最终用户被赋予一项任务——编写JavaScript代码,在弹出窗口中打印一条消息. 本练习中的URL在HTTP请求参数中发送最终用户编写的JavaScript. 因为这是网站运作的方式, 许多终端用户将使用该URL并向应用程序发送JavaScript.

但, 尽管JavaScript看起来可疑,可能会触发WAF规则, 此JavaScript是合法的,并产生假阳性警报. 那么这个假阳性警报的攻击分析事件会是什么样的呢?

这种“攻击”具有以下属性:

  • 许多源ip,因为许多站点的用户做这个练习
  • 它针对特定URL中的单个HTTP参数
  • 所有源ip都使用浏览器

在攻击分析中检测假阳性

使用攻击分析事件给ab视讯下注的新视角, ab视讯下注可以使用统计方法来发现假阳性.

ab视讯下注可以建立一个有监督的机器学习模型,将攻击分析事件分类为假阳性.

模型的特征可以是事件的属性.g.:

  • 源ip数量
  • 浏览器数量
  • 目标url的数量
  • 事件持续时间
  • 和更多的……

ab视讯下注的团队通过标记真实警报和假阳性的不同例子来构建模型. 使用这些不同的例子, 该模型学会了识别假阳性事件的统计属性.

基于随机森林分类器模型的攻击分类

网络攻击数据收集与分类

标签任务主要是手工完成的——ab视讯下注浏览客户的事件并给他们贴上标签. 当攻击非常明显时,可以自动找到一些真正的警报.

试着模仿“真实世界”的场景, ab视讯下注将Imperva事件数据划分为重要攻击类型子集,如SQLi, XSS, 和远程代码执行. 然后, 对于每个攻击类型子集, ab视讯下注将每个事件标记为假事件或真事件,以便每个攻击类型的整体标签分布将大致满足Imperva的“真实词”假阳性分布假设. 例如, 基于ab视讯下注的领域知识假设, XSS攻击比其他类型的攻击更容易出现假阳性,因此采样和标记了更多这类错误警报.

ab视讯下注最终以1:10的比例标记数据——这意味着对于ab视讯下注在现实世界中采样和标记的每一个假阳性事件,ab视讯下注都标记了10个其他的真实事件. 回想一下,这个比例是由不同攻击类型的假阳性分布人为和隐式推导出来的. 它也符合ab视讯下注的假设,假阳性事件只占系统警报的一小部分. 事实上,在现实世界中,误报率可能远远低于10%. 然而,, ab视讯下注仍然希望有足够数量的假警报示例,以使模型能够很好地学习, 所以ab视讯下注发现这种权衡对ab视讯下注的任务来说是最优的.

标记过程产生了几百个标记事件——一个很小的数据集, 可能有高方差. 然而, 打标签是一项既困难又耗时的工作, 与其标注更多的数据, 在构建模型时,ab视讯下注克服了小数据集的困难.

建立机器学习模型

一开始,ab视讯下注用的模型是 随机森林. 但效果并不好. ab视讯下注在不同的训练测试中训练了几个随机森林, ,偶尔, 一个有着可怕结果的模型被创造出来了. 这强烈表明数据集太小了. 由于标记数据很少,ab视讯下注的训练和测试分布彼此不同.

这时,ab视讯下注注意到一些有趣的事情. 对于每个样本,ab视讯下注测试的大多数模型都给出了正确的预测. 这让ab视讯下注想到了使用随机森林的集合, 每一种方法都是在训练数据中的样本子集上进行训练. 得分最高的森林被用于最终的模型,最终的预测是它们整体预测的平均值.

在优化结果时,最重要的指标是精度. 就像ab视讯下注想要过滤掉假阳性一样,ab视讯下注也想要尽可能少地错过真正的警报.

结果

精确度是ab视讯下注最重要的指标,ab视讯下注达到了1的高精度得分. 然而,这是以召回的代价为代价的,召回率明显较低——略低于0.5. 结果表明,该模型并不能将真警报和假警报区分开来. 但是许多错误警报并没有被模型识别出来.

下图显示了集合中随机森林的数量对模型得分的影响. 在训练期间,训练了200个随机森林. 红线表示随着集合规模的增长,精度趋于稳定. 它还表明,大约80个随机森林的集合应该足以获得较高的精度. 回忆分数需要更长的时间来稳定,并需要集合近180个随机森林.

另一件有趣的事情是,在真实数据中,该模型将多少警报分类为假阳性警报. ab视讯下注用这个模型分析了几个客户的事故. 大约70%的客户平均只发生了一小部分的假阳性事件. 其余的应用程序自然容易出现假阳性事件.g. (一个JavaScript教学网站),因此误报率略高. 通常,事件将发生在重复产生类似事件的特定URL或特定参数上.

没有假阳性的生活?

上述结果表明,假阳性和WAF警报的问题可以部分缓解, 至少在使用事件上下文而不是单个HTTP请求时是这样.

使数据集更丰富, 要么通过手动标记更多的数据,要么通过客户自动反馈, 可以大大改进这个模型吗.

本文描述的模型只考虑 元数据 一组警报的. 它不使用 内容 一个单一的警报. 因此,还应该考虑另一种方法——一种将警报作为输入而不是事件并学习其内容的模型. 例如,它可以使用不可打印字符的数量或HTML标记的数量作为特征. 将内容感知方法与事件感知方法相结合,可以全面解决WAF中的误报问题.

 

原文: Imperva

职位:siteadmin
更多的文章 App 保护 | 数据安全
淘汰了中间的人

淘汰了中间的人

时间是下午12:53. 你刚刚来到你最喜欢的咖啡馆,与一位令人兴奋的潜在客户敲定了交易. 突然,你想起公司服务器上有一份文件,你需要在你的潜在客户之前快速浏览一遍...

阅读更多
友情链接: 1 2 3 4 5 6 7 8 9 10