Cloudflare WAF
Bypass
Segurança
Pentest
Vulnerabilidades

WAF 仍然存在哪些问题:绕过技术以及如何缓解

WAF 检查签名——了解这一点的攻击者会利用 WAF 解释的内容与应用程序执行的内容之间的差异。

相信拥有 WAF 就等于拥有安全边界,这是技术团队能够承受的最昂贵的成本之一。 WAF 对请求的表示进行操作 - 接收字节,根据规则进行解释,确定模式是否与已知攻击匹配。问题在于WAF解释和应用程序解释之间存在差距。意识到这一差距的攻击者会利用已经存在十多年的技术来​​利用它,并且仍然有效,因为他们依赖的是 HTTP 协议中的模糊性,而不是产品中的特定缺陷。

双编码如何绕过有效负载检查

URL编码是一种合法的HTTP机制:0(单引号)可以表示为1。大多数 WAF 在应用规则之前解码此编码 - 正确的行为,因为应用程序也会对其进行解码。

双重编码会出现此问题。字符串2分两步解码:首先解码为3,然后解码为4。仅进行一轮解码的 WAF 会看到 5 并认为这是单引号的无害表示。应用程序在处理请求时,会进行自己的解码并得出攻击者想要引入的6。有效载荷完好无损地到达。

变体包括编码空格,如 7(制表符而不是空格,在许多 SQL 上下文中等效)以及某些正则表达式引擎未规范化的混合大写和小写编码。

Cloudflare 在执行规则之前应用请求规范化 - 取消多层编码的规范化。这减轻了大多数双重编码技术的影响,但其有效性取决于应用于每个检查字段的标准化的完整性。

HTTP 请求走私:当 WAF 和来源不一致时

HTTP/1.1 允许两种方式指示请求主体的大小:8 指定精确字节,9 分部分发送主体。当两个标头存在冲突值时,行为不是由协议定义的 - 它是由每个服务器的实现定义的。

优先考虑 10 的 WAF 和优先考虑 11 的源服务器对于请求的最终结果会存在分歧。控制此冲突的攻击者使 WAF 看到一个无害的请求,而服务器看到两个:第一个合法,第二个包含从未通过检查的恶意内容。多年来,HTTP 请求走私已经影响了多个商业 WAF,需要针对每个 WAF 进行特定修复。

Cloudflare 在将请求转发到源之前对其进行标准化。为了使攻击在 Cloudflare 架构上发挥作用,源服务器需要接收直接连接 - 这为我们带来了最重要且最少应用的缓解措施。

Cloudflare 真正无法保护的内容

业务逻辑是最清晰的情况。 WAF 没有其应用的上下文:它不知道快速传输 50,000 R$50,000 R$ 是可疑的,端点 12 只能通过角色 13 访问,或者 14 不应接受负值。从 WAF 的角度来看,IDOR 攻击、价格参数操纵和滥用 [身份验证 17] 流都是有效请求,因为它们确实如此。此保护属于应用程序。

零日是第二种情况。当发布关键 CVE 时,Cloudflare 需要时间来开发签名。此间隔可以是几小时或几天,在此期间,即使使用活动的托管规则集,应用程序也会暴露。 WAF 规则不会替代应用程序补丁。

最简单的绕过:直接访问源码

整个 Cloudflare WAF 保护模型取决于一个条件:流量必须经过代理才能被检查。仅 DNS 模式下的 DNS 记录(仪表板上的灰色云)不会通过代理。如果为应用程序提供服务的子域仅包含 DNS,则该流量根本不存在 WAF。

第二个条件是源IP。如果攻击者发现服务器的真实 IP,他们可以使用正确的 15 标头直接连接到端口 443,并完全绕过边缘。此 IP 可能已通过迁移前由 SecurityTrails 索引的历史 DNS、直接颁发给该 IP 的 TLS 证书的透明日志或服务器发送的电子邮件标头而暴露。

缓解措施是将源服务器配置为仅接受来自 16 中发布的 Cloudflare IP 范围的连接。仅接受这些范围的安全组或防火墙规则消除了与源的直接联系。对于那些想要完全消除互联网开放端口的人,Cloudflare Tunnel 可以在不暴露任何 IP 的情况下建立从服务器到边缘的出站连接。

需要传达的威胁模型

WAF 可有效对抗特定类别的攻击者:使用自动扫描工具、不调整有效负载并大规模寻找软目标的攻击者。针对漏洞扫描器、通用漏洞脚本以及在其发现的每个参数上测试 SQL 注入和 XSS 的机器人,配置良好的 WAF 无需手动操作即可阻止绝大多数尝试。

对于专门研究应用程序、映射端点并专门针对该堆栈调整有效负载的攻击者来说,保护是不同的。绕过技术是存在的,有些工作取决于规范化的状态和规则的特殊性,如果 IP 泄露,仍然可以直接访问源头。 WAF 赢得了时间,减少了自动化攻击面,并为正在尝试的内容增加了一层可见性,但它并不能取代业务级别的强身份验证、应用程序输入验证、依赖项修补和精细访问控制。

当团队中有人问“我们是否因为有 WAF 而受到保护?”时,诚实的技术答案是:受到什么保护?是的,针对自动扫描和通用攻击。针对有针对性的攻击、实施不当的业务逻辑以及暴露的源头,WAF 无法做到这一点。

另请阅读

  • [WAF 中的托管规则与自定义规则:何时编写自己的规则18
  • [Cloudflare WAF:托管保护实际上阻止了什么,什么通过了19
  • [DNS 代理与仅 DNS:有何变化以及每种模式何时有意义20
  • [DNSSEC 与 Cloudflare:它保护什么、不保护什么以及如何顺利激活21
  • 【日志模式下的WAF:如何在不阻塞合法流量的情况下逐步开启防护22
  • [WAF + 速率限制 + 机器人管理:边缘保护三重奏23