瞭解網站的九大敵人 謹防web漏洞威脅

點評:過去,網站的內容大多是靜態的。隨著HTML5的流行,Web應用進入一個嶄新階段,內容的動態化和實時共享讓阻攔不良內容或惡意軟件變得更加復雜,公司和個人的重要信息也被暴於極為危險的網絡環境之下,對於網站安全建設來說,無異於在傷口上撒上瞭一把鹽。

過去,網站的內容大多是靜態的。隨著HTML5的流行,Web應用進入一個嶄新階段,內容的動態化和實時共享讓阻攔不良內容或惡意軟件變得更加復雜,公司和個人的重要信息也被暴於極為危險的網絡環境之下,對於網站安全建設來說,無異於在傷口上撒上瞭一把鹽。

天融信曾在年初發表過一篇《網站安全建設指南》,裡面分析瞭網站安全建設的思路和註意事項。面對越來越多的Web應用,網站安全建設仍然面臨著種種困難。據 Gartner 調查,信息安全攻擊有 75% 都是發生在 Web 應用層而非網絡層上。同時,2/3的Web站點都相當脆弱,易受攻擊。可以說,絕大多數企業將大量的投資花費在網絡和服務器的安全上,沒有從真正意義上保證 Web 業務本身的安全,才給瞭黑客可乘之機,讓網站安全飽受威脅。根據天融信阿爾法實驗室的分析,Web頁面註入漏洞和跨站腳本漏洞等威脅,已經成為未來安全建設的最大挑戰。

目前,基於Web的應用已經成為一道通往互聯網的必經之門,其中瀏覽器好比一個盛滿互聯網五光十色的博大容器,當用戶在打開探秘互聯網的大門,在這個容器中享受饕餮大餐時,是否已經意識到自己已經身處危險之中?隨著支持HTML5瀏覽器的不斷增多,以Chrome、IE、Firefox、Safari、Opera為代表的現代瀏覽器讓網站安全建設不斷接受著安全挑戰。下面,我們就來分析一下那些基於Web應用威脅網站安全的罪魁禍首,並借此希望在天融信《網站安全建設指南》的基礎上,更全面的思索網站安全建設的思路。

網站敵人之一:URL地址欄欺騙

用戶每天通過點擊URL地址瀏覽互聯網上百上千頁面。瀏覽一個頁面,其實就是簡單的兩個步驟:

1 鼠標移動到頁面上想要去的URL地址鏈接,此時狀態欄會顯示URL鏈接的地址;

2 點擊URL鏈接,瀏覽器頁面會導航到你想去的頁面,並且在地址欄中顯示這個鏈接。

這個被用戶看似最簡單最普通的瀏覽頁面的兩個步驟,用戶是否思考過以下四個問題:

(1)狀態欄中顯示的URL地址,是目標URL地址嗎?

(2)地址欄中顯示的URL地址,是目標URL地址嗎?

(3)地址欄中顯示的URL地址和導航後的頁面對應嗎?

(4)拖動URL地址到地址欄,會導航到目標URL地址嗎?

我們帶著這些問題往下看。從你點擊到成功加載頁面,就是短短的1秒鐘時間,這1秒就足夠進行URL地址欄欺騙瞭。

URL地址欄欺騙,可以分兩類,一個是點擊URL地址,一個是拖放URL地址。現代瀏覽器都可以使用onclick事件以及鼠標事件onmouseup,onmousedown來實現點擊欺騙。其次,各個瀏覽器對URL編碼解析的差異,也會導致欺騙的發生。另一方面,拖拽一個地址到地址欄的時候,我們可以使用拖放函數ondragstart和event.dataTransfer.setData方法,把拖放的地址內容替換掉,這樣也就完成瞭欺騙。

網站敵人之二:URL狀態欄欺騙

現代瀏覽器狀態欄的設計方式,和以前比較起來有很大的變化。以前的狀態欄是以一個瀏覽器獨立模塊固定在瀏覽器最下端的。而現代瀏覽器狀態欄的設計方式則不同。

