前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WAF原理及其使用说明

WAF原理及其使用说明

作者头像
全栈工程师修炼指南
发布2020-10-23 16:57:24
1.1K0
发布2020-10-23 16:57:24
举报

[TOC]

注意:本文分享给安全从业人员,网站开发人员和运维人员在日常工作中使用和防范恶意攻击,请勿恶意使用下面描述技术进行非法操作。

WAF与正则表达式

正则表达式不适合构建WAF由于正则表达式计算复杂度直接影响WAF防御能力;

  • 误报率高
  • 漏报难以平衡
  • 容易绕过

正则表达式DDOS攻击:正则表达式的最坏时间复杂度大于等于?(?2),该正则表达式可被DDOS攻击

  • Regex DDOS与Regex DOS不同 • ?(?2),?(2?) • Regex DDOS目前普遍存在 • Regex DOS很难找到了
WeiyiGeek.
WeiyiGeek.

WeiyiGeek. (1)利用正则表达式匹配的回溯之正则表达式匹配原理:NFA 正则表达式:(a|b)*abb对应的NFA,匹配算法需要尝试每一条路径,直到找到一条匹配路径。尝试所有路径失败则匹配失败。 • 尝试所有匹配路径 • 路径尝试失败,需要回溯

WeiyiGeek.正则表达式匹配原理
WeiyiGeek.正则表达式匹配原理

WeiyiGeek.正则表达式匹配原理

(2)利用正则表达式匹配的回溯之可被DDOS的一种正则表达式模式

代码语言:javascript
复制
??????? = (????)(????)∗(SubC),其中???? ∈ ???

影响范围:

代码语言:javascript
复制
#owasp-modsecurity-crs
(?i:(?:(union(.*?)select(.*?)from)))
(?i:<META[\s/+].*?charset[\s/+]*=)

#wordpress-4.7.1
class-wp-text-diff-renderertable.php: Line 266:
(<ins>.*?</ins>|<del>.*?</del>)

#Discuz_X3.3_SC_UTF8
admincp_announce.php
• Line 136: '/<b>(.*?)<\/b>/i',
•Line 139: '/<i>(.*?)<\/i>/i',
•Line 142: '/<u>(.*?)<\/u>/i',

#某云WAF/360_safe3.php
360_safe3.php某云WAF: union\s+select.*from 
• \/\*.+?\*\/
• <\s*script\b
• UNION.+?SELECT

维护几十条到几百条正则表达式规则,保证拦截率,误报率前提下,所有规则最坏时间复杂度小于?(??)是一件很难事情,正则表达式不适合用于构建WAF;

WeiyiGeek.
WeiyiGeek.

WeiyiGeek.

所以我们需要通过基于语义监测的WAF进行更好的管控和减少误报; 比如:文本:What’s problem about ‘Select id,name from’, give me a hand。

  • 正则:select.*from :正则只关注‘Select id,namefrom’, 忽略了上下文的信息。在做注入判断时,对输入进行片面的理解,导致误报
  • Improved : 整个输入作为一个整体,尝试理解意图。How?

基于语义检测的WAF(抽象攻击语义):

  • 输入是否有效代码
  • 执行了什么动作
  • 动作是否有危害

基于语义检测的WAF—实现:

  • 用户输入->词法分析->语法分析->攻击语义检测->攻击语义抽象

基于语义检测的WAF—优缺点

  • 优点: 运营成本低,高准确率,低漏报
  • 缺点: 应急响应慢,语义抽象依赖人,开发成本很高算法优化;

基于统计的机器学习WAF—异常模型 思路: 1.正常的请求总是相似;2.异常却各有各的不同 优点:识别未知的攻击、及攻击变形 面临问题: 准确率 应用变更

WeiyiGeek.
WeiyiGeek.

WeiyiGeek.

基于统计的机器学习WAF—异常模型&威胁模型 思路:在异常数据的基础上,注入一些领域知识,从而构成一个分类器,从异常中剥离出攻击 优点:准确率相对单独异常模型,提升了许多。 问题:模型滞后性:领域知识注入导致。修复响应:出现漏报,在线上如何修复。

WeiyiGeek.
WeiyiGeek.

WeiyiGeek.

基于统计的机器学习WAF(个人总结) 线上化困难:•准确率 •应用变更 WAF运营手段:•WAF安全水位 •WAF瓶颈 •payload的变化

基于深度学习构建WAF 思路:用深度学习的模型代替语义检测中的词法分析、语法分析。

代码语言:javascript
复制
       攻击语义的深度学习网络
用户输入 -> 深度学习的攻击语义检测模型

攻击语义的深度学习网络? 为什么深度学习、RNN: • 深度学习可通过学习一种深层非线性网络结构,实现攻击语义的逼近。 • RNN能够使信息持续保存,根据已有知识进行思考,更容易学习到攻击语义

WeiyiGeek.
WeiyiGeek.

WeiyiGeek.

Web WAF
  • 360WebScan
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-10-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • WAF与正则表达式
  • Web WAF
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档