国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

瀏覽器中攔截Web攻擊的研究

2015-07-21 14:19王麗錢文祥

王麗++錢文祥

摘要:瀏覽器是互聯(lián)網(wǎng)的重要入口,其脆弱性直接影響到用戶數(shù)據(jù)和財(cái)產(chǎn)的安全。本文在分析跨站腳本攻擊、跨站請求攻擊以及點(diǎn)擊劫持的攻擊方法和成因的基礎(chǔ)上,提出相應(yīng)的動態(tài)檢測和攔截方式,從而加強(qiáng)瀏覽器的安全性。通過使用WebBrowser控件實(shí)現(xiàn)自定義瀏覽器,載入網(wǎng)頁腳本預(yù)過濾等相關(guān)模塊,實(shí)現(xiàn)防御功能。相關(guān)實(shí)驗(yàn)證明,本方案將有效提升瀏覽器安全性,減少網(wǎng)絡(luò)風(fēng)險。

關(guān)鍵詞:攻擊識別;瀏覽器安全;動態(tài)檢測

中圖分類號:TP391文獻(xiàn)標(biāo)志碼:A

文章編號:1672-1098(2015)01-0060-04

微軟推出Internet Explorer 3之時便同時開放了WebBrowser給開發(fā)者使用,開發(fā)者可以在自己的程序中使用WebBrowser控件以實(shí)現(xiàn)與瀏覽器類似的功能。

截至2014年,服役13年之久的Internet Explorer 6由于安全性不足引發(fā)了人們的關(guān)注。微軟也多次勸告用戶升級至更高版本的瀏覽器。在版本6之后的瀏覽器中,Internet Explorer一直在增添新的安全功能。Internet Explorer 8中,微軟加入了基于請求字串的XSS檢測功能和對反點(diǎn)擊劫持的HTTP頭的支持;之后,Internet Explorer 9、10、11幾個版本加入了進(jìn)程層面的安全特性,例如加入硬件執(zhí)行保護(hù)、代碼地址隨機(jī)化、安全異常處理鏈以及瀏覽器的64位化。但是瀏覽器作為腳本宿主,針對腳本攻擊卻沒有更多的安全提升。因此,為了用戶的數(shù)據(jù)安全,有必要為其定制安全功能。

1攻擊檢測

由于網(wǎng)頁中代碼和數(shù)據(jù)的界限不明,導(dǎo)致了很多注入類的攻擊手段,針對腳本注入的跨站腳本請求攻擊(Cross Site Scripting,XSS,由于和層疊樣式表縮寫一樣,被改稱為XSS)。而瀏覽器自身的實(shí)現(xiàn),將導(dǎo)致表示層的攻擊,利用視覺欺騙的攻擊點(diǎn)擊劫持則是這類攻擊。而網(wǎng)站自身實(shí)現(xiàn)的不完善,則將導(dǎo)致其他針對網(wǎng)站的攻擊,例如瀏覽器中可以實(shí)現(xiàn)的跨域請求偽造(Cross Site Request Forgery,CSRF)。

而超文本標(biāo)記語言是一個語法寬松的語言,在HTML標(biāo)簽的“屬性=值”對中,有很多字符會被瀏覽器丟棄,即使加入了也不影響執(zhí)行。Internet Explorer支持的VBScript和Javascript中,存在更多的編碼方式。由于對腳本的支持,字符和函數(shù)還可以通過Javascript的重載和庫函數(shù)、系統(tǒng)事件、對象強(qiáng)制轉(zhuǎn)換等方式獲得。

1.1XSS的動態(tài)檢測

由于XSS屬于腳本注入,而且由于瀏覽器支持信息的多樣化,攻擊者注入的腳本采用普通字符比對方式將難以檢測。因此,將采用正則表達(dá)式,在用戶發(fā)出請求時進(jìn)行動態(tài)檢測并修正。

程序?qū)⒃贗nternet Explorer自帶的檢查之外再次做額外的檢查。主要檢測方式是針對請求字串在正文寫入的位置進(jìn)行判斷,對非文本節(jié)點(diǎn)通過Boost庫的TR1正則表達(dá)式引擎對請求內(nèi)容進(jìn)行正則匹配,實(shí)現(xiàn)掃描。通過導(dǎo)出mshtml.dll中的字符串組,可以得到Internet Explorer自帶的庫,對其自帶的庫進(jìn)行判斷分析之后,可以知道其無法防御的攻擊方法,接著,針對這些內(nèi)容完善補(bǔ)充正則表達(dá)式即可防御攻擊者的防御。