這種狀態欄設計最明顯的變化是,當你把鼠標放在鏈接上時,狀態欄才會出現,鼠標離開時,狀態欄將會消失。這樣的呈現方式邏輯上會存在一個問題,最左下角的這塊區域,既是狀態欄顯示區域又是頁面顯示區域。視覺上給我們的呈現效果就是狀態欄在頁面區域的左下角顯示。因此我們就可以使用腳本模擬狀態欄,進而實施狀態欄欺騙。

那麼現代瀏覽器狀態欄這種有陰影有圓角的外形,從技術角度看是否能夠用腳本實現?答案是肯定的。在CSS3中增加瞭圓角(box-shadow)和陰影(border-radius)的方法實現。未來如果出現類似於模塊區域越界到頁面的情況,我們同樣可以使用腳本進行偽造欺騙。關於這種攻擊方式,天融信公司通過與微軟、谷歌、火狐的討論,一致認為這確實是一個問題,但並不至於造成更大的安全風險,所以也暫時不想更改這種瀏覽器狀態欄的處理方式。雖然瀏覽器廠商都沒有明確表示這是一個漏洞,但Bugtraq還是收錄瞭天融信阿爾法實驗室發現的三個漏洞。

漏洞的信息如下:

Microsoft Internet Explorer CSS Handling Status Bar Spoofing Vulnerability

Bugtraq ID: 47547

Google Chrome CSS Handling Status Bar Spoofing Vulnerability

Bugtraq ID: 47548

Mozilla Firefox CSS Handling Status Bar Spoofing Vulnerability

Bugtraq ID: 47549

網站敵人之三:頁面標簽欺騙

瀏覽器從單頁面,變成多頁多窗口顯示可以說是設計理念上的飛躍。現代瀏覽器都已經支持多窗口這種模式,而且在每一個窗口頂端都會有一個頁面標簽。當打開多個頁面窗口時,頁面標簽上的logo和標題可以指引我們想要去的網站。

這種頁面標簽的指引方式,使得標簽欺騙成為可能。這種欺騙方式最早是由國外安全人員提出,他們把這種欺騙稱之為Tabnabbing。

現在來簡單介紹一下,頁面標簽欺騙原理:

(1)用戶打開很多網站頁面窗口瀏覽器網站,這其中就包括攻擊者制作的一個惡意攻擊頁面。

(2)當這個攻擊頁面檢測用戶不在瀏覽這個頁面,也就是說長時間內失去瞭焦點。

(3)攻擊頁面自動篡改標簽的logo,頁面標題,和頁面本身。比如全都改成Gmail的。

(4)當用戶瀏覽瞭一圈,由於視覺欺騙,發現有Gmail的logo。而且通過上面的介紹我們知道,多頁面多窗口的特點使得用戶要尋找頁面隻能通過標簽上的logo和標題去分辨。

(5)用戶欣然的點開標簽為Gmail的這個頁面,進去後除瞭URL地址不是Gmail外,其他所有都是Gmail的內容。視覺上的盲區,再次使得用戶可能忽略地址欄中的URL,下意識的認為這是一個正常的Gmail登錄頁面。進而進行登錄操作,這樣賬戶密碼就被盜瞭,登錄成功後再轉向到真的Gmail頁面。

以上五點就是頁面標簽欺騙的整個過程。現在Chrome、Firefox瀏覽器都會受到這種攻擊的影響。

網站敵人之四:頁面解析欺騙

這裡所說的頁面解析欺騙,主要是由於瀏覽器處理多個函數競爭發生邏輯上的錯誤。導致瀏覽器URL地址欄已經導航到一個URL地址,但實際頁面卻沒有加載響應的頁面。

通常情況下,導致這種頁面欺騙是由於導航函數和對話框函數或寫頁面函數之間的阻塞。例如window.open()和alert(),window.open()和document.write()。例如這個漏洞可以導致,當URL導航到google.com的時候,頁面卻被改寫瞭。

