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