◆錢(qián)銘銘 康錦濤 陳舟寧
(三江學(xué)院計(jì)算機(jī)科學(xué)與工程學(xué)院 江蘇 210012)
一種基于XSS攻擊防御的安全CDN研究
◆錢(qián)銘銘 康錦濤 陳舟寧
(三江學(xué)院計(jì)算機(jī)科學(xué)與工程學(xué)院 江蘇 210012)
本文提出了一種安全CDN解決方案,主要針對(duì)XSS攻擊進(jìn)行防御,通過(guò)對(duì)現(xiàn)有的CDN系統(tǒng)進(jìn)行改進(jìn),對(duì)流經(jīng)CDN服務(wù)器的數(shù)據(jù)流量進(jìn)行安全監(jiān)測(cè),將安全的評(píng)估方在 CDN服務(wù)器上,實(shí)時(shí)分析流量中存在的安全威脅,并通過(guò)云計(jì)算技術(shù)與態(tài)勢(shì)感知技術(shù)將安全威脅與安全防御可視化,并對(duì)安全事件做出決策。
XSS攻擊;XSS防御;CDN;安全CDN
互聯(lián)網(wǎng)飛速發(fā)展在為人類帶來(lái)種種便利的同時(shí),也帶來(lái)了諸多安全問(wèn)題,近年來(lái),網(wǎng)絡(luò)安全形勢(shì)不斷嚴(yán)峻,國(guó)內(nèi)外重大安全事件頻頻出現(xiàn),為了保障網(wǎng)絡(luò)安全、維護(hù)國(guó)家利益、推動(dòng)信息化的發(fā)展,2014年2月27日,中央網(wǎng)絡(luò)安全和信息化領(lǐng)導(dǎo)小組成立,習(xí)近平主席擔(dān)任組長(zhǎng)。隨著國(guó)家網(wǎng)絡(luò)安全戰(zhàn)略的實(shí)施,人們對(duì)網(wǎng)絡(luò)安全越來(lái)越重視,部分安全機(jī)構(gòu)推出了各類安全解決方案,已經(jīng)應(yīng)用在網(wǎng)絡(luò)安全的各個(gè)領(lǐng)域。
跨站腳本 (Cross-Site Scripting,XSS) 攻擊是一種經(jīng)常出現(xiàn)在應(yīng)用程序中的計(jì)算機(jī)安全漏洞,是由于應(yīng)用程序?qū)τ脩舻妮斎脒^(guò)濾不足而產(chǎn)生的。攻擊者利用網(wǎng)站漏洞把惡意的腳本代碼(通常包括客戶端JavaScript腳本代碼)注入到網(wǎng)頁(yè)中,當(dāng)其他用戶瀏覽器訪問(wèn)這些網(wǎng)頁(yè)時(shí),就會(huì)執(zhí)行其中的惡意代碼,對(duì)受害者可能采取資料竊取、會(huì)話劫持、釣魚(yú)欺騙等各種攻擊。隨著Html5技術(shù)的成熟,越來(lái)越多的網(wǎng)站和移動(dòng)應(yīng)用開(kāi)始使用更加高級(jí)的前端技術(shù),XSS攻擊也在逐年升級(jí)。從2007年至今,在OWASP統(tǒng)計(jì)的所有網(wǎng)絡(luò)安全威脅中,跨站腳本攻擊無(wú)論是嚴(yán)重性還是普遍性都穩(wěn)居前三的位置。
目前已有的解決方案有如下幾類:
(1)服務(wù)器端防御
服務(wù)器通常是Web服務(wù)器,在服務(wù)器端對(duì)用戶的連接請(qǐng)求進(jìn)行分析過(guò)濾,對(duì)危險(xiǎn)的標(biāo)簽與符號(hào)進(jìn)行轉(zhuǎn)義,從源頭封堵XSS攻擊,但大多數(shù)程序員沒(méi)有安全知識(shí),軟件測(cè)試人員也僅僅根據(jù)標(biāo)準(zhǔn)化測(cè)試方法進(jìn)行測(cè)試,在軟件開(kāi)發(fā)過(guò)程中并無(wú)安全人員參與,所以無(wú)法對(duì)Web程序進(jìn)行整體評(píng)估,造成漏洞的產(chǎn)生。近年來(lái),百度貼吧,騰訊郵箱,新浪微博等著名的互聯(lián)網(wǎng)平臺(tái)都爆出XSS漏洞,可見(jiàn)僅靠Web程序安全的做法無(wú)法達(dá)到顯著的效果。
(2)客戶端防御
2006年,E.Kirda等人首次提出了Noxes客戶端防御解決方案0,它分析瀏覽過(guò)的頁(yè)面中的超鏈接,阻止不可信的訪問(wèn),防止敏感信息泄露的可能。目前大多數(shù)客戶端防御通過(guò)瀏覽器對(duì)XSS請(qǐng)求進(jìn)行過(guò)濾器,使惡意代碼無(wú)法在瀏覽器中執(zhí)行,其中Chrome、IE11等針對(duì)XSS過(guò)濾較為強(qiáng)大,但仍無(wú)法徹底防御人為XSS攻擊,惡意腳本和普通腳本也沒(méi)有明顯的界限計(jì)算機(jī)系統(tǒng)難以分辨。
(3)專用安全設(shè)備防御
專用安全設(shè)備通常是網(wǎng)絡(luò)應(yīng)用防火墻 (Web Application Firewall,WAF),其中分為硬件防火墻與軟件防火墻兩個(gè)類別。硬件防火墻主要以綠盟、啟明星辰等安全公司為產(chǎn)品代表,在網(wǎng)關(guān)處進(jìn)行部署,對(duì)流量進(jìn)行全面審查可以達(dá)到比較理想的效果,但此類產(chǎn)品價(jià)格一般較高,主要應(yīng)用在大型網(wǎng)絡(luò)企業(yè),一般的中小型企業(yè)難以承受。軟件防火墻,典型代表是安全狗(safedog),但是安全狗作為軟件系統(tǒng)需要占用大量服務(wù)器本身硬件資源,用戶流量越大系統(tǒng)資源占有率就越高,這對(duì)于中小企業(yè)的服務(wù)器壓力較大,而且用戶普遍反映安全狗誤報(bào)率也較高,沒(méi)有智能分析的能力,僅依靠規(guī)則進(jìn)行匹配,雖然能解決部分攻擊問(wèn)題,但安全狗自身軟件的安全風(fēng)險(xiǎn)也存在,所以也不是一個(gè)優(yōu)秀的防御方案。
(4)安全CDN服務(wù)防御
安全CDN服務(wù)的發(fā)展取決于云計(jì)算技術(shù)的成熟,目前眾多安全廠商推出了CDN服務(wù),如:安全寶、加速樂(lè)、360網(wǎng)站衛(wèi)士等,通過(guò)分布在各地的CDN服務(wù)器對(duì)流經(jīng)網(wǎng)站的流量進(jìn)行檢測(cè),對(duì)異常流量進(jìn)行清洗,通過(guò)負(fù)載均衡技術(shù),將請(qǐng)求會(huì)均衡地分配到附近的CDN服務(wù)器上使得單個(gè)服務(wù)器網(wǎng)絡(luò)流量壓力不大,可以實(shí)現(xiàn)網(wǎng)絡(luò)訪問(wèn)的加速功能,但是傳統(tǒng)CDN服務(wù)只負(fù)責(zé)存儲(chǔ)、緩存和轉(zhuǎn)發(fā),其本身的運(yùn)算資源難以發(fā)揮。
本文主要研究一種安全CDN解決方案,通過(guò)對(duì)現(xiàn)有的CDN系統(tǒng)進(jìn)行改進(jìn),對(duì)流經(jīng)CDN服務(wù)器的數(shù)據(jù)流量進(jìn)行安全監(jiān)測(cè),將安全的評(píng)估放在CDN服務(wù)器上,實(shí)時(shí)分析流量中存在的安全威脅,并通過(guò)云計(jì)算技術(shù)與態(tài)勢(shì)感知技術(shù)將安全威脅與安全防御可視化,并對(duì)安全事件做出決策。
2.1 系統(tǒng)總體結(jié)構(gòu)
系統(tǒng)總體結(jié)構(gòu)主要由 CDN服務(wù)器和云服務(wù)器構(gòu)成,如圖1所示:

