如(rú)何應對WEB攻擊的防護盲點(1)
WEB攻擊的數量逐年(nián)上升,占了大(dà)部分(fēn)攻擊事(shì)件(jiàn)比例。WEB安全已經推到了前沿浪尖,無論是政府還(hái)是企業都(dōu)迫切解決這個棘手的問(wèn)題,Gartner統計(jì):目前75%攻擊轉移到應用層。原有的傳統防禦設備已經不能滿足企業對網絡攻擊的防禦。WEB應用技術(shù)在積極發展的同時需要強有力的安全保障,所以WAF是應形勢需求誕生(shēng)的産品,它走上應用安全的舞台,是一個必然的趨勢。
Web漏洞歸類
衆所周知,WEB服務系統實際不是一個單一的軟件(jiàn),它由OS+Database+WEB服務軟件(jiàn)(比如(rú):IIS、Apache)+腳本程序(比如(rú):Jscript、PHP代碼文件(jiàn))構成,所以要考慮它最基本的依賴,那就(jiù)是OS和Database、WEB服務軟件(jiàn)自(zì)身(shēn)的安全,這個可(kě)以通過安全加固服務來(lái)實現,而最核心的應用程序代碼是不能用同樣的手段來(lái)解決,這也是WEB安全問(wèn)題的主要來(lái)源。
WEB 應用安全漏洞與操作(zuò)系統或者網絡設備的漏洞是不同的,這是因爲編寫代碼者是不同的,産生(shēng)的代碼也是不同的,所以國(guó)外有成立正門(mén)的WEB安全組織來(lái)歸類一些漏洞,讓開發人(rén)員(yuán)、安全廠(chǎng)家、第三方專家等能用一種一緻的語言來(lái)討(tǎo)論WEB安全問(wèn)題。比較有名的是OWASP的TOP10漏洞,還(hái)有Web Application Security Consortium (WASC)歸類的Thread Classification,如(rú)下表:
從(cóng)安全角度看(kàn),WEB從(cóng)設計(jì)到開發必須遵循:
1.安全設計(jì)
2.安全編碼
3.安全測試(代碼審計(jì)和掃描、滲透)
4.安全運維
其中最根本的在于安全設計(jì)和安全編碼,也就(jiù)是上線前必須保證WEB産品的自(zì)身(shēn)強壯性。目前大(dà)部分(fēn)的WEB應用程序是用戶自(zì)己或請(qǐng)人(rén)編寫,其他(tā)的或網站(zhàn)裡(lǐ)部分(fēn)組件(jiàn),比如(rú)論壇、郵件(jiàn)系統、留言闆等會用到商業版,代碼是不相(xiàng)同的,而且程序員(yuán)的水平參差不齊,更重要的是他(tā)們都(dōu)遵循了軟件(jiàn)的安全開發标準嗎(ma)?
記住,這是我們爲什麽需要WAF的第一個理(lǐ)由!
攻擊從(cóng)未停止
讓我們先看(kàn)下圖,是攻擊網站(zhàn)的基本步驟和方法。
如(rú)上所示,互聯網每天都(dōu)充斥着數千萬的攻擊流量,而WAF可(kě)以自(zì)動識别和屏蔽大(dà)部分(fēn)主流的攻擊工(gōng)具特征,使得(de)它們在攻擊的前奏就(jiù)失效,綠盟科(kē)技WAF采用的是透明代理(lǐ)模式,使得(de)客戶端和服務器的雙向流量都(dōu)必須經過WAF清洗,而又無需另外配置,保持原有的網絡結構,每個報文需要接受WAF對其的“搜身(shēn)檢查”,合格之後再進行轉發。
可(kě)能有人(rén)會說(shuō)Firewall和IPS不是這樣的設備嗎(ma)?它們爲什麽不能防禦呢(ne)?詳細的對比參數我就(jiù)不列舉了,大(dà)家知道OSI 7層模型,防火(huǒ)牆通常工(gōng)作(zuò)在OSI的第三層,也就(jiù)是針對網絡層,包括包過濾型和狀态包檢測型防火(huǒ)牆,即使是應用層防火(huǒ)牆也無法阻擋大(dà)多數WEB攻擊行爲,這是它自(zì)身(shēn)技術(shù)定位決定的局限性。攻擊者隻需在浏覽器上操縱URL就(jiù)可(kě)攻擊目标網站(zhàn)。當然,作(zuò)爲互補型的IDS(入侵檢測系統)、IPS(入侵防護系統)産品是能防護應用層的攻擊行爲,但(dàn)是市面上絕大(dà)多數的産品都(dōu)隻能防護一部分(fēn)WEB攻擊,甚至有些産品也是直接在IDS類産品上做修改而形成的WAF,基本隻依靠規則來(lái)實現,嚴重滞後于繁雜多樣的WEB攻擊手段。當然,我在這裡(lǐ)要重申一下,WAF可(kě)以和傳統的FS+IPS作(zuò)爲一個有益的補充,但(dàn)絕不是去(qù)代替他(tā)們。
所以,WAF的自(zì)身(shēn)代理(lǐ)架構使得(de)分(fēn)析和阻擋攻擊具有天然的優勢,這是我們爲什麽需要WAF的第二個理(lǐ)由!
WAF的防護原理(lǐ)
好,我們再回到防護盲點的産生(shēng)這個焦點話(huà)題,那就(jiù)是無論如(rú)何安全設計(jì)和編碼,或者經過最嚴謹代碼審計(jì)、滲透測試之後都(dōu)難免會有漏洞,因爲理(lǐ)論上1000行代碼就(jiù)有1個Bug,檢查隻能讓這些減少而已,無法真正做到沒有安全漏洞的産品,這也就(jiù)是爲什麽軟件(jiàn)廠(chǎng)商會不斷地推出一個個補丁來(lái)彌補,而這些Bug隻要能被攻擊者發現和利用那麽就(jiù)會帶來(lái)威脅。
也就(jiù)是說(shuō)代碼缺陷是先天存在的,即使後來(lái)修複也會具有一定的滞後性,而且不能保證100%地發現所有存在的漏洞那個缺陷。爲了給大(dà)家更好地理(lǐ)解WAF防護的天然優勢我們從(cóng)兩個例子來(lái)進行分(fēn)析,從(cóng)技術(shù)實現角度看(kàn)WAF,SQL注入采用了規則集靜(jìng)态防護,CSRF采用了算法的動态防護。