使用時,如果用戶訪問的請求匹配到了正則表達(dá)式,那么提示用戶可以選擇過濾或是繼續(xù)訪問。如果用戶選擇過濾,程序?qū)討B(tài)刪除攻擊向量,達(dá)到動態(tài)清除攻擊向量的作用。新增的正則表達(dá)式如表1所示。

表1新增的正則表達(dá)式

正則表達(dá)式作用

(j|&[#()\[\].]x{0,1}0*(74|4a|106|6a);?)[\t]*(a|&[#()\[\].]x{0,1}0*(65|41|97|61);?)[\t]*(v|&[#()\[\].]x{0,1}0*(86|56|118|76);?)[\t]*(a|&[#()\[\].]x{0,1}0*(65|41|97|61);?)[\t]*(s|&[#()\[\].]x{0,1}0*(83|53|115|73);?)[\t]*(c|&[#()\[\].]x{0,1}0*(67|43|99|63);?)[\t]*(r|&[#()\[\].]x{0,1}0*(82|52|114|72);?)[\t]*(i|&[#()\[\].]x{0,1}0*(73|49|105|69);?)[\t]*(p|&[#()\[\].]x{0,1}0*(80|50|112|70);?)[\t]*(t|&[#()\[\].]x{0,1}0*(84|54|116|74);?)[\t]*(:|(&[#()\[\].]x?0*((58)|(3A));?)).

過濾所有javascript:開頭的腳本和它的一切變形形式,包括八進(jìn)制、十六進(jìn)制和HTML實(shí)體編碼的轉(zhuǎn)※。

(v|&[#()\[\].]x{0,1}0*(86|56|118|76);?)[\t]*(b|&[#()\[\].]x{0,1}0*(66|42|98|62);?)[\t]*(s|&[#()\[\].]x{0,1}0*(83|53|115|73);?)[\t]*(c|&[#()\[\].]x{0,1}0*(67|43|99|63);?)[\t]*(r|&[#()\[\].]x{0,1}0*(82|52|114|72);?)[\t]*(i|&[#()\[\].]x{0,1}0*(73|49|105|69);?)[\t]*(p|&[#()\[\].]x{0,1}0*(80|50|112|70);?)[\t]*(t|&[#()\[\].]x{0,1}0*(84|54|116|74);?)[\t]*(:|(&[#()\[\].]x?0*((58)|(3A));?)).endprint

過濾所有vbscript:開頭的腳本和它的一切變形形式,包括八進(jìn)制、十六進(jìn)制和HTML實(shí)體編碼的轉(zhuǎn)※。

[\S\s]*?<[-\{\}\[\]:;?/a-zA-Z0-9=+ \t\"\'`\n]+?[ /]{1}style[ \t]*=[ \t]*[\"'`]*[\S\s]+?[\n\t]*:[ \\t]*(e|E|\\(0)*45|\\(0)*65)+?[ \\\t\n]*(x|X|\\(0)*58|\\(0)*78)+?[ \\\t\n]*(p|P|\\(0)*50|\\(0)*70)+?[ \\\t\n]*(r|R|\\(0)*52|\\(0)*72)+?[ \\\t\n]*(e|E|\\(0)*45|\\(0)*65)+?[ \\\t\n]*(s|S|\\(0)*53|\\(0)*73)+?[ \\\t\n]*(s|S|\\(0)*53|\\(0)*73)+?[ \\\t\n]*(i|I|\\(0)*49|\\(0)*69)+?[ \\\t\n]*(o|O|\\(0)*4F|\\(0)*6F)+?[ \\\t\n]*(n|N|\\(0)*4E|\\(0)*6E)+?[ \\\t\n]*(\()+?.*\).*[\S\s]+?>[\S\s]*?過濾帶有style屬性而且style中有expression表達(dá)式的標(biāo)簽。同時過濾expression和它的一切變形形式,包括IE兼容的所有樣式表轉(zhuǎn)義符以及空格、縮進(jìn)符號等。

1.2CSRF的動態(tài)檢測

CSRF屬于網(wǎng)站側(cè)的實(shí)現(xiàn)缺陷,因此,瀏覽器只能協(xié)助減少危害,而并不能保證消除所有危害。CSRF攻擊主要依靠同源準(zhǔn)則來檢測,程序不僅會應(yīng)用較為嚴(yán)格的同源策略,還會對請求實(shí)體進(jìn)行XSS檢查,使用的XSS判斷方式如上節(jié)所述。之所以加上這類檢測是因?yàn)镮E自帶的XSS過濾器其實(shí)只會對GET請求進(jìn)行檢查,而POST XSS在某種程度上也是一個危害較大的攻擊方式,尤其是配合上CSRF,一樣可以達(dá)到同樣的危害。所以,如果瀏覽器的POST請求中發(fā)現(xiàn)了XSS攻擊代碼,瀏覽器將同樣會對POST的實(shí)體部分進(jìn)行凈化,然后詢問用戶是將POST轉(zhuǎn)換為GET請求,還是將POST丟棄。軟件的同源判斷邏輯如表2所述。

表2軟件的同源判斷邏輯

規(guī)則例子級別

一級域名相同其他不同均可http://1.MYSITE.com/https://2.MYSITE.com:81/在此模式下認(rèn)為同源寬松模式

一級域名相同協(xié)議相同端口相同其他不同均可http://1.MYSITE.com/http://2.MYSITE.com/在此模式下認(rèn)為同源普通模式

域名相同協(xié)議相同端口相同(互聯(lián)網(wǎng)標(biāo)準(zhǔn)的同源判定)http://A.MYSITE.com/1http://A.MYSITE.com/2在此模式下認(rèn)為同源嚴(yán)格模式

1.3點(diǎn)擊劫持的動態(tài)檢測

在瀏覽器中有一個特性,即如果樣式表中存在opacity屬性,那么元素在瀏覽器中顯示的順序?qū)⒉粫僖云鋤-index大小來判定,而是使用一個特殊的判斷邏輯:誰的opacity大,誰顯示的時候排在前面。

但是,同一個位置的元素的事件接受函數(shù)將依然使用z-index來判斷,如果一個位置上有多個元素,而這個位置上發(fā)生了某個事件,那么這個位置上的元素中誰的z-index大,誰就會接收到這個事件。

因此,要實(shí)施點(diǎn)擊劫持攻擊,攻擊者最容易的是只通過iframe框架的方式來加載被害網(wǎng)站,而且通常是設(shè)置iframe全透明或者透明度非常大,以至于幾乎無法看見,通常是0%~1%的情況比較多。然后,在iframe上方覆蓋一層虛假頁面,例如“點(diǎn)擊某處開始游戲”的頁面,而要求用戶點(diǎn)擊的地方實(shí)際上覆蓋在下方iframe中一些敏感位置,例如微博的“關(guān)注”按鈕等位置。

因此,攻擊者攻擊時,只需要指定下方iframe的樣式為高z-index和低opacity,給自己偽造的內(nèi)容的樣式指定為低z-index和高opacity,那么就可以創(chuàng)建一個點(diǎn)擊劫持頁面。

點(diǎn)擊劫持頁面的特性也正是檢測的突破口所在。通過遍歷元素的樣式表,找到存在opacity屬性的iframe,并對其進(jìn)行邏輯檢查,從而以最小的報(bào)警次數(shù)獲得較為準(zhǔn)確的判定結(jié)果,發(fā)現(xiàn)攻擊后,程序?qū)h除元素的透明元素,從而將真實(shí)頁面內(nèi)容展現(xiàn)給用戶。

2程序效率和分析

用系統(tǒng)函數(shù)可以得到較為精準(zhǔn)的時間量,測試中選用CPU時間/CPU時鐘頻率來獲取經(jīng)過時間。據(jù)此可以得出算法從開始處理數(shù)據(jù)到處理結(jié)束(不包括對話框彈出的等待時間)額外消耗的時間。試驗(yàn)3次,取平均值,得出耗時數(shù)據(jù)如表3所示。

表3基準(zhǔn)耗時測試結(jié)果

模塊時間1/ms時間2/ms時間3/ms平均時間測試網(wǎng)站頁面完全載入時間/s占頁面載入時間比例/%

XSS檢測835.7×10-31.019994.8×10-3949.8×10-3

CSRF檢測24.5 19.524.222.7

Clickjacking檢測351.5×10-3298.4×10-3354.1×10-3334.7×10-3百度新聞1.761

0.000 541.290.000 19

需要注意的是,頁面完全載入時間指頁面完全下載的時間,不包括DOM樹渲染的時間。網(wǎng)絡(luò)時間采用IE的開發(fā)人員工具。

安全模塊對用戶瀏覽時產(chǎn)生的可感知的影響極小,也即用戶幾乎無法感知到模塊加載前后瀏覽時間上的差異,從而不會產(chǎn)生由于用戶覺得安全模塊過于拖慢顯示速度從而關(guān)閉安全模塊的事情。安全模塊的執(zhí)行效率也會因此直接影響用戶瀏覽網(wǎng)頁時的安全性。

而需要大量操作元素的Clickjacking模塊,事實(shí)上并不會對用戶瀏覽造成影響。因?yàn)楣粽吖魹g覽器時產(chǎn)生的頁面元素通常都非常少,否則將不利于攻擊代碼的傳播,因此過濾時大部分都將僅對大約20個左右的元素進(jìn)行操作。endprint

而IE瀏覽器在實(shí)現(xiàn)直接通過IHTMLDOMNode接口操作瀏覽器元素的方法時,其做的具體操作是,將對應(yīng)的DOM節(jié)點(diǎn)從IE的節(jié)點(diǎn)二叉伸展樹上移除,然后將元素對應(yīng)的類從內(nèi)存中刪除。這一操作具體實(shí)現(xiàn)起來資源開銷是十分少的。

以下測試結(jié)果是在程序冷啟動(開機(jī)后第一次運(yùn)行)下,開啟對應(yīng)標(biāo)簽后5秒時的資源情況。每個標(biāo)簽的占用數(shù)據(jù)均包括標(biāo)簽和主程序,用后者減去前者除以標(biāo)簽差量得出單個標(biāo)簽的占用,最終全部加起來除以總標(biāo)簽差量得到平均每個標(biāo)簽的占用。后單頁內(nèi)存消耗方法與此相同,內(nèi)存增量測試結(jié)果如表4所示。

表4內(nèi)存占用增量測試結(jié)果KB

模塊1標(biāo)簽程序占用內(nèi)存總量3標(biāo)簽程序占用內(nèi)存總量5標(biāo)簽程序占用內(nèi)存總量平均每個標(biāo)簽的占用測試網(wǎng)站單頁內(nèi)存消耗相對內(nèi)存增量

XSS檢測15,78427,94038,6365,715

CSRF檢測16,29630,00837,9165,405

Clickjacking檢測16,64430,10839,2725,657百度首頁5,313

+398+92+344

標(biāo)簽內(nèi)占用的內(nèi)存大部分是由IE窗口導(dǎo)致的,而相對內(nèi)存增量則是保護(hù)模塊和IE自身共同作用帶來的增量,這可以部分反應(yīng)模塊對瀏覽時內(nèi)存增加所帶來的貢獻(xiàn)。

瀏覽器自身就是一個資源密集型程序,如果模塊貢獻(xiàn)了過多的內(nèi)存增量,那么對用戶使用來說將是不利的。但是上述測試可以發(fā)現(xiàn)安全模塊并沒有貢獻(xiàn)出過多的內(nèi)存占用。

在日常使用過程中內(nèi)存占用是有一定波動的,在實(shí)際測試和理論驗(yàn)證中內(nèi)存增量并不會太多。事實(shí)證明這還是一個簡單易行而且對用戶機(jī)器資源消耗較少的方法。

控制內(nèi)存增加的主要辦法是,盡量多利用棧上內(nèi)存,必要時才在堆中分配,因?yàn)闂I蟽?nèi)存結(jié)構(gòu)簡單,不像堆中各個堆塊數(shù)據(jù)都有不少字節(jié)用于維護(hù)堆表信息。而這兩種內(nèi)存都將在函數(shù)函數(shù)結(jié)束時及時釋放,所以對用戶來說,內(nèi)存只是一個短期的增長。而一段時間后內(nèi)存不斷增長主要還是因?yàn)镮E自身的實(shí)現(xiàn)機(jī)制,與模塊并無多大聯(lián)系。因此本保護(hù)模塊可以實(shí)現(xiàn)使用少量內(nèi)存占用實(shí)現(xiàn)安全功能。

