戰(zhàn)五渣?四大云WAF實(shí)戰(zhàn)測試險(xiǎn)遭團(tuán)滅
許多企業(yè)將Web應(yīng)用程序防火墻(WAF)默認(rèn)為保護(hù)Web應(yīng)用程序時的優(yōu)秀實(shí)踐或合規(guī)性要求。WAF是一種特定的防火墻,旨在識別和阻止Web應(yīng)用程序流量的攻擊。期望防火墻將阻止命令注入攻擊、跨站點(diǎn)腳本攻擊、協(xié)議違規(guī)以及其他針對Web應(yīng)用程序的常見攻擊。
隨著企業(yè)數(shù)字轉(zhuǎn)型和“安全上云”運(yùn)動的開展,以及當(dāng)下疫情加重的Web安全焦慮,越來越多的企業(yè)開始考慮云WAF防火墻產(chǎn)品,使用在云中預(yù)配置的WAF對Web應(yīng)用進(jìn)行保護(hù)。除了專業(yè)WAF廠商外,目前主要的云供應(yīng)商都通過收購或者研發(fā)豐富了自己的WAF產(chǎn)品,它們與服務(wù)商自己的負(fù)載均衡器很好地集成在一起。
與傳統(tǒng)硬件WAF相比,除了巨大的價格優(yōu)勢外,云WAF還有以下突出優(yōu)點(diǎn):
部署簡單,維護(hù)成本低
這也是云WAF最有價值和受用戶喜愛的一點(diǎn),無需安裝任何軟件或者部署任何硬件設(shè)備,只需修改DNS即可將網(wǎng)站部署到云WAF的防護(hù)范圍之內(nèi)。
用戶無需更新
云WAF的防護(hù)規(guī)則都處于云端,新漏洞爆發(fā)時,由云端負(fù)責(zé)規(guī)則的更新和維護(hù),用戶無需擔(dān)心因?yàn)槭韬鰧?dǎo)致受到新型的漏洞攻擊。
可充當(dāng)CDN
云WAF在提供防護(hù)功能的同時,還同時具有CDN的功能,在進(jìn)行防護(hù)的同時還可以提高網(wǎng)站訪問的速率,CDN通過跨運(yùn)營商的多線智能解析調(diào)度將靜態(tài)資源動態(tài)負(fù)載到全國的云節(jié)點(diǎn),用戶訪問某個資源時會被引導(dǎo)至最近的云端節(jié)點(diǎn)從而提高訪問速度。
但是,目前國際市場上一些有代表性的云WAF產(chǎn)品(本文主要討論云計(jì)算服務(wù)商提供的云WAF),到底“能不能打”?
在Gartner的調(diào)研報(bào)告下面,很多企業(yè)安全人員的留言對云WAF也是褒貶不一,一位軟件工程師認(rèn)為AWS Web Application Firewall是“最可靠的軟件”。但另一位專家稱云WAF有“需要進(jìn)一步解決的問題”。至于Azure,評論似乎更加復(fù)雜。一位架構(gòu)師認(rèn)為,“仍準(zhǔn)備了專用WAF設(shè)備作為備份”,盡管許多人認(rèn)為它“易于實(shí)施和使用”。
由于目前市場上很少有第三方機(jī)構(gòu)對云計(jì)算服務(wù)商的云WAF產(chǎn)品進(jìn)行實(shí)戰(zhàn)檢測,因此客戶對云WAF性能和功能的認(rèn)知,有時候可能只是一種對云安全的“蜜汁自信”。云WAF是否可以很好地阻止常見的Web應(yīng)用程序攻擊?
近日,網(wǎng)絡(luò)安全團(tuán)隊(duì)Fraktal針對AWS WAF (Amazon)、AWS WAF (Fortinet)、AZURE WAF (CRS 3.1)、BARRACUDA(梭子魚)WAF-as-a-service四款常見的云服務(wù)商的云WAF產(chǎn)品(服務(wù))做了一個實(shí)戰(zhàn)測試,結(jié)果有些令人吃驚。測試內(nèi)容如下:
測試設(shè)置
我們在AWS和Azure中搭建了測試環(huán)境,以測試云WAF。我們的設(shè)置包括以下內(nèi)容:
- 攻擊者的主機(jī)在特定的目標(biāo)Web主機(jī)上執(zhí)行數(shù)千個腳本化的測試用例。我們將有效負(fù)載注入了發(fā)往目標(biāo)主機(jī)的HTTP GET和POST請求。
- 在云容器平臺上,目標(biāo)Web主機(jī)運(yùn)行容器化自定義Web服務(wù)器——AWS Elastic Container Service ECS或Azure容器實(shí)例ACI。該Web服務(wù)器對所有傳入HTTP請求反饋HTTP響應(yīng)代碼“200 OK”。
- 目標(biāo)Web主機(jī)前置一個具備WAF功能的云負(fù)載平衡器——AWS Elastic Load Balancer ELB或Azure Web Application Gateway。
- 從Azure Marketplace配置的梭子魚WAF即服務(wù)(WaaS),將流量定向到Azure ACI上的目標(biāo)Web主機(jī)。
測試團(tuán)隊(duì)為AWS和Azure內(nèi)部解決方案挑選了云托管版本的商業(yè)WAF產(chǎn)品進(jìn)行對比測試。四款產(chǎn)品采用的規(guī)則/服務(wù)如下:
- Azure應(yīng)用程序網(wǎng)關(guān)WAF,使用來自開放式Web應(yīng)用程序安全項(xiàng)目(OWASP)的CRS 3.1規(guī)則
- 使用梭子魚托管規(guī)則從Azure市場配置的梭子魚WAF即服務(wù)(WaaS)
- 使用Amazon托管規(guī)則的AWS WAF
- 使用Fortinet托管規(guī)則的AWS WAF
在Azure云中,總體測試體系結(jié)構(gòu)如下所示,在AWS云上的測試環(huán)境采用了完全相同的設(shè)置。
用于測試連接到Azure和AWS云負(fù)載平衡器的WAF的高級測試體系結(jié)構(gòu)
測試梭子魚WAF即服務(wù)需要采用備用設(shè)置,測試團(tuán)隊(duì)在Azure云上配置了服務(wù),對前述設(shè)置進(jìn)行了最小的更改。
用于在Azure中測試梭子魚WAF即服務(wù)的高級體系結(jié)構(gòu)
測試團(tuán)隊(duì)使用2月19日當(dāng)日上述云服務(wù)上可用的托管默認(rèn)值進(jìn)行了測試。為了準(zhǔn)確模擬用戶使用這些服務(wù)的最常見方式,測試者沒有刪除或添加任何可能影響檢測或阻止攻擊能力的規(guī)則或定義。對于AWS托管規(guī)則,用戶必須選擇規(guī)則組,因?yàn)榭梢酝瑫r啟用的規(guī)則組數(shù)量受到限制,測試者選擇了一種可以最好地覆蓋OWASP十大威脅的規(guī)則組合,為測試用例提供最佳保護(hù)。
所選規(guī)則組
- AWS-AWSManagedRulesSQLiRuleSet
- AWS-AWSManagedRulesLinuxRuleSet
- AWS-AWSManagedRulesKnownBadInputsRuleSet
- AWS-AWSManagedRulesCommonRuleSet
- AWS-AWSManagedRulesPHPRuleSet
- AWS-AWSManagedRulesAdminProtectionRuleSet
測試用例
為了測試WAF,測試團(tuán)隊(duì)挑選了幾種現(xiàn)實(shí)中常見的幾種攻擊和繞過方法,針對自定義Web服務(wù)器通過HTTP發(fā)起這些攻擊,目標(biāo)服務(wù)器將記錄那些通過WAF的請求。
測試使用的攻擊方法如下(詞條解釋引用自owasp.org):
- 命令執(zhí)行:通過向應(yīng)用程序中注入命令破壞系統(tǒng)。
- 服務(wù)器端包含注入(SSI):SSI是Web應(yīng)用程序上存在的指令,用于向HTML頁面提供動態(tài)內(nèi)容。服務(wù)器端包含攻擊允許通過將腳本注入HTML頁面或遠(yuǎn)程執(zhí)行任意代碼來利用Web應(yīng)用程序。
- SQL注入:向客戶端到應(yīng)用程序的輸入數(shù)據(jù)中注入SQL查詢。
- 路徑遍歷:路徑遍歷攻擊(也稱為目錄遍歷)旨在訪問存儲在Web根文件夾外部的文件和目錄。
- 格式錯誤的XML文檔:格式錯誤的文檔可用于消耗資源或注入惡意命令。
- 跨站點(diǎn)腳本(XSS):跨站點(diǎn)腳本(XSS)攻擊是一種注入攻擊,其中,惡意腳本通過網(wǎng)絡(luò)瀏覽器從惡意網(wǎng)站注入到原本良性和可信任的網(wǎng)站中。
這組測試方法代表了針對網(wǎng)站的典型攻擊。測試用例的目的不涉及業(yè)務(wù)邏輯弱點(diǎn),以及其他可被惡意利用的應(yīng)用邏輯。
檢測結(jié)果
結(jié)果是令人震驚的,除了Azure WAF,其他幾款云WAF的表現(xiàn)都是災(zāi)難性的。
四大云WAF測試結(jié)果數(shù)據(jù)(百分比表示被阻止的攻擊比重,數(shù)字越高越好)
肉眼可見,使用CRS 3.1規(guī)則的Azure WAF的攻擊防護(hù)成功率遠(yuǎn)高于其他三款云WAF產(chǎn)品,也是在整個測試用例集中能可靠執(zhí)行的唯一云WAF服務(wù)。
測試報(bào)告的另外一個有趣發(fā)現(xiàn)是,是否使用URL字符編碼,對WAF的安全性能表現(xiàn)影響極大!例如,梭子魚阻止了我們所有未編碼的SSI測試用例,但在編碼時則僅能阻止一半。因此,從攻擊者的角度來看,嘗試使用不同的編碼可能是逃避WAF保護(hù)的有效方法。
幾個小事實(shí)
AWS托管的WAF在本次測試中的表現(xiàn)最為“寬松”,它會放行以下有效載荷進(jìn)行攻擊:
此外,AWS中托管的Fortinet WAF和Azure中的梭子魚WAF即服務(wù)也都允許這兩個示例。
從有效載荷和拒絕的響應(yīng)來看,很難對WAF的內(nèi)部運(yùn)作得出許多結(jié)論。有時,WAF的各種行為看上去非?;靵y和搞笑,例如:
- AWS托管WAF對POST和GET請求的處理方式似乎完全不同。例如這個請求在GET請求中被阻止,但在POST請求中被允許:%2e%2e//etc/passwd。
- AWS托管WAF能夠阻止有效負(fù)載ls-l/var/www/*,但卻又允許有效負(fù)載&& ls-l/var/www/*,|ls-l/var/www/*依此類推。
- 梭子魚WAF即服務(wù)在該字符'是有效載荷的唯一字符時會堅(jiān)定地阻止該字符,但同時又允許這樣的有效載荷,例如eval('sleep 5');和'whoami。
結(jié)論
結(jié)果表明,云WAF服務(wù)生下來就是不平等的,而且大多數(shù)IaaS云服務(wù)商的WAF服務(wù)還遠(yuǎn)遠(yuǎn)趕不上第三方方案。接受測試的AWS、Azure和梭子魚中,Azure WAF無疑是贏家,并且是唯一運(yùn)行良好的服務(wù)。而AWS和梭子魚的產(chǎn)品,對一些最常見的攻擊類型都“睜一只眼閉一只眼”。
如果企業(yè)要在云中構(gòu)建應(yīng)用程序,則應(yīng)留意“選配”的安全服務(wù)是否能夠達(dá)到安全需求。雖然購買云WAF可能是一種合規(guī)需要,但用戶應(yīng)當(dāng)清醒地認(rèn)識到,云計(jì)算廠商的“免費(fèi)午餐”,有時候安全性能可能與您想象得不太一樣。
聲明
本項(xiàng)云WAF測試由Fraktal網(wǎng)絡(luò)安全團(tuán)隊(duì)的Tuomo、Tommi和Marko完成,其測試結(jié)果僅基于特定測試環(huán)境和配置,除了在特定測試環(huán)境和用例中比較云WAF服務(wù)的相對性能之外,這些測試結(jié)果無意在任何其他上下文應(yīng)用場景中進(jìn)行解釋或作為用戶選擇產(chǎn)品的依據(jù)。
【本文是51CTO專欄作者“安全牛”的原創(chuàng)文章,轉(zhuǎn)載請通過安全牛(微信公眾號id:gooann-sectv)獲取授權(quán)】