梭子魚Web應(yīng)用防火墻攻擊規(guī)則庫(kù)更新技術(shù)預(yù)覽
跨站腳本(XSS)攻擊可能會(huì)通過(guò)如下方式出現(xiàn):用戶輸入的數(shù)據(jù)包含了惡意代碼,而服務(wù)器沒有將這些輸入進(jìn)行安全過(guò)濾便直接返回給用戶瀏覽器,惡意代碼因此被瀏覽器執(zhí)行,攻擊者從而可能控制瀏覽器DOM。這些包含惡意代碼的輸入可能利用以下幾種形式實(shí)現(xiàn):script tags, Data URI references, onEvent references, iframes等。梭子魚Web應(yīng)用防火墻可以幫助阻斷跨站腳本(XSS)攻擊。
梭子魚Web應(yīng)用防火墻跨站腳本(XSS)規(guī)則集把跨站腳本(XSS)簽名劃分為不同類別,每個(gè)類別下包含所有可能的違規(guī)漏洞。其中一個(gè)類別針對(duì)基于事件屬性的跨站腳本(XSS)攻擊,涵蓋onmouseover、oninput、onformchange等事件類型,這些事件類型可以在OWASP上找到完整的事件處理程序列表。
然而不同瀏覽器對(duì)于服務(wù)器響應(yīng)內(nèi)的JavaScript腳本的識(shí)別可能有較大的差異。這也讓攻擊者因此采取許多模糊化的策略,例如在事件處理程序嵌入一些字符,比如嵌入回車鍵、空字符、換行符、編碼過(guò)的字符、多余的括號(hào)、注釋標(biāo)記等。這些嵌入的字符可以分隔輸入數(shù)據(jù),讓瀏覽器無(wú)法正確的識(shí)別腳本代碼,以實(shí)現(xiàn)繞開安全過(guò)濾器的行攔截,服務(wù)器給瀏覽器的響應(yīng)將仍然包含這些腳本代碼,最終將被瀏覽器執(zhí)行。
盡管不同平臺(tái)或版本的瀏覽器可能對(duì)腳本的識(shí)別有些差異,但是梭子魚對(duì)這些瀏覽器進(jìn)行了適配,可以進(jìn)行防護(hù),以應(yīng)對(duì)模糊攻擊策略。用戶可以在梭子魚WEB應(yīng)用防火墻的WEB管理頁(yè)面的‘高級(jí)設(shè)置’-‘默認(rèn)數(shù)據(jù)類型’頁(yè)面查看到部分梭子魚定義的特征類型,數(shù)據(jù)類型正則表達(dá)式里‘\xNN’代表十六進(jìn)制值表示的ASCII碼字符,例如:退格(08)、回車(0D)等,可以點(diǎn)擊‘詳情’查看防護(hù)的事件處理程序的名稱。
然而對(duì)于太老的瀏覽器或者引入新的事件處理程序(比如在HTML5中),可能會(huì)出現(xiàn)無(wú)法過(guò)濾的情況,但是這是極少。梭子魚實(shí)驗(yàn)室通過(guò)監(jiān)測(cè)威脅狀況以及來(lái)自安全研究領(lǐng)域的貢獻(xiàn),不斷更新數(shù)據(jù)類型。當(dāng)新的數(shù)據(jù)類型進(jìn)行更新時(shí),各種型號(hào)之間對(duì)其采取的防護(hù)模式略有不同。梭子魚Web應(yīng)用防火墻460及以下的型號(hào)采取主動(dòng)模式。而660及以上的型號(hào)采取被動(dòng)模式,設(shè)備的管理人員在預(yù)覽了更新的數(shù)據(jù)類型之后可根據(jù)其需求將其調(diào)整為主動(dòng)模式。
對(duì)于這些數(shù)據(jù)類型的另一個(gè)考慮因素就是安全性與可用性之間的權(quán)衡。一個(gè)非常嚴(yán)格的數(shù)據(jù)類型策略可能會(huì)誤攔一些正常的輸入,比如我們?nèi)绻x阻斷所有包含on*的事件的話,那么一些輸入,比如one=xyz,可能被誤判為跨站腳本(XSS)攻擊。一種數(shù)據(jù)類型表達(dá)式也可用來(lái)阻止所有“on”后面跟隨3-16個(gè)字符的輸入(和其他的反規(guī)避構(gòu)造一起),當(dāng)然,這是一個(gè)更加嚴(yán)格的模式,可能會(huì)在案例中導(dǎo)致誤判,比如某個(gè)輸入中包含onerous=。以上討論是基于黑名單參數(shù)輸入防護(hù)策略。在使用白名單時(shí),可以選擇手動(dòng),或者通過(guò)自動(dòng)分析器,這種錯(cuò)誤根本就不會(huì)出現(xiàn)。目前最理想的狀況就是修復(fù)代碼。然而,如果不提供源代碼,或者缺乏修復(fù)代碼的專業(yè)知識(shí)和資源,修復(fù)代碼就不可行。梭子魚Web應(yīng)用防火墻規(guī)則庫(kù)和其它高級(jí)功能提供了一個(gè)針對(duì)這種應(yīng)用層攻擊的非常強(qiáng)大的修復(fù)機(jī)制,無(wú)需修改任何源代碼。