天融信阿爾法實驗室通過研究發現,國內的QQ瀏覽器和搜狗瀏覽器曾存在這樣的漏洞,現在這個漏洞已經得到瞭修復。

這種攻擊方式,可以實現域上面的欺騙,發動釣魚攻擊。當傳統的釣魚方式更容易被用戶識別的時候,這種利用瀏覽器漏洞進行的釣魚可能會成為一種趨勢。

網站敵人之五:擴展插件攻擊

現在的瀏覽器不像早期是鐵板一塊,基本都可以進行擴展和定制。除瞭Adobe flash,Java等這些主流插件外,各個瀏覽器都在擴充自己的插件平臺。通過擴展,可以輔助閱讀,有翻譯文字,過濾廣告,調試頁面,標簽管理,批量下載,主題更換等等,形形色色,包羅萬象。那麼這麼多插件擴展,用戶是否知道自己的瀏覽器中裝瞭哪些插件呢?對於企業來說,是否有部署檢測員工瀏覽器插件更新呢?據國外有關統計,在瀏覽器上發生的安全風險中,80%來自於插件擴展。

關於插件上面的安全問題,可以分為兩方面來說。其一,本身這個瀏覽器插件就是惡意插件,就是攻擊者為瞭攻擊用戶制作的一個惡意插件,這種插件作為瀏覽器的擴展部分可以通過js腳本訪問DOM操作,這就有可能獲取用戶的信息,比如歷史記錄,密碼等。其二,就是瀏覽器插件本身就正常插件。但這種插件自身出現瞭漏洞問題,比如在Adobe Acrobat Reader Plugin <= 7.0.x中,出現XSS問題http://[host]/[filename].pdf#[some text]=javascript:[code]。另外就是這個是正常插件,而且也沒有漏洞問題,但它加載的程序卻有漏洞問題,比如Flashback,60W Mac僵屍,本身java插件沒有問題,但利用java插件加載的惡意java程序,可以利用java的一個漏洞獲取系統權限。

關於插件方面的防禦,天融信認為可以從兩方面來考慮。一個是用戶方面,不要安裝任何未知的插件,並且卸載掉瀏覽器中已經安裝的未知插件。對於已經插件,時常的檢測更新,這裡推薦兩種檢測更新的方式,一個是火狐官方提供的在線檢查插件,適合任何瀏覽器,另一個是Qualys Inc.(科力斯)公司提供的在線檢查插件服務。這兩個檢測方式都可以列舉出來你瀏覽器的插件情況。另一方面就是瀏覽器廠商方面,當插件安裝時應該有提示,說明這個插件都有哪些權限;另一點就是制定更加嚴格的插件審核機制,防止惡意插件獲取用戶隱私。當然瀏覽器的沙箱機制,能夠很好的解決這些問題。

隨著HTML5的發展,很多插件將會漸漸退出歷史舞臺,比如:IOS、WindowsPhone一開始就不支持Flash。去年Adobe放棄移動平臺上Flash開發,全面轉向HTML5開發。瀏覽器大戰,也是插件大戰,瀏覽器廠商的目標都想把瀏覽器向平臺轉化,第一步就是要先插件擴展做成平臺模式。但現在瀏覽器都是插件擴展各自為戰,而且很多插件間都會出現不兼容的問題,統一的插件平臺什麼時候才能到來呢?這一切隻有等待HTML5去解決瞭。

網站敵人之六:本地存儲攻擊

HTML5提供瞭一種新的本地存儲方式,這種存儲方式是什麼樣的呢?我們來看一看,現在各大瀏覽器都已經支持瞭這種存儲方式接口。這種存儲方式使用HTML5提供的新函數localStorage()進行存儲數據,存儲的默認大小是5M,經過我的測試發現除瞭Opera使用base64加密外,Chrome,IE,Firefox,Safari瀏覽器都是明文存儲。其實base64非常容易解密,所以可以認為現代的瀏覽器對於這種方式基本都是明文存儲。根據HTML5存儲方式的這新特性,我們應該註意哪方面的安全呢?天融信阿爾法實驗室認為應該從六方面註意:

