我们在即将发布的《2018年应用交付现状》报告中指出,Web应用防火墙(WAF)的使用率多年来一直稳步上升。这是一个积极趋势,因为如今应用是访问客户和企业数据的门户,仅靠传统的网络层访问控制方法已不足以提供保护。越来越多的恶意行为者正将身份和应用本身作为攻击目标,企图窃取这些宝贵的数字资产。
那么,WAF究竟如何缓解这些像花园里的杂草一样不断涌现的漏洞?WAF主要通过三种方法检测和防范Web攻击:拒绝或允许请求、检查并拒绝,以及使用签名。
下面逐一了解这些方法。
拒绝或允许请求
拒绝/允许请求方法与网络防火墙采用的传统入口模型非常相似。系统会根据现有信息拒绝或允许请求。这些信息可能很简单,例如IP地址;也可能更复杂,并且是HTTP特有的信息,例如OPTIONS或METHODS。
- 拒绝/允许列表
如果已知恶意行为者的请求来自特定IP地址或IP地址范围,请将其阻止。如果已知某个应用仅获准接收来自特定IP地址或IP地址范围的请求,则只允许这些请求。这是最简单的保护方法,依赖一组相对固定的信息,即请求应来自或不应来自哪些IP地址或地址范围。
您可能会想,为什么不直接使用网络防火墙来实现呢?毕竟,这正是网络防火墙的用途。在本地环境中,这种方法非常有效。但如果需要保护公有云中的应用,网络防火墙可能并不适用。根据F5《2018年应用交付现状》调查,59%的受访者已投资使用2至6家不同的云提供商。如果您也在其中,就不能指望各提供商采用相同的网络防火墙策略。虽然可以在多个云中实施相同的规则,但通过WAF执行规则,可以在多个环境中使用同一WAF的同一策略。保持一致性是实现安全成效和规模化的关键。 - 限制选项
HTTP依靠一组标头来告知应用平台(及应用)用户希望执行的操作。例如,HTTP方法可用于GET、PUT、POST和DELETE资源。OPTIONS字段也有一组受RFC限制的值,WAF可以轻松控制这些值。Optionsbleed等漏洞会利用这些字段。为防止此类漏洞被利用,可以使用WAF将可能的值限制为应用正常运行所需允许的值。在某些情况下,WAF默认会限制这些值。例如,BIG-IP ASM(F5 WAF)默认完全不允许使用HTTP OPTIONS方法。
签名
签名是许多不同安全解决方案普遍采用的另一种防护方法。防病毒和反恶意软件服务依靠签名快速扫描病毒和恶意软件的迹象,并将其标记出来。IPS/IDS和WAF也高度依赖这种方法。签名分为两类:用户定义的签名和供应商管理的签名。
- 供应商管理
供应商管理的签名通常保存在由供应商自动维护的“数据库”中。当新的漏洞可通过唯一的数字签名识别时,供应商会相应更新数据库。WAF会根据该数据库扫描传入的请求;如果发现请求与数据库中的签名匹配,则会采取相应措施。签名可以是纯文本,但更常见的是由难以辨识的字符串组成的复杂组合,用于表示可触发远程执行功能的恶意代码,或以其他方式破坏应用平台并获取访问权限或造成拒绝服务。 - 用户定义
用户定义的签名支持运维人员快速向数据库添加签名。此功能对于快速响应新漏洞(很多情况下为零日漏洞),以及缓解供应商尚未发布托管签名的漏洞至关重要。
检查
最后,还需要加入检查功能,以确保对请求(及响应)的全面控制。通过检查请求,WAF可以将请求中的信息与已知的正常或恶意字符串和值进行比较,从而判断请求是恶意请求还是合法请求。对于HTTP应用(即当今互联网上的大多数应用),这是WAF应提供的关键功能。如果WAF不提供可编程检查,建议重新考虑这一选择。由于HTTP基于文本且具有可扩展性,几乎不可能提供一份全面的“复选框式”选项和方法清单来检查请求。只有极少数HTTP标头对可用选项有所限制,因此很难限定其中可以或不可以填入哪些内容。这意味着通常需要通过检查来发现嵌入标头或有效负载本身的恶意代码。检查有两种方式:检查已知标头和有效负载。
- 已知标头
每个HTTP请求都会携带一组明确定义的标头。Host、User-Agent、Content-Type等标头几乎无处不在。每个标头本质上都只是一个文本字符串,但其组合形式多种多样,因此很难将值列入允许列表,而必须逐一扫描,检查是否存在疑似恶意值。通常,WAF可以快速解析HTTP标头并对其进行检查。这些标头位于每个请求的开头,并且已知可被用于对应用平台发起多种攻击。较为人熟知的漏洞包括:ApacheKiller、Optionsbleed和Apache Struts。 - 有效载荷检查
有效载荷检查顾名思义,就是从第一个字节到最后一个字节检查整个有效载荷,查找表明有人试图利用漏洞的已知字母数字组合。通过有效载荷检查,运维人员可以检查自定义HTTP标头和请求正文,查找恶意活动的特定指标。这要求WAF先保存请求的全部内容。之所以需要这样做,是因为数据包可容纳的数据量有限。如果恶意数据跨越两个数据包,仅逐包检查的服务可能无法发现。通过检查整个有效载荷,WAF可以找出恶意数据,无论其出现在哪里,并阻止其到达目标。
WAF不仅可以通过缓解漏洞来保护应用,还能发挥更多作用。许多WAF还具备机器人检测、速率限制和DDoS防护等功能。但WAF的核心用途仍是通过缓解漏洞来保护应用。虽然人们通常会提到SQLi、XSS和CSRF,但如今这些几乎已是“老生常谈”。恶意行为者已不再局限于利用明显的应用漏洞,而是开始将目标转向平台,因为平台涉及的潜在受害者范围要大得多,更便于其从中牟利。平台漏洞,即HTTP及其框架中的漏洞,正日益成为安全事件的根源,而企业级WAF提供的防护有助于应对此类漏洞。
WAF采用传统的拒绝/允许机制和基于特征码的扫描,并能够检查完整的请求(及响应),从而提供企业当前所需的防护,帮助保护企业及其客户。
关于作者

Lori MacVittie是F5首席技术官办公室的杰出工程师兼首席技术布道师,在应用交付、自动化战略和基础设施领域拥有深厚的专业知识。无论是为AI智能体定义防护机制、剖析脆弱的多云架构,还是探索可扩展系统的极限,她都善于化繁为简。她在应用开发、IT架构以及网络和系统运维领域拥有30多年的行业经验。加入F5之前,她曾担任技术编辑,并因出色表现获得奖项。 MacVittie拥有计算机科学硕士学位,著述颇丰,出版作品涵盖安全、云和企业架构领域。她还热衷于桌面游戏和电子游戏,并且对奶酪有着毫不掩饰的鲜明见解。
Lori Mac Vittie 的更多博客文章相关博客文章
Thingbot正转变为攻击平台
Lori MacVittie重点介绍了F5 Labs对2018年1月至6月全球物联网设备攻击的研究,并指出了其中令人警醒的影响。物联网设备不仅持续遭到利用,还被转变为攻击平台,这意味着攻击者可以更充分地利用这个必然增长的市场。
借助F5全新Quick Start,在AWS上快速开展业务
在AWS re:Invent开幕前,我们很高兴与大家分享F5与AWS之间全新的Quick Start集成。F5的Tom Atkins将介绍该服务如何启动、配置和运行在AWS上部署工作负载所需的计算、网络、存储及其他AWS服务。