3 結(jié)語

瀏覽器中添加安全模塊是一種自由、可定制的輕便服務(wù)形式。同時,采用模塊化的防護(hù)函數(shù)可以保證在現(xiàn)今產(chǎn)品主程序迭代較慢的情況下達(dá)到產(chǎn)品的迅速迭代性,進(jìn)而可以及時防御互聯(lián)網(wǎng)攻擊,具有十分重要的現(xiàn)實(shí)性意義,這是目前產(chǎn)品開發(fā)所流行推崇的研究開發(fā)方向。

對互聯(lián)網(wǎng)上存在的攻擊,在瀏覽器層面給用戶添加一層額外的保障,可以讓用戶在瀏覽互聯(lián)網(wǎng)時更加安心、省心。同時,人性化的設(shè)計(jì)也可以照顧到各個層次的互聯(lián)網(wǎng)使用者,瀏覽器可以在安全和易用性上可以做到一個好的平衡點(diǎn)。隨著互聯(lián)網(wǎng)的進(jìn)步和技術(shù)水平的提高,在未來,可以預(yù)見的是將有更多的互聯(lián)網(wǎng)威脅,同時也會有更多的安全保護(hù)措施的誕生,安全防護(hù)意在提升黑客攻擊的門檻,同時給予用戶更好的互聯(lián)網(wǎng)瀏覽體驗(yàn),從而推動整個行業(yè)的發(fā)展。

