IE8與點擊綁架和CSRF的攻防戰(zhàn)
原創(chuàng)【51CTO.com 獨家特稿】近些年來,Web安全威脅日益嚴重,跨站腳本攻擊、跨站請求偽造攻擊、點擊劫持攻擊等,層出不窮。我們知道,web安全與瀏覽器 密切相關,因為瀏覽器是web應用的執(zhí)行環(huán)境,就像桌面應用程序跟操作系統(tǒng)的關系相仿。
那么,IE8能否為我們的Web安全帶來一縷清風嗎?
一、Web安全形勢日益嚴峻
據(jù)微軟稱,IE8在開發(fā)過程中就考慮到了已有的和正在浮現(xiàn)的各種Web威脅。
在各種Web應用程序安全性漏洞中,最陰險的漏洞之一 稱為跨站請求偽造(CSRF),人們將其稱為Web漏洞中“沉睡的巨人”,并且這種漏洞修補起來也頗為不易。瀏覽器安全模型的設計思想是允許多個網(wǎng)站同時交互、站點之間可以無縫瀏覽,而CSRF攻擊恰恰就是利用了這一點。
隨著個人數(shù)據(jù)等有價值的信息不斷從最終用戶的PC向流行的Web應用程序遷移,CSRF及其他Web 應用程序漏洞將日益受到人們的關注。
二、XDomainRequest對象應運而生
為了抵抗CSRF攻擊,IE8引入了一個XDomainRequest對象,它在允許以服務器權(quán)限跨域通信的同時還包含一些防御CSRF攻擊的特殊 限制。最終用戶可以通過在不使用web應用的時候退出敏感的網(wǎng)站以及使用InPrivate Browsing會話瀏覽頁面來減輕CSRF攻擊的影 響,因為InPrivate會話會清空Cookie,所以無法通過CSRF攻擊來替換緩存的Cookie。
然而,Web應用程序本身必須設計成能夠防御CSRF攻擊。設計良好的Web應用程序經(jīng)常通過挑戰(zhàn)/令牌或者類似的策略來檢查非受害 者用戶本意發(fā)出的惡意請求來自我保護。遺憾的是,挑戰(zhàn)/令牌和類似的策略本身卻受到某些漏洞的影響,其中第一種漏洞是跨站 點腳本攻擊(XSS)。如果一個由令牌保護的Web應用程序包含一個跨站點腳本攻擊安全漏洞,那么它很可能會由于安全令牌失竊而導致CSRF攻擊。
幸運的是,IE8包含一個XSS過濾器和一些其他功能,可以幫助抵御XSS攻擊,從而降低令牌失竊的幾率。除此之外,還可以利用點擊劫持來協(xié)助實施CSRF攻擊。點擊劫持可以使用戶在不知不覺中單擊一個模糊的或者隱藏的web元素,從 而導致非本意的處理。一次成功的點擊劫持攻擊可以輕易化解通過使用戶確認其交易的CSRF保護措施。
舉例來說,如果一個網(wǎng)絡商 店使用Cookie來進行身份驗證,并提供了一鍵購買服務。 IE8顯示一個模擬的web購物站點,下面是其中一張膝上型計算機的圖片:
![]() |
| 圖1 |
![]() |
| 圖2 |
![]() |
| 圖3 |
上面是一個惡意的頁面,顯示的文本表明用戶已經(jīng)購買了一個膝上型計算機。 當然,這里只是一個非常簡單的點擊劫持攻擊,但是比這復雜的點擊劫持攻擊也是存在的。
為了緩解點擊劫持之痛,人們提出了許多方法,但是它們必須在兼容性和用戶體驗目前做一些折中,或者需要對現(xiàn)有標準作重大修 改。目前,使用最廣泛也是最簡單的抵御點擊劫持攻擊的方案稱為frame busting技術(shù),它能防止有弱點的頁面被框架化,例如防 止頁面被iframe引用。遺憾的是,frame-busting機制通常需要用到腳本,但是我們知道繞過腳本不是不可能的。
三、X-FRAME-OPTIONS如何抗擊點擊綁架
點擊綁架漏洞是由Jeremiah Grossman及Robert Hansen在去年9月首度揭露,該漏洞可讓駭客仿造合法網(wǎng)頁,并將偽造的透明網(wǎng)頁 覆蓋于合法網(wǎng)頁之上,因此使用者以為是在合法網(wǎng)頁上的鼠標點擊,實際上是觸發(fā)了惡意網(wǎng)頁的指令。
如果攻擊者偽造的是網(wǎng)絡銀 行網(wǎng)頁,那么使用者也許只是按了某一個網(wǎng)頁鏈接,卻可能是將錢轉(zhuǎn)到陌生的帳戶中,黑客也可通過此漏洞讓使用者下載惡意程序 或是執(zhí)行任何功能。 IE8引入了一種防止頁面被框架化的機制來降低點擊劫持所帶來的危害。
Web開發(fā)人員可以為返回的HTML頁面添加一個名為的HTTP應 答頭,以規(guī)定該頁面是否可以被嵌入在iframe里面。如果X-FRAME-OPTIONS的值為DENY,那么IE8就不允許該頁面包含在一個框架中 。如果其值為SAMEORIGIN,那么只有在頂級瀏覽內(nèi)容與包含X-FRAME-OPTIONS的內(nèi)容不同源時,IE才會阻止該頁面。
舉例來說,如果http://shop.example.com/confirm.asp包含一個DENY偽指令,那么該頁面就無法放入一個子框架中,無論父框架位于何處。相 反,如果X-FRAME-OPTIONS偽指令的值為SAMEORIGIN,那么該頁面就可以放入到任何來自http://shop.example.com的頁面的框架中。
當X-FRAME-OPTIONS阻止顯示某頁面時,瀏覽器會彈出一個本地錯誤頁面,說明有關限制,并提供一個鏈接,該鏈接將在一個新的 窗口中打開框架。當在一個新的窗口中顯示,而非在子框架中顯示的話,那么頁面內(nèi)容也就無法為點擊劫持所用了。
![]() |
| 圖4 |
上面是一個惡意的頁面,然而,這時候僅僅展示了貓圖片,來自實際的webshop的訂單按鈕卻沒有顯示出來。其中的錯誤信息指示 ,內(nèi)容無法在框架中顯示。
通過使用X-FRAME-OPTIONS偽指令,Web開發(fā)人員可以立即幫助IE8用戶減輕來自各種Web 應用程序攻擊的威脅。當然,我們希望其 它瀏覽器也能實現(xiàn)這種X-FRAME-OPTIONS偽指令,因為作為一種防御點擊劫持的手段,它相對易于部署,并且兼容性也很好。
四、Web安全任重而道遠
雖然微軟宣稱修補了點擊劫持漏洞,但這不是立竿見影的方法,因為它要求網(wǎng)站及Web開發(fā)人員的配合,而不是直接保護web用戶的 安全。此外,要想讓所有網(wǎng)站都采用微軟的機制,可能還要有很長的路要走。還有,微軟提供的解決方案是非跨平臺的,也就是說 ,只對IE8有效。目前出爐的另一個解決方案為針對Mozilla Firefox設計的NoScript外掛程序,該程序可關閉腳本功能并阻擋利用 框架的攻擊。
【51CTO.COM 獨家特稿,轉(zhuǎn)載請注明出處及作者!】
【編輯推薦】
























