【WAF 技术革命】当正则匹配遇见语义黑洞:雷池waf如何用「语言思维」重构网络防御?

位流程风
• 阅读 4

传统 WAF 的弊端

传统 WAF 通常使用正则表达式的形式, 以关键字定义攻击特征, 拿知名的 modsecurity 引擎来看, 这个世界上 80% 的 WAF 都是由它来驱动的, 但是它通常有一些什么规则, 让我们来剖析一下 ● union[\w\s]?select, 这条规则代表流量中只要包含 union 和 select 这两个单词就会被认为是 SQL 注入 攻击 ● \balert\s(, 这条规则代表流量中只要包含 alert 单词, 并且它的后面有一个左括号 ( 就会被认为是 XSS 攻击 真正的攻击者是具有对抗性的, 他们可以轻松逃避这些关键字, 从而绕过 WAF 的防护, 以上面的规则为例, 来看他们的漏报例子 ● union /**/ select, 在 union 和 select 中间插入了注释字符, 破坏了关键字特征, 因此攻击无法被发现 ● window'\x61lert', 用 \x61 代替了字母 a, 破坏了关键字特征, 因此攻击无法被发现 通过以上的例子, 我们可以得出结论, 传统的基于正则表达式的 WAF 无法真正防住攻击, 总会被黑客绕过 不仅如此, 正则表达式还会造成大量的误报, 导致真正的网站用户受到牵连, 无法正常使用业务, 还是以上面的规则为例, 来看他们的误报例子 ● The union select members from each department to form a committee., 他命中了上面的规则, 会被误认为是 SQL 注入 攻击而拦截, 实际上他只是一个简单的英文句子 ● Her down on the alert(for the man) and walked into a world of rivers., 他命中了上面的规则, 会被误认为是 XSS 攻击而拦截, 实际上他只是一个简单的英文句子 这里给大家分享两篇课外读物, 看看来自世界黑帽大会 Black Hat 的大神是如何自动化绕过基于正则表达式的 WAF 防护的: ● AutoSpear : Towards Automatically Bypassing and Inspecting Web Application Firewalls ● Web Application Firewalls: Attacking detection logic mechanisms

语义分析的原理

语义分析算法是雷池 WAF 的核心能力, 他不再使用简单的攻击特征去匹配流量, 而是去真正理解流量中的用户输入, 深层分析潜在的攻击行为. 以 SQL 注入为例, 攻击者如需完成 SQL 注入攻击, 需要满足两个条件 ● 流量中存在 SQL 语句, 且必须是完全符合语法的 SQL 语句片段 ● union select xxx from xxx where 是符合语法的 SQL 语句片段 ● union select xxx from xxx xxx xxx xxx xxx where 则不是符合语法的 SQL 语句片段 ● 1 + 1 = 2 是符合语法的 SQL 语句片段 ● 1 + 1 is 2 则不是符合语法的 SQL 语句片段 ● SQL 语句必然是存在恶意行为的, 而不是没什么用的语句 ● union select xxx from xxx where 存在可能的恶意行为 ● 1 + 1 = 2 没什么实际意义 雷池会根据 SQL 注入攻击的本质进行攻击检测, 类似下方流程

  1. 解析 HTTP 流量, 寻找可能存在输入参数的位置
  2. 对参数进行深层递归解码, 欢迎最原始的用户输入
  3. 检测用户输入是不是符合 SQL 语法
  4. 检测 SQL 语法的可能意图
  5. 根据实际意图进行恶意打分, 并决策是否拦截 雷池内置涵盖常用编程语言的编译器,通过对 HTTP 的载荷内容进行深度解码后,按照其语言类型匹配相应语法编译器,进而匹配威胁模型得到威胁评级,阻断或允许访问请求。

    为什么语义分析更强

    计算机专业的同学都学过 编译原理, 在编译原理中提到的 Chomsky 文法体系, 他将计算机世界的形式语言分为四个类型 ● 0 型文法(无限制文法), 可用图灵机识别 ● 1 型文法(上下文有关文法), 可用线性有界自动机识别 ● 2 型文法(上下文无关文法), 可用下推自动机识别 ● 3 型文法(正则文法), 可用有限状态自动机识别 这 4 种文法的表达能力从 0 到 3 依次变弱, 我们日常使用的 SQL, HTML, JAVASCRIPT 等编程语言通常是 2 型文法(甚至包含一部分 1 型文法的能力), 而正则表达式实际上对应的就是表达能力最弱的 3 型文法. 正则表达式的表达能力到底有多弱呢, 一个经典的例子是 正则表达式无法计数, 你甚至无法用正则表达式识别一个合法的括号配对字符串 用表达能力如此之弱的 3 型文法去匹配变化自如的攻击 payload 必然是不可能, 究其原因, 就是由于基于规则匹配的攻击识别方法存在先天不足导致的, 从文法表达能力比较,3 型文法包含在 2 型文法之内,基于正则的规则描述无法完全覆盖基于程序语言的攻击 Payload,这也是基于规则匹配识别攻击的 WAF 防护效果低于预期的根本原因。 因此, 语义分析与正则特征规则匹配型威胁检测方式相比,具有准确率高、误报率低的特点。
点赞
收藏
评论区
推荐文章
李志宽 李志宽
3年前
搞安全开发都是用什么编程语言?
很多小伙伴都在微信上问我:搞安全开发,到底开发个啥,都是用什么编程语言?今天就来详细说说这个话题,我打算从安全公司研发的产品这个角度来切入,看看都有哪些产品,以及都用到哪些语言。安全公司的产品研发,主要是下面这些东西,下面分别来说一下。WAF(Web网站应用防火墙)数据库网关防火墙、IDS、IPSNTA(网络流量分析)SIEM(安全事件分析
Stella981 Stella981
3年前
Nginx 配置支持 WAF
WAF(WebApplicationFirewall),中文名叫做“Web应用防火墙”WAF的定义是这样的:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品,通过从上面对WAF的定义中,我们可以很清晰地了解到:WAF是一种工作在应用层的、通过特定的安全策略来专门为Web应用提供安全防护的产品。
Stella981 Stella981
3年前
Bypass ngx_lua_waf SQL注入防御(多姿势)
0x00前言ngx\_lua\_waf是一款基于ngx\_lua的web应用防火墙,使用简单,高性能、轻量级。默认防御规则在wafconf目录中,摘录几条核心的SQL注入防御规则:select.(from|limit)(?:(union(.?)select))(?:from\Winformation_schema\W)这边
亚马逊云科技中国区上线Web应用程序防火墙 WAF
利用WAF为Web应用提供防护,在这里,我们以Naxsi为例来演示下如何利用WAF来为其后端的Web应用提供安全防护。Naxsi是一个开放源代码、高效、低维护规则的Nginxweb应用防火墙模块。Naxsi的主要目标是帮助人们加固他们的web应用程序,以抵御SQL注入、跨站脚本、跨域伪造请求、本地和远程文件包含漏洞。(WebApplicationFir
位流程风 位流程风
1个月前
雷池社区版高可用部署实战教程
想象一下,互联网就是一片汪洋大海,网站是船,用户是水手,而恶意攻击者就是海上的“海盗”。而雷池WAF就是你船上的“护航舰队”,时刻防御各种海盗袭击,包括SQL注入、跨站脚本攻击(XSS)、以及你可能没听过的“缓冲区溢出攻击”。WAF为什么需要高可用性即便你
位流程风 位流程风
1星期前
你,好奇吗?被雷池情报库拉黑的 IP 都在干什么?
在使用雷池的时候,经常会遇到源IP被恶意IP情报库拉黑的情况,如下图什么样的IP会进入长亭恶意IP情报库长亭恶意IP库是由超过20万雷池社区用户共创组成的IP情报网。安装雷池WAF后若启用IP情报共享计划,所有的攻击IP会回传至长亭IP情报收集系统这里仅会
位流程风 位流程风
1星期前
个人开发者的安全之选:雷池WAF与腾讯云EdgeOne/阿里云ESA集成
随着网络安全风险持续上升,Web应用防火墙已成为网站安全的基础组件。对个人开发者而言,开源的雷池WAF能提供企业级的安全防护,但单纯使用WAF面临几个显著挑战:1.DDoS防护能力有限:源站防护无法有效应对大流量攻击2.性能瓶颈:所有流量直接打到WAF宿主
安全可信 | 强墙出击!天翼云Web应用防火墙(原生版)硬核亮相!
12月9日,由中国信息通信研究院主办的“墙墙联合——云上防火墙技术沙龙”在线上顺利举行,研发专家吴雷分享了新标准、新需求下云Web应用防火墙(云WAF)的发展方向,并介绍了天翼云Web应用防火墙(原生版)的功能及特性。会上,信通院云WAF评估结果发布,天翼
位流程风 位流程风
1个月前
Web 应用防护利器!SafeLine 雷池深度解析​
在网络安全威胁日益严峻的当下,Web应用面临着各种攻击风险,如何为Web服务筑牢安全防线成为开发者和企业关注的焦点。今天给大家推荐一款超实用的Web应用防火墙(WAF)——SafeLine,中文名“雷池”,它凭借简单易用的操作和卓越的防护效果,为Web服务打造坚实的安全壁垒。​
位流程风 位流程风
1个月前
雷池WAF磁盘空间告急?手把手教你轻松清理⭐
一、为什么磁盘会满?——了解空间去哪了雷池WAF在保护你的网站时,会持续记录各种安全数据。主要占用空间的有两大"仓库":1.防护日志仓库(数据库)●存放内容:攻击记录、人机验证日志、访问统计等●存储位置:默认由PostgreSQL数据库管理,路径为/dat