圖1 安全CDN解決方案圖
根據(jù)系統(tǒng)整體解決方案設(shè)計(jì)了幾個(gè)模塊分別為:CDN服務(wù)器,可疑請(qǐng)求判斷模塊、反向代理模塊;云服務(wù)器;態(tài)勢(shì)感知模塊;請(qǐng)求分析模塊;請(qǐng)求過(guò)濾模塊;日志模塊。
CDN服務(wù)器,可疑請(qǐng)求判斷模塊、反向代理模塊:主要對(duì)用戶訪問(wèn)的請(qǐng)求進(jìn)行判斷,如果請(qǐng)求可疑則提交云服務(wù)器進(jìn)行分析。擬使用NginxServer和Python語(yǔ)言實(shí)現(xiàn),使用Lua與C語(yǔ)言模塊為Nginx編寫(xiě)擴(kuò)展,在反向代理中判斷是否為可疑請(qǐng)求,將可疑請(qǐng)求發(fā)送至云服務(wù)器,根據(jù)云服務(wù)器反饋結(jié)果完成對(duì)應(yīng)操作。
態(tài)勢(shì)感知模塊:運(yùn)用網(wǎng)絡(luò)態(tài)勢(shì)感知技術(shù)將網(wǎng)絡(luò)設(shè)備運(yùn)行狀況、網(wǎng)絡(luò)行為以及用戶行為進(jìn)行整體分析,對(duì)能夠引起網(wǎng)絡(luò)態(tài)勢(shì)發(fā)生變化的所有安全要素進(jìn)行獲取、理解、顯示,將新型威脅行為進(jìn)行提取,對(duì)安全威脅等級(jí)進(jìn)行評(píng)估,構(gòu)建新態(tài)勢(shì)感知庫(kù)。此操作主要對(duì)日志數(shù)據(jù)進(jìn)行分析,對(duì)數(shù)據(jù)進(jìn)行整體處理結(jié)合用戶的行為進(jìn)行判斷,并將數(shù)據(jù)生成狀態(tài)視圖。
請(qǐng)求分析模塊:主要負(fù)責(zé)安全威脅檢測(cè)和安全威脅等級(jí)評(píng)定。此模塊涉及到系統(tǒng)底層操作,擬采用C/C++語(yǔ)言開(kāi)發(fā),將請(qǐng)求報(bào)文中的GET/POST內(nèi)容進(jìn)行拆解、分析,檢測(cè)出潛在的安全威脅,并評(píng)定威脅等級(jí),將結(jié)果反饋給服務(wù)器,等待下一步處理。
請(qǐng)求過(guò)濾模塊:根據(jù)請(qǐng)求分析模塊進(jìn)行結(jié)果分析,對(duì)危險(xiǎn)的字段、操作行為進(jìn)行過(guò)濾、轉(zhuǎn)義等操作,將安全的結(jié)果輸出,返回給服務(wù)器。
日志模塊:將所有的威脅與分析結(jié)果進(jìn)行存儲(chǔ)。
2.2 系統(tǒng)工作流程
主要業(yè)務(wù)流程如圖2:

