蔣 華,徐中原,王 鑫
(桂林電子科技大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,廣西桂林541004)
據(jù)WhiteHat Security統(tǒng)計(jì),近幾年來(lái)跨站腳本 (XSS攻擊)攻擊一直在威脅Web安全的嚴(yán)重程度指數(shù)中名列前茅[1]。與此同時(shí),從2005年起,跨站腳本 (XSS)蠕蟲(chóng)也已在國(guó)內(nèi)很多社交網(wǎng)站上陸續(xù)嶄露頭腳,其傳播速度和范圍都令傳統(tǒng)的網(wǎng)絡(luò)蠕蟲(chóng)黯然失色[2]。
目前對(duì)于XSS攻擊主要的防范措施都集中在服務(wù)器端,通過(guò)對(duì)用戶的輸入進(jìn)行過(guò)濾來(lái)防范XSS攻擊,但是這樣做的缺點(diǎn)是很容易使惡意攻擊者通過(guò)探測(cè)工具繞過(guò)過(guò)濾來(lái)實(shí)施注入攻擊。另外,如果在服務(wù)器端所設(shè)立的過(guò)濾算法過(guò)于復(fù)雜,將不可避免地影響到服務(wù)器的性能。
此外,近幾年來(lái)防范措施設(shè)置在客戶端方面的設(shè)想和做法也已陸續(xù)被提出,王夏莉,張玉清等提出了通過(guò)將用戶對(duì)Web應(yīng)用程序的HTTP請(qǐng)求數(shù)據(jù)包分離為GET和POST請(qǐng)求數(shù)據(jù)包分別進(jìn)行分析處理的客戶端防范方法,該研究設(shè)計(jì)的StopXSS對(duì)防范XSS蠕蟲(chóng)攻擊有一定的作用,但對(duì)XSS攻擊竊取用戶敏感信息和隱私數(shù)據(jù)方面防范不足[3];Vogt P等提出了基于動(dòng)態(tài)分析追蹤的客戶端防范方法[4]、章明等使用靜態(tài)約束分析和動(dòng)態(tài)檢測(cè)相結(jié)合的客戶端防御方法[5],可對(duì)XSS攻擊進(jìn)行比較有效的防范,但面對(duì)XSS蠕蟲(chóng)的攻擊束手無(wú)策。
針對(duì)此種情況該論文結(jié)合上述研究的優(yōu)點(diǎn)設(shè)計(jì)出了純客戶端的XSS防御設(shè)計(jì)方案,通過(guò)實(shí)驗(yàn)驗(yàn)證了該方法不僅可以更加有效地防御XSS攻擊,檢測(cè)準(zhǔn)確率可以達(dá)95%左右,另一方面對(duì)于XSS攻擊向量的變種亦具有同樣的防御能力[6],同時(shí)該方法還具有檢測(cè)防范0-Day XSS蠕蟲(chóng)的能力。
XSS(cross site scripting)即跨站腳本攻擊,主要是由于Web應(yīng)用程序?qū)τ脩糨斎霙](méi)有進(jìn)行合理的過(guò)濾造成的[7]。惡意用戶利用XSS漏洞可以編寫(xiě)專門(mén)的攻擊代碼注入到Web應(yīng)用程序,當(dāng)其它用戶瀏覽Web應(yīng)用程序中的此頁(yè)面時(shí),腳本代碼就會(huì)在用戶的瀏覽器中執(zhí)行從而竊取用戶的敏感信息或隱私數(shù)據(jù)等,然后以用戶的身份登錄Web應(yīng)用程序或利用已竊取的信息實(shí)施破壞。
XSS蠕蟲(chóng)是一種利用XSS漏洞進(jìn)行攻擊和傳播的蠕蟲(chóng)。XSS蠕蟲(chóng)的第一次亮相是在2005年的MySpace網(wǎng)絡(luò)社區(qū)中,在短短20個(gè)小時(shí)內(nèi)即感染超過(guò)百萬(wàn)的用戶,兩天后MySpace不得不關(guān)閉站點(diǎn)進(jìn)行維護(hù),造成了巨大的經(jīng)濟(jì)損失[8]。隨后在國(guó)內(nèi)的新浪、百度、人人網(wǎng)等知名網(wǎng)站中也先后爆發(fā)過(guò)XSS蠕蟲(chóng),但值得注意的是目前XSS蠕蟲(chóng)還處在發(fā)展階段,已爆發(fā)的蠕蟲(chóng)大部分還不具備攻擊性,如加上掛馬、釣魚(yú)等代碼則可對(duì)用戶的財(cái)產(chǎn)和隱私安全造成嚴(yán)重影響。
(1)反射型XSS攻擊:反射性XSS是指用戶點(diǎn)擊了某個(gè)鏈接如郵件中的鏈接、新聞標(biāo)記中的鏈接或攻擊者偽裝為用戶的朋友直接發(fā)送的鏈接等,而這個(gè)鏈接是XSS攻擊者經(jīng)過(guò)精心構(gòu)造、在其中包含惡意腳本代碼的危險(xiǎn)鏈接,惡意腳本代碼在用戶點(diǎn)擊后即在用戶的瀏覽器中運(yùn)行,在瀏覽器端如沒(méi)有相應(yīng)的防范措施,惡意攻擊者就可以竊取用戶的隱私數(shù)據(jù)或敏感信息如cookie等。
(2)存儲(chǔ)型XSS攻擊:存儲(chǔ)型XSS主要是由于Web應(yīng)用程序?qū)τ脩糨斎氲倪^(guò)濾存在漏洞,從而導(dǎo)致惡意用戶將惡意代碼以正常數(shù)據(jù)信息的形式提交到Web應(yīng)用程序的服務(wù)器中,當(dāng)用戶訪問(wèn)相對(duì)應(yīng)的頁(yè)面時(shí)Web應(yīng)用程序就會(huì)從服務(wù)器加載包含惡意代碼的頁(yè)面?zhèn)鬟f到訪問(wèn)用戶的瀏覽器中并執(zhí)行,竊取用戶的敏感信息或進(jìn)行其它惡意攻擊行為。
(3)基于DOM的XSS攻擊:與前2種攻擊方式不同的是基于DOM的XSS攻擊惡意代碼并不是直接嵌入HTML頁(yè)面中的,而是和正常的HTML頁(yè)面一起返回到客戶端,然后在客戶端由瀏覽器將惡意代碼插入到HTML頁(yè)面中并執(zhí)行攻擊。由于此類(lèi)型的XSS攻擊和蠕蟲(chóng)很少或目前還沒(méi)有被發(fā)現(xiàn),因此在本文中不做進(jìn)一步的研究。
(4)XSS蠕蟲(chóng):根據(jù)目前所發(fā)現(xiàn)的XSS蠕蟲(chóng)和對(duì)XSS蠕蟲(chóng)的分析,目前存在的主要是反射性XSS蠕蟲(chóng) (如新浪XSS蠕蟲(chóng)事件等)和存儲(chǔ)型的XSS蠕蟲(chóng) (MySpace蠕蟲(chóng)事件等),XSS蠕蟲(chóng)的工作原理如圖1所示,攻擊者首先利用Web應(yīng)用程序的漏洞 (反射型的或存儲(chǔ)型的)將惡意代碼提交到服務(wù)器中并保存起來(lái),當(dāng)訪問(wèn)用戶瀏覽到包含XSS蠕蟲(chóng)的頁(yè)面時(shí)或點(diǎn)擊到包含XSS蠕蟲(chóng)的鏈接時(shí),用戶瀏覽器就會(huì)自動(dòng)執(zhí)行蠕蟲(chóng)負(fù)載,然后會(huì)以受害用戶的身份向Web應(yīng)用程序發(fā)出復(fù)制傳播的請(qǐng)求,如復(fù)制相應(yīng)的鏈接或用戶資料到受害者的空間或頁(yè)面中,甚至發(fā)送相應(yīng)的請(qǐng)求等其它操作。由于蠕蟲(chóng)復(fù)制傳播需要向服務(wù)器提交相應(yīng)的信息和數(shù)據(jù),因此在正常情況下XSS蠕蟲(chóng)都是通過(guò)POST請(qǐng)求來(lái)完成復(fù)制和傳播操作的,可以說(shuō)提交POST請(qǐng)求是XSS蠕蟲(chóng)復(fù)制傳播所必經(jīng)的一步。
圖1 XSS蠕蟲(chóng)工作原理
針對(duì)以上問(wèn)題的分析,本文提出了一種結(jié)合動(dòng)態(tài)污點(diǎn)分析和HTTP請(qǐng)求與響應(yīng)數(shù)據(jù)包分析處理的方法,并且根據(jù)該方法設(shè)計(jì)了檢測(cè)工具WXDS(web XSS defense system),利用動(dòng)態(tài)污點(diǎn)分析標(biāo)記并跟蹤用戶的敏感信息和隱私數(shù)據(jù),防止惡意程序代碼在用戶不知情的情況下將這些信息發(fā)送到第三方,泄漏用戶隱私信息或敏感數(shù)據(jù),最終造成對(duì)用戶的損失。同時(shí),針對(duì)提交的HTTP請(qǐng)求進(jìn)行攔截分析,分析請(qǐng)求中的POST請(qǐng)求包,對(duì)其進(jìn)行過(guò)濾判斷,如發(fā)現(xiàn)可疑的請(qǐng)求根據(jù)所設(shè)定的警告等級(jí)采取對(duì)于的措施:自動(dòng)處理或及時(shí)向用戶發(fā)出警報(bào),請(qǐng)求用戶予以處理。
動(dòng)態(tài)污點(diǎn)分析是一種程序分析方法,目前廣泛應(yīng)用于各種領(lǐng)域,如:攻擊檢測(cè)、程序理解、信息安全驗(yàn)證等。本文所使用動(dòng)態(tài)污點(diǎn)分析是一種基于動(dòng)態(tài)信息流的污點(diǎn)分析方法,具體為先將特定的信息或輸入數(shù)據(jù) (見(jiàn)表1的信息數(shù)據(jù))定義為敏感數(shù)據(jù)并對(duì)其進(jìn)行標(biāo)記[9-11],同時(shí),對(duì)在程序運(yùn)行時(shí)標(biāo)記數(shù)據(jù)所參與的運(yùn)算進(jìn)行分析處理,根據(jù)預(yù)先設(shè)定的污點(diǎn)分析傳遞方法對(duì)相關(guān)的計(jì)算結(jié)果與依賴關(guān)系添加污點(diǎn)標(biāo)記,將其標(biāo)記為新的污點(diǎn)數(shù)據(jù),于此同時(shí),對(duì)其參與的運(yùn)算亦進(jìn)行動(dòng)態(tài)污點(diǎn)分析,在有輸出時(shí)根據(jù)同源策略進(jìn)行判定,在發(fā)現(xiàn)有標(biāo)記污點(diǎn)的數(shù)據(jù)要發(fā)送到第三方時(shí)對(duì)用戶發(fā)出警報(bào),請(qǐng)求用戶予以處理。
污點(diǎn)數(shù)據(jù)的提取依據(jù)表1中所示,確定污點(diǎn)數(shù)據(jù)的主要依據(jù)是它包含可能被攻擊者利用來(lái)進(jìn)行惡意攻擊或獲取用戶的隱私信息 (如cookie等),列表1中所列數(shù)據(jù)主要是參考的JavaScript權(quán)威指南,如將來(lái)有其它的敏感數(shù)據(jù)源,根據(jù)本文的分析策略亦可以及時(shí)進(jìn)行擴(kuò)展。
當(dāng)某個(gè)敏感數(shù)據(jù)參加某個(gè)算術(shù)、邏輯或賦值運(yùn)算時(shí),被賦予的變量和運(yùn)算結(jié)果也會(huì)被標(biāo)記為污點(diǎn)數(shù)據(jù),同時(shí)該方法也可以標(biāo)記直接控制依賴關(guān)系,即當(dāng)某項(xiàng)操作是否運(yùn)行依賴于某個(gè)污點(diǎn)數(shù)據(jù)時(shí) (如if控制語(yǔ)句的判斷條件是測(cè)試某一個(gè)污點(diǎn)數(shù)據(jù)或switch語(yǔ)句中的匹配問(wèn)題等)。如圖2所示,第3、5行中為賦值運(yùn)算,第6行是算術(shù)運(yùn)算和7-15行中利用switch語(yǔ)句和循環(huán)實(shí)現(xiàn)將cookie的內(nèi)容傳遞到字符串a(chǎn)中的操作,如果僅僅從數(shù)據(jù)依賴的角度看,switch語(yǔ)句結(jié)束后變量a是不會(huì)被標(biāo)記為污點(diǎn)數(shù)據(jù)的。
表1 被污點(diǎn)標(biāo)記的JavaScript屬性和方法
根據(jù)如圖3中的約束,圖2中所示的運(yùn)算運(yùn)行結(jié)束后,變量b、c和a均被標(biāo)記為污染數(shù)據(jù),同時(shí)對(duì)它們之后所參與的其它運(yùn)算繼續(xù)進(jìn)行跟蹤和污點(diǎn)分析。
圖2 污點(diǎn)數(shù)據(jù)運(yùn)算分析
綜上所述,當(dāng)污點(diǎn)數(shù)據(jù)參與如圖3中所示的運(yùn)算后,最終得出的結(jié)果均為污點(diǎn)數(shù)據(jù),并繼續(xù)對(duì)其之后參與的后續(xù)運(yùn)算繼續(xù)進(jìn)行跟蹤分析。
圖3 污點(diǎn)標(biāo)記
用戶正常情況下訪問(wèn)網(wǎng)絡(luò)的HTTP請(qǐng)求分析如下:在正常瀏覽網(wǎng)站頁(yè)面、下載資料等不需要提交用戶信息或其它數(shù)據(jù)等操作時(shí)向服務(wù)器提交GET請(qǐng)求;在進(jìn)行登錄、驗(yàn)證、上傳等需要提交用戶信息或其它數(shù)據(jù)等操作時(shí)向服務(wù)器提交POST請(qǐng)求。
但在以下3種情況下當(dāng)用戶正常情況下瀏覽網(wǎng)站頁(yè)面時(shí)也會(huì)提交POST請(qǐng)求:
(1)某些網(wǎng)站為了記錄用戶的點(diǎn)擊數(shù)、點(diǎn)擊操作或豐富用戶的瀏覽體驗(yàn),會(huì)向網(wǎng)站服務(wù)器提交POST請(qǐng)求。
(2)一些瀏覽器的安裝插件為了統(tǒng)計(jì)某些信息而提交POST請(qǐng)求,如goole、火狐瀏覽器等都有此操作。
(3)XSS攻擊發(fā)送的POST請(qǐng)求,例如XSS蠕蟲(chóng)的自我復(fù)制和傳播。
根據(jù)動(dòng)態(tài)污點(diǎn)分析,在情況 (1)中由于沒(méi)有攜帶污染數(shù)據(jù),并且對(duì)用戶的正常操作沒(méi)有影響,因此在默認(rèn)情況下可以放行,但是在 (2)中情況下由于提交的POST請(qǐng)求和用戶訪問(wèn)的頁(yè)面不違反同源策略,動(dòng)態(tài)污點(diǎn)分析不會(huì)對(duì)此予以發(fā)出警報(bào),因此這時(shí)就需要用戶手動(dòng)判別是否允許提交其對(duì)應(yīng)的POST請(qǐng)求。
在用戶進(jìn)行登錄、驗(yàn)證和上傳數(shù)據(jù)等發(fā)送POST請(qǐng)求的情況下需要輸入一定的數(shù)據(jù)信息,例如:用戶名、密碼、標(biāo)題、上傳或傳輸一些數(shù)據(jù)等,此時(shí)可以通過(guò)JavaScript判斷是否有用戶的輸入行為等操作,從而判斷此POST請(qǐng)求是否為用戶的意愿行為。此外,由于 (1)和 (2)中的情況雖然不存在攻擊情況但侵犯了用戶的訪問(wèn)隱私,因此可根據(jù)用戶的個(gè)人意愿予以放行或阻止。
由上述可以看出基于動(dòng)態(tài)污點(diǎn)分析的技術(shù)使得用戶的隱私信息和敏感數(shù)據(jù)不被XSS攻擊獲得,同時(shí)WXDS可以判斷出2.2中 (1)中的情況,減少對(duì)用戶使用操作的復(fù)雜度和難度,并且在防止XSS蠕蟲(chóng)方面,本文采用的是直接截?cái)郮SS蠕蟲(chóng)復(fù)制傳播所必需的POST請(qǐng)求,而不是針對(duì)某一個(gè)或某一類(lèi)蠕蟲(chóng)的特定行為特征,因此此種方法具有檢測(cè)防范0-Day XSS蠕蟲(chóng)的能力。同時(shí)由于WXDS具有動(dòng)態(tài)跟蹤分析功能,因此對(duì)于防范未來(lái)的XSS蠕蟲(chóng)可能對(duì)用戶產(chǎn)生危害如竊取用戶信息、欺騙用戶進(jìn)行某種操作等方面具有一定的防御功能,對(duì)向未來(lái)XSS蠕蟲(chóng)的防范具有良好的可擴(kuò)展性。
本次實(shí)驗(yàn)是在虛擬機(jī)VMware Workstation v9.0.1中進(jìn)行,為了檢驗(yàn)WXDS對(duì)XSS攻擊的防范效果及其準(zhǔn)確性,本文在互聯(lián)網(wǎng)上收集了15種常見(jiàn)的XSS攻擊腳本,并且自行制作了包含XSS漏洞訪問(wèn)各種敏感信息的網(wǎng)站來(lái)進(jìn)行訪問(wèn)實(shí)驗(yàn)分析,同時(shí)為了測(cè)試誤報(bào)率,本文通過(guò)對(duì)實(shí)驗(yàn)結(jié)果和網(wǎng)站代碼進(jìn)行人工分析,針對(duì)這些網(wǎng)站的檢測(cè)率和誤報(bào)率分析結(jié)果如表2所示,分析結(jié)果顯示W(wǎng)XDS的誤報(bào)率是比較低的。
雖然所采用的目標(biāo)網(wǎng)站和XSS攻擊腳本的樣本均有所不同,但所采用的實(shí)驗(yàn)環(huán)境、統(tǒng)計(jì)計(jì)算方法和策略均是一般,因此,是可以對(duì)WXDS和文獻(xiàn)[3]中的StopXSS進(jìn)行檢測(cè)率和誤報(bào)率的相關(guān)對(duì)比的。由表2可知,顯然WXDS的誤報(bào)率低于文獻(xiàn)[3]中設(shè)計(jì)的監(jiān)測(cè)工具StopXSS的0.32的誤報(bào)率。
表2 XSS的檢測(cè)率和誤報(bào)率
為了測(cè)試在瀏覽器中安裝WXDS是否會(huì)影響用戶瀏覽網(wǎng)站的體驗(yàn)效果,本文以用戶比較熟悉的百度和淘寶網(wǎng)為例進(jìn)行實(shí)驗(yàn),分別打開(kāi)百度和淘寶網(wǎng),記錄其打開(kāi)所用的時(shí)間,采用十次測(cè)試匯總計(jì)算,實(shí)驗(yàn)結(jié)果如圖4所示。由圖4可知在安裝WXDS和未安裝WXDS的情況下打開(kāi)網(wǎng)站頁(yè)面的速度相差無(wú)幾,即在安裝WXDS的情況下并不會(huì)對(duì)用戶的正常上網(wǎng)的訪問(wèn)速度造成重大影響。
對(duì)蠕蟲(chóng)的防范,本文在自制的Web應(yīng)用程序中建立了兩個(gè)用戶Jack和Mary,基本配置如圖5所示,其中Jack為攻擊者,他在自己的主頁(yè)中的“個(gè)人資料”中注入了經(jīng)過(guò)修改的Samy XSS蠕蟲(chóng)修改代碼并成功保存,當(dāng)Mary使用安裝有WXDS擴(kuò)展的瀏覽器在訪問(wèn)Jack的頁(yè)面信息的個(gè)人資料欄時(shí)彈出如圖6所示的警示框。而此時(shí)Mary只是瀏覽頁(yè)面,顯然并不需要提交POST請(qǐng)求,因此可取消該此POST請(qǐng)求。
圖4 訪問(wèn)百度和人人網(wǎng)的網(wǎng)速對(duì)比
圖5 實(shí)驗(yàn)環(huán)境配置
通過(guò)對(duì)XSS攻擊以及由其所衍生的XSS蠕蟲(chóng)的危害分析,本文提出了基于動(dòng)態(tài)污點(diǎn)分析和HTTP請(qǐng)求數(shù)據(jù)包截獲分析處理相結(jié)合的XSS防范方法,實(shí)驗(yàn)分析結(jié)果表明,該方法可以有效發(fā)現(xiàn)和防范XSS攻擊和XSS蠕蟲(chóng)的侵犯。
但是本文所提出的方法系統(tǒng)還有一部分是基于手動(dòng)的,這就要求用戶對(duì)網(wǎng)絡(luò)情況和HTTP請(qǐng)求等相關(guān)知識(shí)具有相當(dāng)?shù)牧私獠拍茏龀鰷?zhǔn)確的判斷,因此,對(duì)使用用戶提高了要求。另外對(duì)未來(lái)XSS蠕蟲(chóng)的發(fā)展和變異等方面還有待進(jìn)一步的研究和防范??傊?,實(shí)現(xiàn)自動(dòng)化的檢測(cè)防范是下一步所研究的工作重點(diǎn),然后在此基礎(chǔ)上再對(duì)XSS蠕蟲(chóng)的變種進(jìn)行研究和防范。
[1]Wichers D.The top 10 most critical web application security risk[R].Belgium:The Open Web Application Security Project(OWASP),2010.
[2]Faghani M,Saidi H.Social networks’XSSworms[C]//International Conference on Computational science and Engieering.Vancouver,Canada:IEEE Computer Society,2009:1137-1141.
[3]WANG Xiali,ZHANG Yuqing.A behavior-based client defense scheme against XSS[J].Journal of Graduate University of Chinese Academy of Sciences,2011,28(5):668-675(in Chinese).[王夏莉,張玉清.一種基于行為的XSS客戶端防范方法[J].中國(guó)科學(xué)院研究生院學(xué)報(bào),2011,28(5):668-675.]
[4]Vogt P.Cross site scripting(XSS)attack prevention with dynamic data tainting on the client side[D].Vienna:Technical University of Vienna,2006.
[5]ZHANG Ming,SHIYong.Research on cross-site scripting protection with constraint analysis[J].Computer Engineering and Design,2013,34(4):1192-1196(in Chinese).[章明,施勇.基于約束分析的跨站腳本防御方法研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2013,34(4):1192-1196.]
[6]CHEN Jingfeng,WANG Yiding,ZHANG Yuqing,et al.Automatic generation of attack vectors for stored-XSS[J].Journal of Graduate University of Chinese Academy of Sciences,2012,29(6):815-820(in Chinese).[陳景峰,王一丁,張玉清,等.存儲(chǔ)型XSS攻擊向量自動(dòng)化生成技術(shù) [J].中國(guó)科學(xué)院研究生院學(xué)報(bào),2012,29(6):815-820.]
[7]Fogie S,Hansen R,Rager A,et al.XSS attacks:Cross site scripting exploits and defense[M].New York:SyngressMedia,2007.
[8]Sun F,Xu L,Su Z.Client-side detection of XSSworms bymonitoring payload propagation[C]//Proceeding of the 14th European Conference on Research in Computer Security.Saint-Malo,F(xiàn)rance:ACM,2009:539-554.
[9]LU Kaikui.The research and realizetion of dynamic taint analysis based security attack detection technology[D].Chengdu:University of Electronoc Science and Technology of China,2010(in Chinese).[陸開(kāi)奎.基于動(dòng)態(tài)污點(diǎn)分析的漏洞攻擊檢測(cè)技術(shù)研究與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2013.]
[10]QIN Ying.Research and implementation of behavior-based crosssite scripting attack detection technique[D].Xi'an:Xidian University,2010(in Chinese).[秦英.基于行為的跨站腳本攻擊檢測(cè)技術(shù)研究與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2010.]
[11]ZHOU Ling.Technology research of dynamic taint analysis based on information flow [D].Chengdu:University of Electronoc Science and Technology of China,2010(in Chinese).[周凌.基于信息流的動(dòng)態(tài)污點(diǎn)分析技術(shù)研究[D].成都:電子科技大學(xué),2010.]