陳欣華
[摘 ? ?要] 瀏覽器安全機(jī)制是瀏覽器抵御網(wǎng)絡(luò)攻擊,保護(hù)用戶信息安全的重要內(nèi)容,對瀏覽器安全機(jī)制的研究具有重要的現(xiàn)實意義和實用價值。文中主要描述了瀏覽器安全的基本概念和遵循原則,概述了瀏覽器主要安全機(jī)制的內(nèi)容和基本原理,通過分析注入攻擊和沙箱逃逸兩種攻擊方式介紹了瀏覽器安全機(jī)制存在的缺陷。
[關(guān)鍵詞] 瀏覽器;安全機(jī)制;同源策略;沙箱;安全機(jī)制缺陷
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2020. 19. 076
[中圖分類號] TP309 ? ?[文獻(xiàn)標(biāo)識碼] ?A ? ? ?[文章編號] ?1673 - 0194(2020)19- 0186- 02
0 ? ? ?引 ? ?言
隨著信息技術(shù)的不斷發(fā)展,瀏覽器成為人們獲取信息不可或缺的重要方式,同樣也使得瀏覽器成為網(wǎng)絡(luò)攻擊的重要目標(biāo)。近些年頻繁暴露的隱私信息泄露事件也使得瀏覽器安全越來越受到人們的關(guān)注。瀏覽器安全機(jī)制是瀏覽器抵御網(wǎng)絡(luò)攻擊、保護(hù)用戶信息安全的重要內(nèi)容。隨著人們不斷提高的信息安全需求,瀏覽器安全機(jī)制也在應(yīng)對層出不窮的攻擊方式的同時不斷更新迭代。因此,對瀏覽器安全機(jī)制的研究,具有重要的現(xiàn)實意義和實用價值。
1 ? ? ?瀏覽器安全
瀏覽器安全是指在向用戶提供完整瀏覽器功能的前提下,對用戶信息安全進(jìn)行防護(hù),包括針對瀏覽器漏洞進(jìn)行升級或提供補(bǔ)丁、攔截越權(quán)信息竊取、識別偽造的釣魚網(wǎng)站等。根據(jù)信息安全標(biāo)準(zhǔn),可以從機(jī)密性、完整性和可用性三個角度來描述瀏覽器安全遵循的安全原則:
(1)機(jī)密性:瀏覽器安全需要保證用戶信息的機(jī)密性,即對攻擊者通過惡意代碼、越權(quán)訪問等手段非法獲取用戶信息的攻擊行為進(jìn)行檢測和攔截。
(2)完整性:瀏覽器安全需要保證用戶信息的完整性,即對攻擊者在未經(jīng)授權(quán)的情況下惡意篡改或刪除用戶信息的攻擊行為進(jìn)行檢測和攔截。
(3)可用性:瀏覽器安全需要保證瀏覽器對于用戶的可用性,即在瀏覽器或網(wǎng)頁服務(wù)器受到攻擊時,保證用戶能夠使用瀏覽器正常地瀏覽網(wǎng)頁和請求服務(wù)。
2 ? ? ?瀏覽器主要安全機(jī)制
瀏覽器主要的安全機(jī)制包括同源策略、瀏覽器沙箱、內(nèi)容安全策略、Cookie機(jī)制等,下面分別對上述安全機(jī)制進(jìn)行介紹。
2.1 ? 同源策略
同源策略(Same-origin Policy, SOP)[1]是指頁面之間互相訪問時,禁止來自不同源的腳本讀取或修改當(dāng)前頁面的某些屬性,防止惡意的頁面行為。需要注意的是,同源策略允許加載不同源的資源,并讀取資源的高度、寬度等元屬性,但是禁止腳本讀取或修改返回的內(nèi)容。同源策略是一種約定,是瀏覽器最基本的安全機(jī)制,所有瀏覽器均默認(rèn)支持同源策略。
瀏覽器中頁面的源通過<協(xié)議、主機(jī)、端口>的元組來定義。表1給出了與http://example.com/d1/a.html的源進(jìn)行對比的示例。
2.2 ? 瀏覽器沙箱
沙箱(Sandbox)[2]是一種隔離運(yùn)行程序的安全機(jī)制,也可稱為資源隔離模塊。瀏覽器通過將不可信程序以有限權(quán)限運(yùn)行在沙箱環(huán)境中,基于嚴(yán)格的訪問控制策略限制不可信程序訪問系統(tǒng)資源,從而阻止不可信程序的惡意行為。沙箱機(jī)制的基礎(chǔ)是瀏覽器的多進(jìn)程架構(gòu),每一個頁面對應(yīng)一個沙箱,頁面崩潰時只會崩潰當(dāng)前頁面,不會影響其他頁面,從而提高了瀏覽器的安全性和用戶體驗。
Google Chrome最早基于多進(jìn)程架構(gòu)實現(xiàn)沙箱機(jī)制,其主要進(jìn)程包括高權(quán)限瀏覽器內(nèi)核進(jìn)程、低權(quán)限渲染引擎進(jìn)程、插件進(jìn)程、擴(kuò)展進(jìn)程,其沙箱架構(gòu)如圖1所示。網(wǎng)頁代碼在渲染引擎進(jìn)程中執(zhí)行,并通過沙箱進(jìn)行隔離。網(wǎng)頁代碼與瀏覽器內(nèi)核進(jìn)程以及操作系統(tǒng)的通信必須通過進(jìn)程間通信(IPC)通道,并執(zhí)行嚴(yán)格的安全檢查。其他的沙箱機(jī)制包括IE增強(qiáng)安全模式、FireFox 插件沙箱等。
2.3 ? 內(nèi)容安全策略
內(nèi)容安全策略(Content Security Policy, CSP)[3]是一種以白名單的方式限制網(wǎng)頁資源加載和執(zhí)行的機(jī)制,最早由火狐瀏覽器引入,目前在主流的瀏覽器中均支持該機(jī)制。CSP在HTTP響應(yīng)頭部(X-Content-Security-Policy)或者頁面中的meta元素定義頁面信任的域和可以加載的資源。特別地,CSP默認(rèn)禁止Eval及相關(guān)函數(shù),以及內(nèi)嵌的JavaScript代碼。
2.4 ? 其他安全機(jī)制
瀏覽器中其他的安全機(jī)制包括Cookie 機(jī)制、XSS過濾器、惡意網(wǎng)站攔截等:Cookie 機(jī)制通過消息摘要、數(shù)字簽名和加密等技術(shù)來保證瀏覽器中保存的用戶Cookie的安全性;XSS過濾器通過過濾用戶輸入,防止惡意的注入攻擊,包括IE的XSS Filter和Chrome的XSSAuditor等;惡意網(wǎng)站攔截通過黑名單的方式攔截惡意網(wǎng)址,包括“掛馬”網(wǎng)站和“釣魚”網(wǎng)站等。
3 ? ? ?瀏覽器安全機(jī)制缺陷
盡管瀏覽器采用了多種安全機(jī)制,然而安全是相對的,這些安全機(jī)制仍然存在一定的缺陷。下面對注入攻擊和沙箱逃逸這兩種爆發(fā)頻率和威脅度較高的缺陷進(jìn)行分析。
3.1 ? 注入攻擊
注入攻擊是指基于用戶非法輸入的攻擊方式,主要包括跨站腳本攻擊(Cross Site Scripting, XSS)[4]和SQL注入(SQL Injection)[5]:SQL注入是指攻擊者在用戶輸入中包含非法SQL代碼,試圖操作服務(wù)端數(shù)據(jù)的攻擊方式,其攻擊目標(biāo)是服務(wù)端;跨站腳本攻擊是指攻擊者在Web頁面中插入惡意腳本,試圖獲取用戶敏感信息(如Cookie)的攻擊方式,其攻擊目標(biāo)是客戶端。
注入攻擊需要Web服務(wù)端和瀏覽器客戶端對用戶輸入進(jìn)行嚴(yán)格的檢測和限制,然而在實際應(yīng)用中總是存在安全限制不夠完整的Web服務(wù)和瀏覽器,可被攻擊者利用。例如,Dolière 等人[3]對 10 000 個頂級 Alexa 站點的 100 萬個頁面進(jìn)行分析,發(fā)現(xiàn)由于同源策略限制不完整,至少 31.1%的嵌入同源 iframe并啟用 CSP 的頁面存在安全風(fēng)險。Zheng等人[6]對Cookie注入攻擊進(jìn)行了分析,總結(jié)出Cookie注入漏洞的主要原因是SOP沒有完整的域隔離。
3.2 ? 沙箱逃逸
沙箱逃逸是指攻擊者脫離沙箱的限制,獲取更高的權(quán)限,從而能夠訪問和修改敏感數(shù)據(jù)。沙箱作為瀏覽器的重要安全機(jī)制,目前存在大量基于沙箱漏洞實現(xiàn)沙箱逃逸的研究和攻擊行為。常見的沙箱逃逸包括以下幾種:
(1) 基于策略引擎的沙箱逃逸。大多數(shù)沙箱基于進(jìn)程的類型和資源特性設(shè)置訪問控制策略,然而系統(tǒng)中的大量資源存在各種各樣的特性,當(dāng)訪問控制策略權(quán)限限制不完整或者存在沖突時,可能導(dǎo)致攻擊者繞過策略限制完成沙箱逃逸,例如,漏洞 CVE-2014-0257即利用Elevation Polices權(quán)限設(shè)置過高使得不可信進(jìn)程可創(chuàng)建高權(quán)限進(jìn)程來實現(xiàn)沙箱逃逸,漏洞 CVE-2016-1692即利用Chrome 瀏覽器Blink中非法類型CSS 樣式表的策略沖突來實現(xiàn)沙箱逃逸。
(2) 基于共享資源的沙箱逃逸。當(dāng)沙箱內(nèi)存在不同級別進(jìn)程均可訪問的共享資源時,不可信程序與可信程序可訪問相同的數(shù)據(jù),導(dǎo)致不可信程序可能訪問用戶的敏感信息或者操縱可信程序。例如,Brain 等人[7]利用文件存儲對話框和剪貼板等方式獲取高權(quán)限進(jìn)程即將調(diào)用的對象信息,通過在該對象中附加惡意代碼達(dá)到控制高權(quán)限進(jìn)程的目標(biāo),實現(xiàn)IE11 增強(qiáng)安全模式的沙箱逃逸。
(3)基于提權(quán)漏洞的沙箱逃逸?;谔釞?quán)漏洞的沙箱逃逸是指不可信進(jìn)程利用沙箱所在運(yùn)行時環(huán)境的系統(tǒng)內(nèi)核漏洞,獲取更高權(quán)限,從而實現(xiàn)沙箱逃逸。例如,Yason[8]分析指出了IE 10 增強(qiáng)保護(hù)模式可通過文件系統(tǒng)、注冊表訪問等實現(xiàn)基于提權(quán)漏洞的沙箱逃逸。
(4)基于編碼缺陷的沙箱逃逸。當(dāng)沙箱的安全策略實現(xiàn)在開發(fā)過程中存在編碼錯誤或缺失時,可導(dǎo)致攻擊者利用該編碼缺陷執(zhí)行惡意代碼或繞過策略檢查,實現(xiàn)沙箱逃逸。例如,漏洞CVE-2013-2839即利用Chrome在C++對象類型轉(zhuǎn)換時類型檢查不完整的缺陷實現(xiàn)對敏感對象的訪問。
4 ? ? ?總 ? ?結(jié)
瀏覽器安全機(jī)制是保護(hù)瀏覽器用戶信息安全的重要內(nèi)容。文章對瀏覽器安全機(jī)制進(jìn)行了分析,首先描述了瀏覽器安全的基本概念和遵循原則,接著概述了當(dāng)前瀏覽器主要安全機(jī)制的內(nèi)容和基本原理,包括同源策略、瀏覽器沙箱和內(nèi)容安全策略等,最后通過分析注入攻擊和沙箱逃逸這兩種最常見和危害最高的攻擊方式,介紹了瀏覽器安全機(jī)制在權(quán)限限制、策略實現(xiàn)等方面存在的安全缺陷。
主要參考文獻(xiàn)
[1]Saiedian H, Broyle D. Security Vulnerabilities in the Same-Origin Policy: Implications and Alternatives[J]. Computer, 2011.
[2]Schreuders Z C, Mcgill T, Payne C. The State of the Art of Application Restrictions and Sandboxes: A Survey of Application-Oriented Access Controls and Their Shortfalls[J]. Computers & Security, 2013.
[3]Some D F, Bielova N, Rezk T. On the Content Security Policy Violations due to the Same-Origin Policy[J]. Cryptography and Security, 2017.
[4]Shalini S, Usha S. Prevention Of Cross-Site Scripting Attacks XSS on Web Applications in the Client Side[J]. International Journal of Computer Science Issues,2011.
[5]William G J H, Jeremy V, Alessandro O. A Classification of SQL Injection Attacks and Countermeasures[C]. International Symposium on Secure Software Engineering, 2006.
[6]Zheng X, Jiang J, Liang J, et al. Cookies lack integrity: real-world implications[C]. Usenix Security Symposium, 2015.
[7]Brain G. Thinking out of the Sandbox Violating Trust Boundaries in Uncommon Ways[C]. Black Hat USA, 2017.
[8]Yason M. Diving into IE 10 Enhanced Protected Mode Sandbox[C]. Black Hat Asia,2014.