(1)不可替代Cookie

瀏覽器支持瞭使用HTTPONLY來保護Cookie不被XSS攻擊獲取到。而localStorage存儲沒有對XSS攻擊有任何的抵禦機制。一旦出現XSS漏洞,那麼存儲在localStorage裡的數據就極易被獲取到。

(2)不要存儲敏感信息

上面已經提到,基本都是明文存儲。

(3)嚴格過濾輸入輸出

在某些情況下,在通過在localStorage存儲中寫入或讀取數據的時候,如果數據沒有經過輸入輸出嚴格過濾,那麼極易可能這些數據被作為HTML代碼進行解析,從而產生XSS攻擊。

(4)容易遭到跨目錄攻擊。沒有路徑概念,容易遭到跨目錄攻擊。

(5)容易遭到DNS欺騙攻擊。

(6)惡意代碼棲息的溫床。因為存儲空間大瞭,惡意代碼有可能使用這種方式存儲。

網站敵人之七:繞過瀏覽器安全策略

現代瀏覽器有很多安全策略來防止惡意攻擊。每每瀏覽器出來新的安全策略,攻擊者就會想著法的去突破它繞過它。瀏覽器安全策略很多,在這裡挑選幾個典型的瀏覽器安全策略,看看這些安全策略是如何被繞過的。這其中包括繞過XSS過濾器,繞過同源策略,繞過Httponly,繞過點擊劫持防禦,繞過沙箱。

(1) 繞過XSS過濾器

雖然XSS攻擊越來越多,IE8+,Chrome4+,Safari5+,FF(noscript)都在瀏覽器中嵌入瞭XSS過濾器。這樣在攻擊者進行XSS攻擊的時候,瀏覽器可以自動把XSS代碼過濾掉。這樣就減少瞭一些安全風險。

繞過XSS過濾器,主要方式是通過代碼變形,比如

雙參數:p1=<script>prompt(1);/*&p2=*/</script>

註釋:<script>/*///*/alert(1);</script>

自動閉合: <img src="noexist" onerror=alert();//

UTF-7: +ADw-script+AD4

data URIs: data:[mediatype][;base64],data

更多的方法可以參看ha.ckers.org/xss.html,html5sec.org

(2)繞過同源策略

同源指的是同主機,同協議,同端口。簡單地說就是要求動態內容(例如,JavaScript或者VBScript)隻能閱讀與之同源的那些HTTP應答和cookies,而不能閱讀來自不同源的內容。繞過同源策略,有的是在授權模式下繞過,有的就是屬於非法繞過。

通常情況以下幾種方式可以進行跨域操作,1在Flash&Silverlight中crossdomain.xml寫入允許跨域的網站。2 HTML5中的Postmessage,CORS兩種方法,提供瞭兩種新的跨域操作。3 DragAndDropJacking,拖放操作是不受同源策略限制的。4另外由於瀏覽器自身特性缺陷導致跨域,比如一些擴展插件接口權限粒度過大等等都可能導致跨域操作。

(3)繞過Httponly。

Httponly是瀏覽器為瞭保護cookie在XSS攻擊不被js腳本獲取的一種方法。這裡介紹Apache httpOnly Cookie Disclosure從而繞過Httponly包含的一種方法。在Apache中如果cookie的內容大於4K,那麼頁面就會返回400錯誤。返回的數據就會包含cookie內容。攻擊的方法是找到一處XSS漏洞,設置大於4K的cookie。apache報錯後,從中篩選出cookie數據發送到攻擊者服務器上。這樣我們就成功的繞過瞭httponly的保護。

(4)繞過X-Frame-Options

