徐博文 劉春暉 曹維華 陸小銘
(中國(guó)電信廣州研究院 廣東 510630)
Web2.0的發(fā)展為互聯(lián)網(wǎng)帶來了豐富的Web聚合應(yīng)用,給用戶帶來了前所未有的體驗(yàn),但是由 Web2.0技術(shù)帶來的安全問題也日益凸顯,跨站腳本攻擊(Cross-Site Scripting,簡(jiǎn)稱XSS)是其中的重要安全問題之一。研究表明[1],最近幾年XSS已經(jīng)超過緩沖區(qū)溢出成為最流行的攻擊方式。隨著基于B/S的Web應(yīng)用的流行,以及開放授權(quán)協(xié)議如Oauth成為互聯(lián)網(wǎng)標(biāo)準(zhǔn)協(xié)議,以實(shí)時(shí)獲取用戶數(shù)據(jù)、修改用戶配置和進(jìn)行非授權(quán)操作為目的的Web實(shí)時(shí)會(huì)話劫持攻擊又得到黑客的青睞,類似攻擊事件不斷出現(xiàn),例如2011年網(wǎng)絡(luò)上出現(xiàn)了針對(duì)Google、Yahoo、Hotmail等用戶帳戶的Web實(shí)時(shí)會(huì)話劫持攻擊,攻擊目標(biāo)直指Oauth認(rèn)證服務(wù),給用戶造成巨大損失[2]。
Web實(shí)時(shí)會(huì)話劫持攻擊是XSS攻擊的一種應(yīng)用方式,業(yè)界研究 XSS攻擊技術(shù)起步較早,Grossman等在文獻(xiàn)[3]中詳細(xì)介紹了XSS漏洞形成原因以及各種類型的XSS攻擊和防范技術(shù);文獻(xiàn)[4]介紹了如何利用XSS攻擊實(shí)現(xiàn)用戶會(huì)話偷取和重放的技術(shù),而更多的研究如文獻(xiàn)[5-6]集中在研究如何通過客戶端腳本過濾技術(shù),以及引入安全機(jī)制限制腳本讀取用戶關(guān)鍵信息等方法防范 XSS攻擊。筆者查閱了大量文獻(xiàn)發(fā)現(xiàn),專門研究 Web實(shí)時(shí)會(huì)話劫持技術(shù)的文章非常少,從整體上看,大多是簡(jiǎn)單介紹技術(shù)原理,尚未發(fā)現(xiàn)針對(duì)該技術(shù)應(yīng)用特點(diǎn)和應(yīng)用環(huán)境的研究,由于近來此類攻擊不斷被發(fā)現(xiàn)和提及,在一些技術(shù)論壇上又出現(xiàn)關(guān)于該類型攻擊的討論。本文從 XSS漏洞攻擊出發(fā),詳細(xì)分析了通過腳本技術(shù)劫持用戶實(shí)時(shí)會(huì)話在用戶 Web瀏覽器環(huán)境下開展攻擊的方法,依據(jù)其技術(shù)特點(diǎn)和技術(shù)應(yīng)用環(huán)境,提出了狹義攻擊生命期和廣義攻擊生命期的概念,通過3個(gè)攻擊生命期模型的分析,指出了 Web實(shí)時(shí)會(huì)話劫持攻擊在社會(huì)工程學(xué)應(yīng)用和漏洞點(diǎn)挖掘方面獨(dú)具的特征,最后有針對(duì)性地提出了綜合防范措施。
XSS攻擊是最常見的一種應(yīng)用層的攻擊,可以使用各種客戶端語言實(shí)現(xiàn)。當(dāng)XSS攻擊發(fā)生時(shí),攻擊腳本被注入到客戶端瀏覽器的解釋過程中執(zhí)行,攻擊者可以捕獲用戶的會(huì)話并在其他環(huán)境下重放[3],實(shí)現(xiàn)對(duì)web應(yīng)用的授權(quán)訪問。
由XSS漏洞觸發(fā)的Web實(shí)時(shí)會(huì)話劫持攻擊并不操作用戶的會(huì)話信息,而是直接在客戶端瀏覽器的環(huán)境中執(zhí)行攻擊腳本,通過AJAX(Asynchronous JavaScript and XML,異步JavaScript與XML)技術(shù)模擬用戶操作訪問用戶數(shù)據(jù),完成對(duì)用戶關(guān)鍵數(shù)據(jù)的竊取。由于腳本被注入到用戶會(huì)話環(huán)境下執(zhí)行,根據(jù)cookie訪問控制規(guī)則和同源策略[7],當(dāng)AJAX的XMLHttpRequest請(qǐng)求發(fā)生時(shí),瀏覽器自動(dòng)添加所有緩存的身份信息或者 cookie,服務(wù)端在接收這些請(qǐng)求時(shí)并不能判斷是由用戶操作的還是由攻擊腳本自動(dòng)發(fā)送的。
圖1 實(shí)時(shí)會(huì)話劫持攻擊流程圖
如圖1所示,一個(gè)完整的攻擊流程包括以下5個(gè)步驟:
步驟1.用戶Web瀏覽器訪問Web服務(wù)時(shí)觸發(fā)XSS漏洞導(dǎo)致瀏覽器遠(yuǎn)程訪問存放在攻擊者控制的服務(wù)器上的攻擊腳本。
步驟 2.攻擊腳本被加載到客戶端瀏覽器并在其環(huán)境下執(zhí)行。
步驟 3.攻擊腳本按照設(shè)定的請(qǐng)求邏輯,構(gòu)造XMLHttpRequest異步向Web服務(wù)器提交請(qǐng)求,進(jìn)行訪問用戶隱私數(shù)據(jù)、修改用戶配置、復(fù)制擴(kuò)散等操作。
步驟4.Web服務(wù)器響應(yīng)請(qǐng)求,向客戶端瀏覽器返回用戶數(shù)據(jù)或進(jìn)行攻擊代碼指定操作。
步驟5.攻擊腳本將用戶隱私數(shù)據(jù)回傳到攻擊者控制的服務(wù)器上或清除操作痕跡。
1.3.1 攻擊流程不可控
Web實(shí)時(shí)會(huì)話劫持攻擊是在用戶的Web瀏覽器環(huán)境下進(jìn)行,攻擊者只能操作攻擊代碼按照預(yù)定的程序邏輯執(zhí)行指定動(dòng)作,對(duì)于用戶主動(dòng)性的操作例如刷新頁面、頁面重定向、關(guān)閉頁面等是無法控制的。同時(shí)由于攻擊是以非法訪問用戶隱私數(shù)據(jù)、修改用戶配置、進(jìn)行非授權(quán)操作等為目的的,攻擊代碼自我復(fù)制傳播、訪問Web服務(wù)和回傳數(shù)據(jù)都需要一定的時(shí)間保證。
1.3.2 支持增量任務(wù)模式
對(duì)于以獲取用戶數(shù)據(jù)為目標(biāo)的此類攻擊,在同一頁面內(nèi),如果用戶多次觸發(fā)同一XSS漏洞,攻擊者可以操縱攻擊代碼從上次攻擊任務(wù)結(jié)束點(diǎn),增量完成剩余攻擊任務(wù),例如攻擊代碼通過一個(gè)腳本變量記錄已讀郵件的 id,下次 XSS漏洞觸發(fā)、攻擊代碼加載時(shí)可以將已讀郵件排除,只訪問未讀郵件。
根據(jù)前文分析,代碼效率和代碼運(yùn)行時(shí)間是攻擊效果的決定性因素。攻擊者為了在被動(dòng)狀態(tài)下擴(kuò)大攻擊效果,必須在頁面被關(guān)閉或跳轉(zhuǎn)之前盡量延長(zhǎng)攻擊代碼運(yùn)行的時(shí)間,使攻擊代碼完成更多邏輯操作,獲取更多數(shù)據(jù)。
定義“攻擊生命期”這一概念,攻擊生命期是衡量Web實(shí)時(shí)會(huì)話劫持攻擊破壞程度的一個(gè)重要參數(shù)。狹義攻擊生命期是指某個(gè)頁面存活時(shí)間內(nèi)攻擊代碼運(yùn)行的時(shí)間,廣義攻擊生命期是指一個(gè)會(huì)話期內(nèi)針對(duì)某項(xiàng) Web服務(wù)進(jìn)行的一系列攻擊其攻擊代碼運(yùn)行時(shí)間的總和。
本節(jié)從HTML語言特性、網(wǎng)頁結(jié)構(gòu)特性和Web服務(wù)業(yè)務(wù)設(shè)計(jì)三個(gè)方面,結(jié)合上節(jié)關(guān)于攻擊生命期的定義,構(gòu)造Web實(shí)時(shí)會(huì)話劫持攻擊的3個(gè)攻擊生命期模型展開分析。
(1)時(shí)間線模型(Time-line Model)
時(shí)間線模型用于分析狹義攻擊生命期。Javascript是解釋型而不是編譯型的語言,頁面上的Javascript代碼是HTML文檔的一部分,腳本在被頁面加載時(shí)順序執(zhí)行。
從頁面生存時(shí)間線來看,頁面開始加載到加載結(jié)束之間的周期為頁面生存期Th,腳本代碼的攻擊生命期Ta是從攻擊代碼加載第一句開始執(zhí)行,一直到最后一句執(zhí)行結(jié)束之間的周期(如圖2(a)),或者代碼尚未執(zhí)行完畢而所在頁面已經(jīng)被關(guān)閉退出(Close)或被重定向(Redirect)之間的周期(如圖2(b))。
圖2 頁面生存時(shí)間線和攻擊生命期
根據(jù)時(shí)間線模型,攻擊生命期Ta是頁面生存時(shí)間Th的子集(Th>Ta)。如果頁面生存時(shí)間足夠長(zhǎng),意味著攻擊生命期可以隨之延長(zhǎng),就能夠執(zhí)行更多的腳本,完成更多的攻擊動(dòng)作。
(2)頁面結(jié)構(gòu)模型(Page Structure Model)
在發(fā)生 XSS漏洞的頁面上,攻擊生命期與頁面的結(jié)構(gòu)有關(guān)。以框架結(jié)構(gòu)頁面為例,根頁面(在瀏覽器中打開的頁面)、父框架頁面和子框架頁面三者之間有一定獨(dú)立性,例如子框架頁面的重置并不會(huì)影響父框架或者根頁面的加載過程。
圖3 以框架結(jié)構(gòu)為例的頁面結(jié)構(gòu)模型圖
如圖3所示,XSS漏洞發(fā)生的位置可以是A、B、C任一位置,定義頁面生存期分別為 TA、TB、TC,顯然根頁面的 TA最長(zhǎng)。從生成關(guān)系來講,父元素的頁面生存期決定子元素的頁面生存期(TB>TC);從功能定位來講,子框架常被用作正文信息區(qū)或者交互功能區(qū),常見的Web服務(wù)如論壇和Web郵件系統(tǒng)基本都是類似結(jié)構(gòu)化設(shè)計(jì),查看帖子和閱讀郵件都在子框架中進(jìn)行,刷新、重定向等操作比較頻繁,而父框架作為內(nèi)容鏈接區(qū)互動(dòng)操作較少,子框架的頁面生存期相對(duì)父框架要短(TB>TC)。
基于以上分析,XSS漏洞所在位置也即攻擊腳本代碼被加載的位置非常重要,從頁面生存期長(zhǎng)短的角度,攻擊發(fā)生在上層框架頁面比下層框架頁面的攻擊生命期要長(zhǎng)。如果固定頁面板塊如用戶的簽名欄出現(xiàn)XSS漏洞,由于固定頁面板塊會(huì)出現(xiàn)在每一個(gè)網(wǎng)頁上,XSS漏洞會(huì)被重復(fù)觸發(fā),其廣義攻擊生命期更長(zhǎng),造成的損害更大。
(3)業(yè)務(wù)邏輯模型(Business Logic Model)
Web服務(wù)按照一定業(yè)務(wù)邏輯進(jìn)行組織,比如論壇,需要先訪問板塊,進(jìn)入帖子列表,再訪問具體的某一個(gè)帖子,如果要看其他帖子,則還要返回到帖子列表;郵件系統(tǒng)也一樣,必須先訪問郵件列表才能訪問具體某一封郵件,并且需要經(jīng)常返回郵件列表界面查看新郵件。以某項(xiàng)Web服務(wù)為例構(gòu)造其業(yè)務(wù)邏輯模型圖如下:
圖4 業(yè)務(wù)邏輯模型圖
圖4中,每一個(gè)節(jié)點(diǎn)代表一項(xiàng)具體業(yè)務(wù),箭頭代表業(yè)務(wù)流向,圖中B1節(jié)點(diǎn)箭頭比較集中,表示B1節(jié)點(diǎn)屬于Web服務(wù)業(yè)務(wù)邏輯中相對(duì)中心位置,用戶在訪問其他業(yè)務(wù)節(jié)點(diǎn)時(shí)必須經(jīng)由B1業(yè)務(wù)節(jié)點(diǎn)跳轉(zhuǎn),比如前文提到的論壇的帖子列表頁面。如果B1節(jié)點(diǎn)發(fā)生XSS漏洞導(dǎo)致的實(shí)時(shí)會(huì)話劫持攻擊,用戶在訪問 Web服務(wù)的過程中將多次被動(dòng)觸發(fā)攻擊,導(dǎo)致多次攻擊的疊加,延長(zhǎng)了攻擊生命期,造成較嚴(yán)重的信息泄露危險(xiǎn)。
(4)模型分析結(jié)果在實(shí)際中的應(yīng)用
①社會(huì)工程學(xué)應(yīng)用
在實(shí)際應(yīng)用中,攻擊者為了延長(zhǎng)頁面存活時(shí)間,經(jīng)常使用社會(huì)工程學(xué)方法[8],通過例如推送精彩的頁面內(nèi)容、引入用戶互動(dòng)等方式,吸引用戶更久地停留在觸發(fā)XSS漏洞的頁面上,盡量延長(zhǎng)攻擊生命期,當(dāng)用戶在攻擊者設(shè)計(jì)的頁面上流連忘返的時(shí)候,卻毫無知覺攻擊者已經(jīng)在后臺(tái)借助AJAX技術(shù)大肆獲取隱私數(shù)據(jù)。
②XSS漏洞點(diǎn)挖掘
XSS漏洞點(diǎn)的位置是攻擊生命期長(zhǎng)短的決定性因素之一。在實(shí)際應(yīng)用中,XSS漏洞挖掘者更愿意將XSS漏洞上移,盡量在上層框架結(jié)構(gòu)頁面或者業(yè)務(wù)中心節(jié)點(diǎn)中挖掘XSS漏洞,以獲得更長(zhǎng)的攻擊生命期,此類漏洞引發(fā)的Web實(shí)時(shí)會(huì)話劫持攻擊危害等級(jí)是最高的,例如2012年Yahoo郵件系統(tǒng)Classic版曾經(jīng)發(fā)生針對(duì)郵件列表頁面的類似XSS攻擊[9]。
(1)賬戶信息安全分級(jí)機(jī)制
對(duì)HTTP請(qǐng)求加入驗(yàn)證機(jī)制,比如要求輸入驗(yàn)證碼,可以阻止攻擊代碼自動(dòng)執(zhí)行,但會(huì)降低用戶體驗(yàn)。在Web服務(wù)設(shè)計(jì)中需要建立一個(gè)科學(xué)的賬戶信息安全分級(jí)機(jī)制,對(duì)用戶普通數(shù)據(jù)和隱私數(shù)據(jù)、賬戶常規(guī)設(shè)置和關(guān)鍵設(shè)置等引入不同的驗(yàn)證機(jī)制。例如訪問敏感數(shù)據(jù)要求一次驗(yàn)證碼驗(yàn)證甚至要求重新輸入密碼;如果是關(guān)鍵隱私數(shù)據(jù),則除了網(wǎng)頁驗(yàn)證之外,還要與用戶進(jìn)行脫網(wǎng)交互,比如手機(jī)短信驗(yàn)證等。
(2)客戶端異常行為監(jiān)測(cè)機(jī)制
機(jī)器行為與人的操作不同,惡意腳本為了在攻擊生命期內(nèi)盡量發(fā)出更多的請(qǐng)求,其HTTP請(qǐng)求頻率遠(yuǎn)遠(yuǎn)高于人的正常操作,或者對(duì)Web服務(wù)的訪問規(guī)律與正常用戶相異。因此,引入客戶端異常行為監(jiān)測(cè)機(jī)制是一個(gè)有效防范 Web實(shí)時(shí)會(huì)話劫持攻擊的方法,對(duì) Noxes進(jìn)行改進(jìn)是一個(gè)可行方案,Noxes[10]是一種客戶端Web代理,負(fù)責(zé)過濾用戶的所有HTTP通訊數(shù)據(jù),流經(jīng) Noxes 的 HTTP 請(qǐng)求都需要根據(jù)預(yù)定安全策略進(jìn)行攔截或放行,讓用戶盡可能地掌控瀏覽器的通信行為。在Noxes 的基礎(chǔ)上建立針對(duì)非法訪問頻度和訪問規(guī)律模型的雙重監(jiān)測(cè),發(fā)現(xiàn)異常的 HTTP請(qǐng)求立刻引入人機(jī)交互驗(yàn)證機(jī)制,阻斷異常HTTP請(qǐng)求,或者將異常情況立刻通知用戶,由用戶及時(shí)采取措施減少損失,如關(guān)閉頁面、退出登錄等。
隨著Web2.0技術(shù)的發(fā)展和Web聚合應(yīng)用的普及,XSS漏洞發(fā)生的幾率不斷增加,由XSS漏洞導(dǎo)致的Web實(shí)時(shí)會(huì)話劫持攻擊將給互聯(lián)網(wǎng)帶來嚴(yán)重的安全隱患。本文分析了Web實(shí)時(shí)會(huì)話劫持攻擊生命期模型特點(diǎn),得出了Web實(shí)時(shí)會(huì)話劫持技術(shù)在社會(huì)工程學(xué)應(yīng)用和漏洞點(diǎn)挖掘方面具有典型特征的結(jié)論,并提出了建立賬戶信息安全分級(jí)機(jī)制和客戶端異常行為監(jiān)測(cè)機(jī)制兩項(xiàng)綜合防范措施。今后的研究工作包括在第三方認(rèn)證協(xié)議以及跨域通信需求日益增強(qiáng)的環(huán)境下,針對(duì)Web實(shí)時(shí)會(huì)話劫持攻擊研究更全面的安全防范措施。
[1]Berinato,Scott.Software Vulnerability Disclosure:The Chilling Effect.CSO(CXO Media).January 1,2007:(7).
[2]About 2-step verification.https://support.google.com/acc ounts/answer/180744?hl=en&rd=1[EB/OL],2011.
[3]Jeremiah Grossman,Robert Hansen,Petko D Petkov,et al.Cross site scripting attacks:XSS exploits and defense[M].Burlington:Syngress,2007.
[4]吳耀斌,王科,龍?jiān)兰t.基于跨站腳本的網(wǎng)絡(luò)漏洞攻擊與防范[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2008(01):38-44.
[5]Aayush Gupta,Youngiae Kim.Blueprint:robust prevention of crosssite scripting attacks for existing browsers[C].Security and Privacy,2009 30th IEEE Symposium,Berkely,CA,Aug 2009:331-346.
[6]Gary Wassermann,Su Zhen-dong.Static detection of cross-site scripting vulnerabilities[C].Matthew B Dwyer.Proceedings of the 30th International Conference on Software Engineering,Leipzig,Germany,2008:71-180.
[7]孫建華,劉志容,陳浩.Web聚合應(yīng)用的安全跨域通信機(jī)制[J].通信學(xué)報(bào),2012,33(6):23-33.
[8]Mosin Hasan,Nilesh Prajapati,Safvan Vohara.Case Study On Social Engineering Techniques for Persuasion[DB/LP].International Journal on Applications of Graph Theory in Wireless ad hoc Networks and Sensor Networks,June 2010:(18).
[9]Dan Goodin.Yahoo Mail reportedly loses key customer following mass hack attack[EB/OL].http://arstechnica.com/security/2013/05/yahoo-mail-reportedly-loses-key-customer-following-mass-hack-attack/,2013-06.
[10]Kirda E,Kruegel C,Vigna G,et al.Noxes:a client-side solution for mitigating cross-site scripting attacks[D].Hisham M Haddad.ACM Symposium on Applied Computing,Bourgogne University,Dijon,F(xiàn)rance,2009:330-337.