当前位置: 首页 > 科技观察

斗五渣?四大云WAF现场测试差点失败

时间:2023-03-18 11:39:31 科技观察

许多企业在保护Web应用程序时默认将Web应用程序防火墙(WAF)作为最佳实践或合规性要求。WAF是一种特定的防火墙,旨在识别和阻止对Web应用程序流量的攻击。希望防火墙能够阻止命令注入攻击、跨站点脚本攻击、协议违规和其他针对Web应用程序的常见攻击。随着企业数字化转型和“平安云”运动的开展,以及当前疫情引发的网络安全焦虑加剧,越来越多的企业开始考虑云WAF防火墙产品,采用预配置的WAF在云中保护Web应用程序。除了专业的WAF厂商,目前各大云提供商都通过收购或研发的方式丰富了自己的WAF产品,并与服务商自身的负载均衡器很好的结合。与传统硬件WAF相比,云WAF除了巨大的价格优势外,还有以下突出优势:部署简单、维护成本低。这也是云WAF最有价值和流行的一点,不需要安装任何软件,也不需要部署任何硬件设备,只需要修改DNS,就可以将网站部署在云WAF的保护范围内。用户无需更新,云WAF的保护规则都在云端。当新的漏洞爆发时,云端负责更新和维护规则。用户无需担心因疏忽而被新型漏洞攻击。它可以充当CDN。云WAF在提供保护的同时,还具备CDN的功能。它还可以在进行保护的同时提高网站访问速度。CDN通过跨运营商的多线智能分析和调度,将静态资源动态加载到全国。当用户访问某个资源时,会被引导到最近的云节点,以提高访问速度。然而,目前国际市场上的一些具有代表性的云WAF产品(本文主要讨论云计算服务商提供的云WAF),是否“能用”?根据Gartner的研究报告,许多企业安全人员对云WAF的关键消息也是褒贬不一,一位软件工程师认为AWSWebApplicationFirewall是“最可靠的软件”。但另一位专家表示,云WAF存在“需要进一步解决的问题”。至于Azure,评论似乎比较混杂。根据一位架构师的说法,“一个专用的WAF设备作为备份仍然存在”,尽管许多人认为它“易于实施和使用”。由于目前市场上很少有第三方机构对云计算服务商的云WAF产品进行实战测试,客户对云WAF性能和功能的认知,有时可能只是一种对云安全的“蜜汁信心”.云WAF能否很好的阻隔常见的Web应用攻击?近日,网络安全团队Fraktal针对AWSWAF(亚马逊)、AWSWAF(飞塔)、AZUREWAF(CRS3.1)、梭子鱼(Barracuda)WAF-as-a-service对四家常见云服务商的云进行了实战测试WAF产品(服务),结果有些出人意料。测试内容如下:测试设置我们在AWS和Azure中搭建了一个测试环境来测试云WAF。我们的设置包括以下内容:攻击者的主机在特定目标Web主机上执行数千个脚本测试用例。我们将有效载荷注入到目标主机的HTTPGET和POST请求中。在云容器平台上,目标Web主机运行容器化的自定义Web服务器——AWSElasticContainerServiceECS或AzureContainerInstanceACI。Web服务器向所有传入的HTTP请求返回HTTP响应代码“200OK”。目标Web主机前面有一个具有WAF功能的云负载均衡器-AWSElasticLoadBalancerELB或AzureWebApplicationGateway。从AzureMarketplace配置的梭子鱼WAF即服务(WaaS),将流量定向到AzureACI上的目标Web主机。测试团队选择AWS和Azure内部解决方案的云托管商业WAF产品版本进行对比测试。四种产品采用的规则/服务如下:AzureApplicationGatewayWAF使用来自开放Web应用程序安全项目(OWASP)的CRS3.1规则BarracudaWAF即服务(WaaS)使用Barracuda托管规则从AzureMarketplace配置AWSWAFusingAmazon-managedrulesAWSWAFusingFortinet-managedrules在Azure云中,整体测试架构如下图所示,AWS云上的测试环境使用完全相同的设置。用于测试连接到Azure和AWS云负载均衡器的WAF的高级测试架构测试梭子鱼WAF即服务需要备用设置,测试团队在Azure云上配置了服务,对上述设置进行了最小的更改。截至2月19日,用于在Azure中测试梭子鱼WAF即服务的高级架构测试团队使用上述云服务上可用的托管默认值进行了测试。为了准确模拟用户使用这些服务的最常见方式,测试人员没有删除或添加任何可能影响检测或阻止攻击能力的规则或定义。对于AWS托管规则,用户必须选择一个规则组,因为可以同时启用的规则组数量有限,测试人员选择了一个最能覆盖OWASP十大威胁的规则组合,提供最好的保护测试用例。精选规则组AWS-AWSManagedRulesSQLiRuleSetAWS-AWSManagedRulesLinuxRuleSetAWS-AWSManagedRulesKnownBadInputsRuleSetAWS-AWSManagedRulesCommonRuleSetAWS-AWSManagedRulesPHPRuleSetAWS-AWSManagedRulesAdminProtectionRuleSet测试用例为了测试WAF,测试团队选择了几种现实中常见的攻击和绕过方法,针对自定义Web服务器发起这些通过HTTP进行的攻击,目标服务器将记录那些通过WAF的请求。测试中使用的攻击方法如下(词条解释引用自owasp.org):命令执行:通过向应用程序注入命令来破坏系统。服务器端包含注入(SSI):SSI是Web应用程序上的一条指令,用于为HTML页面提供动态内容。服务器端包含攻击允许通过将脚本注入HTML页面或远程执行任意代码来利用Web应用程序。SQL注入:将SQL查询注入到从客户端到应用程序的输入数据中。路径遍历:路径遍历攻击(也称为目录遍历)旨在访问存储在Web根文件夹之外的文件和目录。格式错误的XML文档:格式错误的文档可用于消耗资源或注入恶意命令。跨站点脚本(XSS):跨站点脚本(XSS)攻击是一种注入攻击,其中恶意脚本通过Web浏览器从恶意网站注入到原本良性且受信任的网站中。这组测试方法代表了针对网站的典型攻击。测试用例的目的不涉及业务逻辑弱点,以及其他可以被恶意利用的应用程序逻辑。检测结果令人震惊。除了AzureWAF,其他几个云WAF的性能都是灾难性的。四大云WAF的测试结果(百分比表示拦截攻击的比例,数字越高越好)肉眼可见,使用CRS3.1规则的AzureWAF的攻击防护成功率要高很多远超其他三款云WAF产品,也是整体测试用例集中唯一能够可靠执行的云WAF服务。测试报告还有一个有趣的发现,就是是否使用URL字符编码对WAF的安全性能影响很大!例如,Barracuda阻止了我们所有未编码的SSI测试用例,但在编码时只阻止了一半。因此,从攻击者的角度来看,尝试不同的编码可能是逃避WAF保护的有效方法。几个事实AWS托管的WAF在本次测试中最为“宽松”,允许以下有效负载进行攻击:此外,托管在AWS中的FortinetWAF和Azure中的梭子鱼WAF-as-a-service都允许这两个示例。查看负载和拒绝的响应,很难得出有关WAF内部工作的许多结论。有时,WAF的各种行为看起来非常混乱和有趣,例如:AWS托管的WAF似乎以完全不同的方式处理POST和GET请求。例如,此请求在GET请求中被阻止,但在POST请求中被允许:%2e%2e//etc/passwd。AWS托管WAF能够阻止负载ls-l/var/www/*,但允许负载&&ls-l/var/www/*、ls-l/var/www/*等。BarracudaWAF-as-a-Service在它是有效负载中的唯一字符时坚决阻止字符',但同时允许诸如eval('sleep5');之类的有效负载。和'whoami。结论结果表明,云WAF服务本质上是不平等的,大多数IaaS云服务提供商的WAF服务远远落后于第三方解决方案。在AWS、Azure和Barracuda测试中,AzureWAF是明显的赢家,也是唯一运行良好的。而AWS和Barracuda的产品对一些最常见的攻击类型“视而不见”。企业如果要在云端构建应用,需要关注“可选”的安全服务是否能够满足安全需求。虽然购买云WAF可能是合规要求,但用户应该清醒地认识到,云计算厂商的“免费午餐”,有时安全性能可能与你想象的不一样。声明本次云WAF测试由Fraktal网络安全团队的Tuomo、Tommi和Marko完成。测试结果仅基于特定的测试环境和配置。除了在特定测试环境和用例中比较云WAF服务的相对性能外,这些测试结果无意在任何其他上下文中进行解释或作为用户选择产品的依据。【本文为专栏作者“安安牛”原创文章,转载请通过安安牛(微信公众号id:gooann-sectv)获得授权】点此查看作者更多好文