圖2 主要業(yè)務(wù)流程圖
首先客戶向CDN服務(wù)器發(fā)送HTTP請(qǐng)求,CDN服務(wù)器接受到請(qǐng)求后,將請(qǐng)求初步判斷,篩選是否為可疑威脅(一些特殊字符組合、JavaScript函數(shù)等)提交云服務(wù)器進(jìn)行分析,若不存在可疑威脅,則直接將請(qǐng)求使用反向代理方式轉(zhuǎn)發(fā)給WEB服務(wù)器。
云服務(wù)器經(jīng)過(guò)二次分析后,判斷為無(wú)威脅則通告WEB服務(wù)器此內(nèi)容放行,有威脅則要調(diào)用態(tài)勢(shì)感知庫(kù)進(jìn)行深度分析,判定威脅等級(jí),根據(jù)對(duì)不同的威脅做出不同的決策。如果經(jīng)過(guò)分析后認(rèn)為是入侵行為,立即通告CDN服務(wù)器終止此次訪問(wèn)連接;若判定為用戶誤操作行為,則將危險(xiǎn)代碼轉(zhuǎn)義、替換后返回給CDN服務(wù)器,再由CDN服務(wù)器提交WEB服務(wù)器。
所有的操作均記錄到日志系統(tǒng),云服務(wù)器上的態(tài)勢(shì)感知模塊定期對(duì)日志系統(tǒng)進(jìn)行評(píng)估,提取相關(guān)特征信息,將分析結(jié)果會(huì)存入態(tài)勢(shì)感知數(shù)據(jù)庫(kù)中,并對(duì)新型威脅設(shè)置相應(yīng)等級(jí)以供下次請(qǐng)求決策,詳細(xì)結(jié)果通過(guò)圖表、分析報(bào)告等形式呈現(xiàn)。
(1)將云計(jì)算與傳統(tǒng)的CDN服務(wù)融合,使之在網(wǎng)絡(luò)攻擊防御方面產(chǎn)生良好的效果。
開(kāi)發(fā)人員為了防止XSS攻擊,一般直接使用編程語(yǔ)言的替換函數(shù)將危險(xiǎn)字符轉(zhuǎn)義或過(guò)濾,但 Web服務(wù)器只是機(jī)械性的針對(duì)預(yù)定義的關(guān)鍵字進(jìn)行替換,無(wú)法將攻擊行為反饋給用戶。而傳統(tǒng)的WAF、安全CDN檢測(cè)到潛在風(fēng)險(xiǎn)后則會(huì)直接丟棄該請(qǐng)求,可能影響正常用戶的體驗(yàn)。本項(xiàng)目結(jié)合直接過(guò)濾與檢測(cè)并丟棄兩種技術(shù)的優(yōu)點(diǎn),先檢測(cè),后針對(duì)性進(jìn)行過(guò)濾或轉(zhuǎn)義,不影響正常用戶行為,而攻擊指令則被無(wú)效化。
(2)將用戶的真實(shí)主機(jī)地址進(jìn)行隱藏,用戶、攻擊者與云安全 CDN服務(wù)器構(gòu)成一個(gè)環(huán)路,避免用戶和攻擊者直接碰面,更好的保護(hù)用戶服務(wù)隱私。
用戶訪問(wèn)一個(gè)域名時(shí),DNS(Domain Name System)把域名解析成了CDN服務(wù)器的地址,CDN服務(wù)器去獲取用戶請(qǐng)求的網(wǎng)站的內(nèi)容,并且檢查該網(wǎng)站內(nèi)容有沒(méi)有存在威脅的因素。經(jīng)過(guò)檢查后,判斷沒(méi)有存在威脅再去向原服務(wù)器請(qǐng)求內(nèi)容返還給用戶。在這個(gè)過(guò)程中,有效地將用戶的真實(shí)主機(jī)地址隱藏了起來(lái),避免了用戶與攻擊者的直接接觸,更好地保護(hù)用戶服務(wù)隱私。
(3)提供可視化攻擊日志
目前,已有CDN雖然也可以提供一定的可視化圖表,但缺乏對(duì)威脅的分析與預(yù)警功能。云服務(wù)器作為CDN節(jié)點(diǎn)的中樞,同時(shí)負(fù)責(zé)維護(hù)可疑請(qǐng)求日志,利用態(tài)勢(shì)感知技術(shù),從海量日志數(shù)據(jù)中進(jìn)行分析,對(duì)危險(xiǎn)的請(qǐng)求進(jìn)行過(guò)濾,感知新型威脅行為,利用云強(qiáng)大的數(shù)據(jù)處理能力將安全威脅用可視化的方式呈現(xiàn)給用戶。
3.1 總體實(shí)現(xiàn)