參考文獻(xiàn):

[1]CHRISTIAN KANAMUGIRE.A Client-Side Solution Against Session Hijacking Through Xss Attacks[D].長沙:中南大學(xué),2012.

[2]溫凱,郭帆,余敏. 自適應(yīng)的Web攻擊異常檢測方法[J].計(jì)算機(jī)應(yīng)用,2012(7):2 003-2 006.

[3]徐少培,姚崎. 基于操作劫持模式的Web攻擊與防御技術(shù)研究[J].信息安全與通信保密,2011(1):86-89.

[4]張偉,吳灝,鄒郢路. 針對基于編碼的跨站腳本攻擊分析及防范方法[J].小型微型計(jì)算機(jī)系統(tǒng),2013(7):1 615-1 619.

[5]WADE ALCORN, CHRISTIAN FRICHOT,MICHELE ORR.The Browser Hackers Handbook[M] .America:John Wiley & Sons, Inc.,2014.

[6]MICHAL ZALEWSKI.Web之困——現(xiàn)代Web應(yīng)用安全指南[M] .北京:機(jī)械工業(yè)出版社,2014.

[7]MICHAEL SUTTON,ADAM GREENE, PEDRAM AMINI.模糊測試——強(qiáng)制性安全漏洞發(fā)掘[M]. 北京:機(jī)械工業(yè)出版社,2009.

[8]PACO HOPE,BEN WALTBER.Web Security Testing Cookbook[M] .America:OReilly Media, 2008.

[9]王文君,李建榮.Web應(yīng)用安全威脅與防治-基于OWASP Top 10與ESAPI[M] .北京:電子工業(yè)出版社, 2009.

(責(zé)任編輯:李麗)endprint

平遥县| 深水埗区| 武邑县| 新宾| 岳阳市| 乌兰浩特市| 松江区| 历史| 龙南县| 苗栗县| 仙居县| 洛扎县| 景东| 台北县| 庆安县| 绥芬河市| 含山县| 鹤山市| 达州市| 北碚区| 沁阳市| 哈尔滨市| 杭锦后旗| 娱乐| 镇坪县| 通城县| 万全县| 乡城县| 南城县| 黄陵县| 商水县| 疏附县| 仪征市| 元阳县| 肥东县| 奉节县| 杂多县| 武义县| 鹤岗市| 阳朔县| 长寿区|