自從Clickjacking這種攻擊技術2008年出現後,從其技術發展階段上分析,可以分為點擊劫持(Clickjacking)、拖放劫持(Drag&Drop jacking)和觸摸劫持(Tabjacking)三個階段。這三種劫持手段已經構成瞭瀏覽器前端劫持體系。主要的技術實現手段是隱藏層+Frame包含。為瞭防禦這種攻擊,瀏覽器加入瞭X-Frame-Options頭部,用來判斷頁面是否可以被Frame包含。如果我們脫離瞭Frame這種方法,而且還能實現點擊劫持的這種攻擊效果,就算是我們繞過瞭X-Frame-Options這種防禦方式。這種方法還是有的,我們構造多個頁面,使用history.forward(),history.back()使頁面在設計好的模式下迅速的切換進而劫持用戶的點擊。詳細的過程可以參看,http://lcamtuf.coredump.cx/clickit/。此攻擊方式設計復雜,且需高交互。

(5)繞過沙箱

瀏覽器沙箱技術是有效保護用戶不被木馬病毒侵犯的一種方法。雖然在過去三年的Pwn2Own大會上,Chrome是唯一 一個沒有被攻破的瀏覽器,但Chrome沙箱並不是不可以突破。在Pwn2Own 2012 黑客花費瞭6個不同類型的bug,成功的突破瞭沙箱。我們假設一個月發現一個bug,6個就是半年,然後再試著突破沙箱。所以繞過沙箱將越來越難,不然google也不會把獎金提升的越來越高,成功突破沙箱執行代碼可以獲得最高6萬美金的獎勵。

網站敵人之八:隱私安全

現在互聯網更加註重個人隱私。現代瀏覽器也考慮到這方面的問題,提供瞭隱身模式,在隱身模式中本地Cookie,搜索記錄,臨時文件等不會被記錄,但書簽被記錄,網站服務器也會記錄用戶的訪問痕跡。現代瀏覽器隨著功能的增多,很多情況都會自動收集一些本地信息上傳到服務器,這些信息就極易可能涉及到個人隱私。包括地理位置,崩潰報告,同步功能,在線翻譯,語音輸入,自動更新,各種插件擴展……。那麼瀏覽器廠商也意識到瞭,這種自動收集信息行為,有可能會讓用戶覺得自己隱私泄漏。所以每個瀏覽器在其官方頁面都有隱私聲明,來告知用戶瀏覽器會自動收集哪些本地信息,這些信息是否會涉及到用戶隱私等等。那麼瀏覽器收集的信息內容一旦超越瞭自身的隱私聲明范圍,就用可能是一種隱私泄漏行為。所以這些隱私聲明對瀏覽器廠商和用戶來說都非常有意義。

網站敵人之九:安全特性差異化

現代瀏覽器從功能上和模式上都沒有一個成型標準,使得各大瀏覽器廠商都根據自己的想法在做瀏覽器。這也使得瀏覽器產生很多差異性。現代瀏覽器主要有以下幾個差異:HTML5支持,雖然現在HTML5標準還沒有正式發佈,但能更多更全的支持HTML5標準,已經成為判斷一個瀏覽器優略的準則。URL編碼差異,更多的編碼解析差異可以看谷歌發佈的瀏覽器安全手冊,從2008年發佈以來,現在還在持續更新著。安全特性支持,對防禦攻擊而加入的安全策略也不盡相同。我們願意相信瀏覽器的這些差異性是良性的,這可以使得各個瀏覽器互相學習模仿彼此的長處和優勢,更好的促進瞭瀏覽器的發展。但這些差異讓網站安全建設策略必須將各個瀏覽器的特點都考慮進來,這無疑加大瞭網站安全建設的難度。

結束語

隨著天融信阿爾法實驗室孜孜不斷的深入研究,網絡安全風險正不斷展現在用戶面前,天融信針對這些發現,也在積極進行著安全防禦,為廣大網絡用戶和企業提供無憂的網絡應用環境,為網站安全建設添磚加瓦。

Leave a Reply

Your email address will not be published. Required fields are marked *