圖3 基于云的安全CDN架構(gòu)圖
本系統(tǒng)于傳統(tǒng)CDN架構(gòu)中加入云計(jì)算技術(shù),為WEB安全提供了一種新的解決方案。用戶向 CDN服務(wù)器發(fā)送請(qǐng)求后,CDN服務(wù)器初步判斷請(qǐng)求是否含有可疑內(nèi)容,提交給云服務(wù)器進(jìn)行處理。在此架構(gòu)中,CDN服務(wù)器只負(fù)責(zé)初步的判斷,詳細(xì)的分析策略則部署在云端,系統(tǒng)管理員可以在云服務(wù)器上定義安全策略,若使用傳統(tǒng)的安全CDN體系架構(gòu),則需要向每臺(tái)服務(wù)器分別下發(fā)安全策略。
OpenResty是基于Lua語(yǔ)言與Nginx的Web服務(wù)器。他支持Nginx的所有功能,并且支持使用Lua編寫(xiě)擴(kuò)展模塊。為實(shí)現(xiàn)本系統(tǒng),采用OpenResty作為反向代理服務(wù)器,并通過(guò)Lua擴(kuò)展調(diào)用可疑請(qǐng)求判斷模塊。為保證可疑請(qǐng)求判斷模塊、請(qǐng)求分析模塊在大流量、高并發(fā)環(huán)境下的處理效率,代碼完全使用C語(yǔ)言進(jìn)行開(kāi)發(fā)。日志記錄模塊采用Mysql數(shù)據(jù)庫(kù)完成日志記錄,日志記錄主要包括用戶請(qǐng)求鏈接、源IP、目的網(wǎng)站、請(qǐng)求時(shí)間、威脅等級(jí)、攻擊向量、用戶瀏覽器特征等內(nèi)容。態(tài)勢(shì)感知系統(tǒng)采用B/S架構(gòu)設(shè)計(jì)使用了一系列的統(tǒng)計(jì)算法,攻擊行為與攻擊特征聯(lián)系起來(lái),并將結(jié)果輸出為JSON,傳輸?shù)綖g覽器端。瀏覽器解析JSON后生成對(duì)應(yīng)圖表,使用HTML5與CSS3實(shí)現(xiàn)數(shù)據(jù)可視化,使得用戶可以無(wú)需安裝任何客戶端程序,直接在瀏覽器中獲得直觀的數(shù)據(jù)體驗(yàn)。
3.2 主要功能模塊實(shí)現(xiàn)
(1)反向代理模塊實(shí)現(xiàn)過(guò)程
反向代理需要對(duì)接收到的請(qǐng)求進(jìn)行判斷與分流,在請(qǐng)求進(jìn)入服務(wù)器處理流程時(shí),Nginx將訪問(wèn)控制權(quán)交給請(qǐng)求判斷模塊。配置文件如下:
http {
server {
listen 80;//配置反向代理監(jiān)聽(tīng)端口
location / {
default_type text/html;//配置返回類型
access_by_lua_filerequest_judge.lua;//將頁(yè)面訪問(wèn)控制權(quán)交給判斷模塊
proxy_passhttp://target-site.com/;//將請(qǐng)求傳遞給目標(biāo)網(wǎng)站
}
}
當(dāng)請(qǐng)求被傳遞到請(qǐng)求判斷模塊(request_judge.lua)后,請(qǐng)求判斷模塊會(huì)讀取出請(qǐng)求中的url、源IP、請(qǐng)求體、請(qǐng)求參數(shù)等信息,并調(diào)用C語(yǔ)言編寫(xiě)的可疑請(qǐng)求判斷模塊對(duì)用戶傳入?yún)?shù)的威脅程度進(jìn)行初步打分。分值范圍為0-5,若大于0分,則將請(qǐng)求信息以JSON的方式傳遞給后端服務(wù)器進(jìn)行判斷,后端云服務(wù)器判斷完成后會(huì)返回結(jié)果,并根據(jù)結(jié)果執(zhí)行阻斷或放行的操作。
(2)可疑請(qǐng)求判斷模塊實(shí)現(xiàn)過(guò)程
可疑請(qǐng)求判斷模塊每秒將處理大量數(shù)據(jù),作為一個(gè)CPU-bound(計(jì)算密集型)的程序,如何提高效率是實(shí)現(xiàn)該模塊的關(guān)鍵點(diǎn)。
針對(duì)檢索效率問(wèn)題,基于DFA(Deterministic Finite Automaton)理論的Trie樹(shù)可以說(shuō)是一種快速而又高效的解決方案。
在此給出trie樹(shù)相關(guān)定義及原理:
Trie樹(shù)是一種數(shù)字查找樹(shù),也是一種基于DFA理論的高效索引方式。在整個(gè)樹(shù)結(jié)構(gòu)中,每個(gè)節(jié)點(diǎn)對(duì)應(yīng)一種DFA狀態(tài),每條從父節(jié)點(diǎn)指向子節(jié)點(diǎn)的邊對(duì)應(yīng)DFA的一個(gè)變化過(guò)程。
遍歷過(guò)程從根節(jié)點(diǎn)開(kāi)始,依據(jù)目標(biāo)字符串中的字符,依次確定下一個(gè)狀態(tài)的位置。如果在目標(biāo)字符串中的字符用盡之前匹配到葉節(jié)點(diǎn),則搜索成功并結(jié)束搜索;否則表示搜索失敗。并且Trie樹(shù)的搜索靈活性也很高,通過(guò)跳過(guò)目標(biāo)字符串中的特定字符可以做到不受輕微的拼寫(xiě)錯(cuò)誤影響,但考慮到安全問(wèn)題,這個(gè)特性意義并不大。
關(guān)于Trie樹(shù)使用的主要方法有創(chuàng)建字典樹(shù)、插入節(jié)點(diǎn)元素、返回Trie中某一節(jié)點(diǎn)被添加的次數(shù)、對(duì)數(shù)字字典樹(shù)按實(shí)際數(shù)值大小排序即廣度優(yōu)先搜索……
但是由于樸素Trie樹(shù)結(jié)構(gòu)稀疏,會(huì)造成服務(wù)器運(yùn)算、存儲(chǔ)資源的極大浪費(fèi)。
本項(xiàng)目使用DAT(Double Array Trie)算法進(jìn)行流量審查,在此對(duì)DAT的原理及其狀態(tài)轉(zhuǎn)移過(guò)程進(jìn)行舉例說(shuō)明:
假設(shè)有一段用戶輸入:I'm a aa hack hacker
生成的DFA圖如圖4:

圖4 生成的DFA圖
上圖經(jīng)過(guò)簡(jiǎn)化,圖中每個(gè)節(jié)點(diǎn)代表一個(gè)“狀態(tài)”,每條邊代表一個(gè)“變量”,從一個(gè)節(jié)點(diǎn)到下一個(gè)節(jié)點(diǎn)的轉(zhuǎn)變稱為“狀態(tài)轉(zhuǎn)移”。狀態(tài)轉(zhuǎn)移機(jī)制將傳統(tǒng)的文本正則檢索轉(zhuǎn)變?yōu)閷?duì)狀態(tài)的操作,通過(guò)對(duì)狀態(tài)的記錄與處理,極大地提升了匹配效率與精準(zhǔn)度,節(jié)省了服務(wù)器運(yùn)算資源、存儲(chǔ)空間,對(duì)類regex-DDOS攻擊也有較好的緩解作用。
以下說(shuō)明DAT的狀態(tài)轉(zhuǎn)變過(guò)程:

圖5 DFA的狀態(tài)轉(zhuǎn)變過(guò)程圖
如圖5所示,在輸入字符c從狀態(tài)s到t的轉(zhuǎn)變過(guò)程中,轉(zhuǎn)變前的狀態(tài)(s)被保存在check數(shù)組中,即check[t] = s,這就是DAT的狀態(tài)轉(zhuǎn)變過(guò)程。與Tripple-Array Trie相比,將base與next合并為base節(jié)省了空間,同時(shí)增強(qiáng)了算法局部性,提高了效率。
根據(jù)上述過(guò)程,可以得到如下偽代碼:
t := base[s] + c;
if check[t] = s then
next state := t
else
fail
endif
check數(shù)組中保存的是某個(gè)狀態(tài)(s)的前一個(gè)狀態(tài)(t),base數(shù)組的index是DFA中的狀態(tài)號(hào),base[s]保存的是狀態(tài)s尋找下一個(gè)狀態(tài)時(shí)的offset,offset用于尋找后續(xù)的可用內(nèi)存空間。在s狀態(tài)下輸入一個(gè)字符,根據(jù)base[s]處保存的offset和輸入字符編碼將狀態(tài)轉(zhuǎn)移到t。
當(dāng)算法檢測(cè)到危險(xiǎn)關(guān)鍵字(如雙引號(hào),成對(duì)出現(xiàn)的尖括號(hào),script關(guān)鍵字等)則對(duì)響應(yīng)危險(xiǎn)關(guān)鍵字進(jìn)行風(fēng)險(xiǎn)評(píng)估打分,并返回結(jié)果給反向代理模塊處理。
(3)請(qǐng)求分析模塊實(shí)現(xiàn)過(guò)程
云服務(wù)器上運(yùn)行著請(qǐng)求分析模塊,負(fù)責(zé)判斷請(qǐng)求是否為XSS。請(qǐng)求分析模塊擯棄了基于規(guī)則的XSS防御方式,而是基于HTML語(yǔ)義對(duì)內(nèi)容進(jìn)行分析與判斷,大大降低了誤報(bào)率與漏報(bào)率。請(qǐng)求分析模塊在發(fā)現(xiàn)HTML標(biāo)簽后,首先會(huì)對(duì)HTML語(yǔ)義進(jìn)行分析,解析出HTML標(biāo)簽的標(biāo)簽名、屬性名、屬性值等。解析完成后,會(huì)對(duì)各個(gè)屬性進(jìn)行關(guān)聯(lián)分析。例如在標(biāo)簽中出現(xiàn)了onload屬性,該屬性的值不為空,則為XSS。因?yàn)樵搶傩詴?huì)在頁(yè)面載入完成后執(zhí)行屬性值中的代碼。在完成判斷分析后,將結(jié)果返回給CDN服務(wù)器。
系統(tǒng)完成后對(duì)該系統(tǒng)進(jìn)行了實(shí)驗(yàn),以某網(wǎng)站作為 CDN的源站。在參數(shù)中輸入對(duì)攻擊向量進(jìn)行測(cè)試,檢測(cè)該系統(tǒng)的誤報(bào)率與漏報(bào)率。測(cè)試使用真實(shí)生產(chǎn)環(huán)境環(huán)境下記錄的攻擊向量,隨機(jī)抽取1000條使用該系統(tǒng)進(jìn)行測(cè)試,記錄誤報(bào)率與漏報(bào)率。并針對(duì)誤報(bào)結(jié)果和漏報(bào)結(jié)果進(jìn)行優(yōu)化,結(jié)果如表1:

表1 漏報(bào)誤報(bào)趨勢(shì)表
在測(cè)試過(guò)程中,我們發(fā)現(xiàn)在生產(chǎn)環(huán)境數(shù)據(jù)中經(jīng)常會(huì)遇到XML(擴(kuò)展標(biāo)記語(yǔ)言)形式的數(shù)據(jù),而XML與HTML語(yǔ)法相近,導(dǎo)致了大量誤報(bào)的產(chǎn)生。針對(duì)這個(gè)問(wèn)題,對(duì)檢測(cè)算法進(jìn)行了優(yōu)化,單獨(dú)解析XML文檔內(nèi)容,并在解析后判斷是否存在XSS,大大降低了誤報(bào)率。
經(jīng)過(guò)對(duì)規(guī)則與算法的數(shù)次優(yōu)化,誤報(bào)率與漏報(bào)率均降低到了10%以下。
本文以普通網(wǎng)站所有者對(duì)安全防御的需求為切入點(diǎn),對(duì)這個(gè)問(wèn)題的解決方案進(jìn)行了探究。WEB應(yīng)用防火墻與CDN技術(shù)都是較為成熟的技術(shù),然而在探究的過(guò)程中,我們發(fā)現(xiàn)二者的結(jié)合并不是那么簡(jiǎn)單。安全+CDN解決了用戶的核心痛點(diǎn)。我們采用CDN服務(wù)器和云服務(wù)器相結(jié)合。其中,CDN服務(wù)器主要針對(duì)用戶訪問(wèn)的請(qǐng)求進(jìn)行判斷,將請(qǐng)求可疑提交至云服務(wù)器進(jìn)行分析;云服務(wù)器則運(yùn)用網(wǎng)絡(luò)態(tài)勢(shì)感知技術(shù)將網(wǎng)絡(luò)設(shè)備運(yùn)行狀況、網(wǎng)絡(luò)行為以及用戶行為進(jìn)行總體分析并采取相應(yīng)的措施去處理問(wèn)題。我們的安全CDN通過(guò)分布在各地的CDN服務(wù)器對(duì)流經(jīng)CDN服務(wù)器的數(shù)據(jù)流量進(jìn)行安全監(jiān)測(cè),將安全的評(píng)估放在 CDN服務(wù)器上,實(shí)時(shí)分析流量中存在的安全威脅,并通過(guò)云計(jì)算技術(shù)與態(tài)勢(shì)感知技術(shù)將安全威脅與安全防御可視化,并對(duì)安全事件做出決策。同時(shí)用戶不用擔(dān)心網(wǎng)絡(luò)訪問(wèn)的速度問(wèn)題,因?yàn)槲覀儼踩?CDN通過(guò)負(fù)載均衡技術(shù),將請(qǐng)求會(huì)均衡地分配到附近的 CDN服務(wù)器上,使得單個(gè)服務(wù)器網(wǎng)絡(luò)流量壓力不大,可以實(shí)現(xiàn)網(wǎng)絡(luò)訪問(wèn)的加速功能。當(dāng)然,這套系統(tǒng)的潛力不應(yīng)止步于此:在未來(lái)本系統(tǒng)的研究方向可以融入機(jī)器學(xué)習(xí),把本系統(tǒng)與機(jī)器學(xué)習(xí)相結(jié)合,對(duì)用戶的請(qǐng)求行為進(jìn)行建模,從而更好地實(shí)現(xiàn)安全防御。
[1]XSS跨站腳本攻擊剖析與防御[J].邱永華.中國(guó)科技信息,2013.
[2]章明,施勇,薛質(zhì).基于約束分析的跨站腳本防御方法研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2013.
[3]李冬萌.Web前端安全問(wèn)題的分析與防范研究[D].北京郵電大學(xué),2014.
[4]何銳,李艷,劉紅.基于CDN內(nèi)容分發(fā)的研究與應(yīng)用[J].通信技術(shù),2011.
[5]王瑋.CDN內(nèi)容分發(fā)網(wǎng)絡(luò)優(yōu)化方法的研究[D].華中科技大學(xué),2009.
[6]王曉尉.CDN網(wǎng)絡(luò)中多鏈路負(fù)載均衡流量管理技術(shù)分析與研究[J].電腦知識(shí)與技術(shù),2012.
[7]The top 10 most critical web application security risks.Wichers D.Journal of Women s Health,2010.
[8]Kirda E,Kruegel C,Vigna G,et al.Noxes:a client-side solution for mitigating cross-site scripting attacks[C]//Proceedings of the 2006 ACM symposium on Applied computing.ACM,2006.